Merge pull request #2576 from Spitfireap/dnsblprovider

Mitigate spamhaus dns fail while querying for dnsbl
This commit is contained in:
Antoine Nguyen
2022-10-03 11:18:42 +02:00
committed by GitHub
2 changed files with 19 additions and 1 deletions
@@ -79,6 +79,11 @@ class CheckMXRecords(BaseCommand):
pattern = "{}.{}.".format(reverse, provider)
try:
result = socket.gethostbyname(pattern)
#result from dnsbl is in ipv4 format
splited_result = result.split(".")
if int(splited_result[-1]) > 15:
#Typical dnsbl result : 127.0.0.[1-15] (depends on services)
result = False
except socket.gaierror:
result = False
for mx in mxs:
+14 -1
View File
@@ -217,10 +217,23 @@ class DNSBLTestCase(ModoTestCase):
"""Check notifications."""
mock_query.side_effect = utils.mock_dns_query_result
mock_getaddrinfo.side_effect = utils.mock_ip_query_result
mock_g_gethostbyname.return_value = "1.2.3.4"
mock_g_gethostbyname.return_value = "127.0.0.4"
management.call_command(
"modo", "check_mx", "--email", "user@example.test")
self.assertEqual(len(mail.outbox), 2)
@mock.patch("gevent.socket.gethostbyname")
@mock.patch("socket.getaddrinfo")
@mock.patch.object(dns.resolver.Resolver, "resolve")
def test_notifications_wrong_dnsbl_response(
self, mock_query, mock_getaddrinfo, mock_g_gethostbyname):
"""Check notifications."""
mock_query.side_effect = utils.mock_dns_query_result
mock_getaddrinfo.side_effect = utils.mock_ip_query_result
mock_g_gethostbyname.return_value = "127.255.255.254" #<--Spamhaus response when querying from an open resolver
management.call_command(
"modo", "check_mx", "--email", "user@example.test")
self.assertEqual(len(mail.outbox), 1)
@mock.patch("gevent.socket.gethostbyname")
@mock.patch("socket.getaddrinfo")