bundles/icinga2: add non-listing results to check_spam_blocklist

This commit is contained in:
Franzi 2023-06-21 23:23:16 +02:00
parent 85b95576c4
commit 42e20b122c
Signed by: kunsi
GPG key ID: 12E3D2136B818350

View file

@ -5,29 +5,34 @@ from ipaddress import IPv6Address, ip_address
from subprocess import check_output from subprocess import check_output
from sys import argv, exit from sys import argv, exit
BLOCKLISTS = [ BLOCKLISTS = {
'0spam.fusionzero.com', '0spam.fusionzero.com': set(),
'bl.mailspike.org', 'bl.mailspike.org': set(),
'bl.spamcop.net', 'bl.spamcop.net': set(),
'blackholes.brainerd.net', 'blackholes.brainerd.net': set(),
'dnsbl-1.uceprotect.net', 'dnsbl-1.uceprotect.net': set(),
'l2.spews.dnsbl.sorbs.net', 'l2.spews.dnsbl.sorbs.net': set(),
'list.dsbl.org', 'list.dsbl.org': set(),
'map.spam-rbl.com', 'map.spam-rbl.com': set(),
'multihop.dsbl.org', 'multihop.dsbl.org': set(),
'ns1.unsubscore.com', 'ns1.unsubscore.com': set(),
'opm.blitzed.org', 'opm.blitzed.org': set(),
'psbl.surriel.com', 'psbl.surriel.com': set(),
'rbl.efnet.org', 'rbl.efnet.org': set(),
'rbl.schulte.org', 'rbl.schulte.org': set(),
'spamguard.leadmon.net', 'spamguard.leadmon.net': set(),
'ubl.unsubscore.com', 'ubl.unsubscore.com': set(),
'unconfirmed.dsbl.org', 'unconfirmed.dsbl.org': set(),
'virbl.dnsbl.bit.nl', 'virbl.dnsbl.bit.nl': set(),
'zen.spamhaus.org', 'zen.spamhaus.org': {
] # https://www.spamhaus.org/news/article/807/using-our-public-mirrors-check-your-return-codes-now.
'127.255.255.252', # Typing Error
'127.255.255.254', # public resolver / generic rdns
'127.255.255.255', # rate limited
},
}
def check_list(ip_list, blocklist): def check_list(ip_list, blocklist, warn_ips):
dns_name = '{}.{}'.format( dns_name = '{}.{}'.format(
'.'.join(ip_list), '.'.join(ip_list),
blocklist, blocklist,
@ -50,7 +55,10 @@ def check_list(ip_list, blocklist):
blocklist, blocklist,
item, item,
)) ))
returncode = 2 if item in warn_ips and returncode < 2:
returncode = 1
else:
returncode = 2
except Exception as e: except Exception as e:
if e.returncode == 9: if e.returncode == 9:
# no reply from server # no reply from server
@ -77,8 +85,8 @@ exitcode = 0
with ThreadPoolExecutor(max_workers=len(BLOCKLISTS)) as executor: with ThreadPoolExecutor(max_workers=len(BLOCKLISTS)) as executor:
futures = set() futures = set()
for blocklist in BLOCKLISTS: for blocklist, warn_ips in BLOCKLISTS.items():
futures.add(executor.submit(check_list, ip_list, blocklist)) futures.add(executor.submit(check_list, ip_list, blocklist, warn_ips))
for future in as_completed(futures): for future in as_completed(futures):
msgs, this_exitcode = future.result() msgs, this_exitcode = future.result()