verified_user

code Python verified Бесплатная загрузка devices Кроссплатформенный

code Предпросмотр кода

Python
#!/usr/bin/env python3
"""
Sender Reputation Checker
Check DNS records and reputation status for email domains
"""
import dns.resolver
import socket

def check_sender_reputation(domain):
    """Check domain reputation and email configuration"""
    report = {
        'domain': domain,
        'ip': None,
        'spf': 'Not configured',
        'dkim': 'Not checked',
        'dmarc': 'Not configured',
        'mx': [],
        'score': 0
    }

    # Get IP address
    try:
        report['ip'] = socket.gethostbyname(domain)
        report['score'] += 10
    except socket.gaierror:
        report['ip'] = 'Unable to resolve'

    # Check MX records
    try:
        mx_records = dns.resolver.resolve(domain, 'MX')
        report['mx'] = [str(r.exchange) for r in mx_records]
        report['score'] += 20
    except:
        report['mx'] = []

    # Check SPF record
    try:
        txt_records = dns.resolver.resolve(domain, 'TXT')
        for record in txt_records:
            if 'v=spf1' in str(record):
                report['spf'] = 'Configured'
                report['score'] += 25
                break
    except:
        pass

    # Check DMARC record
    try:
        dmarc = dns.resolver.resolve(f'_dmarc.{domain}', 'TXT')
        for record in dmarc:
            if 'v=DMARC1' in str(record):
                report['dmarc'] = 'Configured'
                report['score'] += 25
                break
    except:
        pass

    # Check DKIM (common selectors)
    selectors = ['default', 'google', 'selector1', 'selector2']
    for selector in selectors:
        try:
            dkim = dns.resolver.resolve(f'{selector}._domainkey.{domain}', 'TXT')
            report['dkim'] = f'Found ({selector})'
            report['score'] += 20
            break
        except:
            continue

    return report

def get_reputation_grade(score):
    """Convert score to letter grade"""
    if score >= 90:
        return 'A', 'Excellent'
    elif score >= 70:
        return 'B', 'Good'
    elif score >= 50:
        return 'C', 'Fair'
    elif score >= 30:
        return 'D', 'Poor'
    else:
        return 'F', 'Critical'

if __name__ == '__main__':
    import sys
    domain = sys.argv[1] if len(sys.argv) > 1 else 'example.com'
    report = check_sender_reputation(domain)
    grade, status = get_reputation_grade(report['score'])
    print(f"Domain: {report['domain']}")
    print(f"Grade: {grade} ({status})")
    print(f"SPF: {report['spf']}")
    print(f"DMARC: {report['dmarc']}")
    print(f"DKIM: {report['dkim']}")

info Об инструменте

Проверка репутации отправителя анализирует конфигурацию email вашего домена и рассчитывает оценку репутации на основе настроек SPF, DKIM, DMARC и DNS.

Выполняемые проверки

  • SPF-запись - Проверяет авторизацию отправителя
  • DKIM - Проверяет наличие ключей подписи
  • DMARC - Проверяет конфигурацию политики
  • MX Records - Подтверждает настройку почтового сервера
  • Разрешение IP - Проверяет здоровье DNS

Оценки репутации

  • A (90+) - Отлично, все системы настроены
  • B (70-89) - Хорошо, возможны небольшие улучшения
  • C (50-69) - Удовлетворительно, отсутствуют некоторые записи
  • D (30-49) - Плохо, серьёзные проблемы
  • F (<30) - Критично, доставляемость под угрозой

Требования

  • Python 3.7+
  • dnspython (pip install dnspython)

Совет: Запустите эту проверку перед началом любой email-кампании для обеспечения максимальной доставляемости.

download Скачать скрипт

Нужна полная автоматизация?

Попробуйте Postigo для автоматизированных email-кампаний с AI-персонализацией

rocket_launch Start Free Trial