1
0
mirror of https://github.com/mail-in-a-box/mailinabox.git synced 2024-12-25 07:47:05 +00:00

Update dns blacklist checker

This commit is contained in:
github@kiekerjan.isdronken.nl 2021-09-03 20:18:30 +02:00
parent c4fa84b966
commit 36897b35ab

View File

@ -1,6 +1,6 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
# From https://github.com/gsauthof/utility Thanks!
# 2016, Georg Sauthoff <mail@georg.so>, GPLv3+ # 2016, Georg Sauthoff <mail@georg.so>, GPLv3+
import argparse import argparse
@ -189,7 +189,7 @@ def get_addrs(dest, mx=True):
domains = [ dest ] domains = [ dest ]
if mx: if mx:
try: try:
r = dns.resolver.resolve(dest, 'mx') r = dns.resolver.resolve(dest, 'mx', search=True)
domains = [ answer.exchange for answer in r ] domains = [ answer.exchange for answer in r ]
log.debug('destinatin {} has MXs: {}' log.debug('destinatin {} has MXs: {}'
.format(dest, ', '.join([str(d) for d in domains]))) .format(dest, ', '.join([str(d) for d in domains])))
@ -199,7 +199,7 @@ def get_addrs(dest, mx=True):
for domain in domains: for domain in domains:
for t in ['a', 'aaaa']: for t in ['a', 'aaaa']:
try: try:
r = dns.resolver.resolve(domain, t) r = dns.resolver.resolve(domain, t, search=True)
except dns.resolver.NoAnswer: except dns.resolver.NoAnswer:
continue continue
xs = [ ( answer.address, domain ) for answer in r ] xs = [ ( answer.address, domain ) for answer in r ]
@ -216,12 +216,12 @@ def check_dnsbl(addr, bl):
rev = dns.reversename.from_address(addr) rev = dns.reversename.from_address(addr)
domain = str(rev.split(3)[0]) + '.' + bl domain = str(rev.split(3)[0]) + '.' + bl
try: try:
r = dns.resolver.resolve(domain, 'a') r = dns.resolver.resolve(domain, 'a', search=True)
except (dns.resolver.NXDOMAIN, dns.resolver.NoNameservers, dns.resolver.NoAnswer): except (dns.resolver.NXDOMAIN, dns.resolver.NoNameservers, dns.resolver.NoAnswer):
return 0 return 0
address = list(r)[0].address address = list(r)[0].address
try: try:
r = dns.resolver.resolve(domain, 'txt') r = dns.resolver.resolve(domain, 'txt', search=True)
txt = list(r)[0].to_text() txt = list(r)[0].to_text()
except (dns.resolver.NoAnswer, dns.resolver.NXDOMAIN): except (dns.resolver.NoAnswer, dns.resolver.NXDOMAIN):
txt = '' txt = ''
@ -237,7 +237,7 @@ def check_rdns(addrs):
log.debug('Check if there is a reverse DNS record that maps address {} to {}' log.debug('Check if there is a reverse DNS record that maps address {} to {}'
.format(addr, domain)) .format(addr, domain))
try: try:
r = dns.resolver.resolve(dns.reversename.from_address(addr), 'ptr') r = dns.resolver.resolve(dns.reversename.from_address(addr), 'ptr', search=True)
a = list(r)[0] a = list(r)[0]
target = str(a.target).lower() target = str(a.target).lower()
source = str(domain).lower() source = str(domain).lower()
@ -316,7 +316,7 @@ if __name__ == '__main__':
# #
## In[ ]: ## In[ ]:
# #
#r = dns.resolver.resolve(dns.reversename.from_address('89.238.75.224'), 'ptr') #r = dns.resolver.resolve(dns.reversename.from_address('89.238.75.224'), 'ptr', search=True)
#a = list(r)[0] #a = list(r)[0]
#a.target.to_text() #a.target.to_text()
# #
@ -360,7 +360,7 @@ if __name__ == '__main__':
## In[ ]: ## In[ ]:
# #
## as of 2016-11, listed ## as of 2016-11, listed
#r = dns.resolver.resolve('39.227.103.116.zen.spamhaus.org', 'txt') #r = dns.resolver.resolve('39.227.103.116.zen.spamhaus.org', 'txt', search=True)
#answer = list(r)[0] #answer = list(r)[0]
#answer.to_text() #answer.to_text()
# #
@ -388,7 +388,7 @@ if __name__ == '__main__':
# #
## In[ ]: ## In[ ]:
# #
#a = dns.resolver.resolve('georg.so', 'MX') #a = dns.resolver.resolve('georg.so', 'MX', search=True)
# #
# #
## In[ ]: ## In[ ]:
@ -404,7 +404,7 @@ if __name__ == '__main__':
## In[ ]: ## In[ ]:
# #
#[ x.exchange for x in a] #[ x.exchange for x in a]
#dns.resolver.resolve(list(a)[0].exchange, 'a') #dns.resolver.resolve(list(a)[0].exchange, 'a', search=True)
# #
# #
## In[ ]: ## In[ ]:
@ -416,14 +416,14 @@ if __name__ == '__main__':
## In[ ]: ## In[ ]:
# #
## should throw NoAnswer ## should throw NoAnswer
#a = dns.resolver.resolve('escher.lru.li', 'mx') #a = dns.resolver.resolve('escher.lru.li', 'mx', search=True)
##b = list(a) ##b = list(a)
#a #a
# #
# #
## In[ ]: ## In[ ]:
# #
#a = dns.resolver.resolve('georg.so', 'a') #a = dns.resolver.resolve('georg.so', 'a', search=True)
#b = list(a)[0] #b = list(a)[0]
#b.address #b.address
#dns.reversename.from_address(b.address) #dns.reversename.from_address(b.address)
@ -433,7 +433,7 @@ if __name__ == '__main__':
# #
## should throw NXDOMAIN ## should throw NXDOMAIN
#rs = str(r.split(3)[0]) #rs = str(r.split(3)[0])
#dns.resolver.resolve(rs + '.zen.spamhaus.org', 'A' ) #dns.resolver.resolve(rs + '.zen.spamhaus.org', 'A' , search=True)
# #
# #
## In[ ]: ## In[ ]: