------------------------------------------------------------
revno: 1766
fixes bug: https://launchpad.net/bugs/1775233
committer: Mark Sapiro <[email protected]>
branch nick: 2.1
timestamp: Tue 2018-06-05 12:14:08 -0700
message:
Extend BLOCK_SPAMHAUS_LISTED_IP_SUBSCRIBE for IPv6.
Fix string formatting for Python 2.6.
modified:
Mailman/Utils.py
NEWS
--
lp:mailman/2.1
https://code.launchpad.net/~mailman-coders/mailman/2.1
Your team Mailman Checkins is subscribed to branch lp:mailman/2.1.
To unsubscribe from this branch go to
https://code.launchpad.net/~mailman-coders/mailman/2.1/+edit-subscription
=== modified file 'Mailman/Utils.py'
--- Mailman/Utils.py 2018-06-05 02:19:31 +0000
+++ Mailman/Utils.py 2018-06-05 19:14:08 +0000
@@ -79,6 +79,12 @@
except ImportError:
dns_resolver = False
+try:
+ import ipaddress
+ have_ipaddress = True
+except ImportError:
+ have_ipaddress = False
+
EMPTYSTRING = ''
UEMPTYSTRING = u''
CR = '\r'
@@ -1498,13 +1504,21 @@
def banned_ip(ip):
if not dns_resolver:
return False
- parts = ip.split('.')
- if len(parts) != 4:
- return False
- lookup = '{}.{}.{}.{}.zen.spamhaus.org'.format(parts[3],
- parts[2],
- parts[1],
- parts[0])
+ if have_ipaddress:
+ try:
+ uip = unicode(ip, encoding='us-ascii', errors='replace')
+ ptr = ipaddress.ip_address(uip).reverse_pointer
+ except ValueError:
+ return False
+ lookup = '{0}.zen.spamhaus.org'.format('.'.join(ptr.split('.')[:-2]))
+ else:
+ parts = ip.split('.')
+ if len(parts) != 4:
+ return False
+ lookup = '{0}.{1}.{2}.{3}.zen.spamhaus.org'.format(parts[3],
+ parts[2],
+ parts[1],
+ parts[0])
resolver = dns.resolver.Resolver()
try:
ans = resolver.query(lookup, dns.rdatatype.A)
=== modified file 'NEWS'
--- NEWS 2018-06-05 02:19:31 +0000
+++ NEWS 2018-06-05 19:14:08 +0000
@@ -26,7 +26,9 @@
- A new BLOCK_SPAMHAUS_LISTED_IP_SUBSCRIBE setting has been added to
enable blocking web subscribes from IPv4 addresses listed in Spamhaus
- SBL, CSS or XBL.
+ SBL, CSS or XBL. It will work with IPv6 addresses if Python's
+ py2-ipaddress module is installed. The module can be installed via pip
+ if not included in your Python.
i18n
_______________________________________________
Mailman-checkins mailing list
[email protected]
Unsubscribe:
https://mail.python.org/mailman/options/mailman-checkins/archive%40jab.org