Merge pull request #964 from YunoHost/fix-reversednscheck

[fix] Reverse DNS check
This commit is contained in:
Alexandre Aubin 2020-04-30 03:13:21 +02:00 committed by GitHub
commit ba27c2ad05
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -2,7 +2,6 @@
import os import os
import dns.resolver import dns.resolver
import socket
import re import re
from subprocess import CalledProcessError from subprocess import CalledProcessError
@ -118,15 +117,25 @@ class MailDiagnoser(Diagnoser):
details = ["diagnosis_mail_fcrdns_nok_details", details = ["diagnosis_mail_fcrdns_nok_details",
"diagnosis_mail_fcrdns_nok_alternatives_4"] "diagnosis_mail_fcrdns_nok_alternatives_4"]
try: rev = dns.reversename.from_address(ip)
rdns_domain, _, _ = socket.gethostbyaddr(ip) subdomain = str(rev.split(3)[0])
except socket.herror: query = subdomain
if ipversion == 4:
query += '.in-addr.arpa'
else:
query += '.ip6.arpa'
# Do the DNS Query
status, value = dig(query, 'PTR')
if status == "nok":
yield dict(meta={"test": "mail_fcrdns", "ipversion": ipversion}, yield dict(meta={"test": "mail_fcrdns", "ipversion": ipversion},
data={"ip": ip, "ehlo_domain": self.ehlo_domain}, data={"ip": ip, "ehlo_domain": self.ehlo_domain},
status="ERROR", status="ERROR",
summary="diagnosis_mail_fcrdns_dns_missing", summary="diagnosis_mail_fcrdns_dns_missing",
details=details) details=details)
continue continue
rdns_domain = value[0] if len(value) > 0 else ''
if rdns_domain != self.ehlo_domain: if rdns_domain != self.ehlo_domain:
details = ["diagnosis_mail_fcrdns_different_from_ehlo_domain_details"] + details details = ["diagnosis_mail_fcrdns_different_from_ehlo_domain_details"] + details
yield dict(meta={"test": "mail_fcrdns", "ipversion": ipversion}, yield dict(meta={"test": "mail_fcrdns", "ipversion": ipversion},