--- /var/MM/2.1/Mailman/Utils.py 2014-05-02 20:26:19.166274000 -0700 +++ /var/MM/21/Mailman/Utils.py 2014-05-29 08:26:17.545491833 -0700 @@ -1070,9 +1070,14 @@ # or possibly quarantine. def IsDMARCProhibited(mlist, email): if not dns_resolver: - return False + # This is a problem; log it. + syslog('error', + 'DNS lookup for dmarc_moderation_action for list %s not available', + mlist) + return False email = email.lower() + syslog('error', 'DMARC email = %s', email) at_sign = email.find('@') if at_sign < 1: return False @@ -1084,6 +1089,7 @@ resolver.lifetime = float(mm_cfg.DMARC_RESOLVER_LIFETIME) txt_recs = resolver.query(dmarc_domain, dns.rdatatype.TXT) except (dns.resolver.NXDOMAIN, dns.resolver.NoAnswer): + syslog('error', 'DMARC DNS non exist domain or no answer') return False except DNSException, e: syslog('error', @@ -1091,6 +1097,8 @@ email, dmarc_domain, e.__class__) return False else: + for x in txt_recs: + syslog('error', 'DMARC DNS got %s', x) # people are already being dumb, don't trust them to provide honest DNS # where the answer section only contains what was asked for, nor to include # CNAMEs before the values they point to.