From 18a42658f992d626d10f19bc173f44c18c323202 Mon Sep 17 00:00:00 2001
From: Martin Mares <mj@ucw.cz>
Date: Sun, 12 Mar 2023 16:57:11 +0100
Subject: [PATCH] =?UTF-8?q?Mail:=20Kontrola=20existence=20adres=20zohled?=
 =?UTF-8?q?=C5=88uje=20Null=20MX?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Closes #326.
---
 mo/users.py | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/mo/users.py b/mo/users.py
index cfb40673..7c9f887e 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}>')
-- 
GitLab