mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-18 05:51:26 +02:00
Merge pull request #2576 from Spitfireap/dnsblprovider
Mitigate spamhaus dns fail while querying for dnsbl
This commit is contained in:
@@ -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:
|
||||
|
||||
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user