diff --git a/mo/users.py b/mo/users.py index cfb40673da8c07c4f5d7bf90b1b6a85ef7ef86b4..7c9f887e7846951776983e512c0c41bc09b1866c 100644 --- a/mo/users.py +++ b/mo/users.py @@ -265,7 +265,14 @@ def email_check_domain(domain: str): for record in ['MX', 'A', 'AAAA']: try: - dns.resolver.resolve(domain, record, lifetime=2, search=False) + answer = dns.resolver.resolve(domain, record, lifetime=2, search=False) + if (record == 'MX' + and len(answer.rrset) == 1 + and answer.rrset[0].preference == 0 + and str(answer.rrset[0].exchange) == '.'): + # Null MX (RFC 7505) explicitně říká, že doména nepřijímá poštu + logger.info(f'DNS: Doména <{domain}> má Null NX') + raise mo.CheckError(f'Doména {domain} nepřijímá poštu') except dns.exception.Timeout: # Kontrola je konzervativní, při timeoutu adresu raději schválíme logger.info(f'DNS: Timeout při kontrole domény <{domain}>')