Merge authors:
Jim Popovitch (jimpop)
Related merge proposals:
https://code.launchpad.net/~jimpop/mailman/subscriber-dbl-check/+merge/347789
proposed by: Jim Popovitch (jimpop)
------------------------------------------------------------
revno: 1770 [merge]
committer: Mark Sapiro <[email protected]>
branch nick: 2.1
timestamp: Tue 2018-06-12 06:55:49 -0700
message:
Implemented BLOCK_SPAMHAUS_LISTED_DBL_SUBSCRIBE.
modified:
Mailman/Defaults.py.in
Mailman/MailList.py
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/Defaults.py.in'
--- Mailman/Defaults.py.in 2018-06-05 02:19:31 +0000
+++ Mailman/Defaults.py.in 2018-06-11 17:55:03 +0000
@@ -150,6 +150,10 @@
# will be blocked.
BLOCK_SPAMHAUS_LISTED_IP_SUBSCRIBE = No
+# IF the following is set to Yes, and a subscriper uses a domain that is
+# listed in the Spamhaus DBL, the subscription will be blocked.
+BLOCK_SPAMHAUS_LISTED_DBL_SUBSCRIBE = No
+
# Command that is used to convert text/html parts into plain text. This
# should output results to standard output. %(filename)s will contain the
# name of the temporary file that the program should operate on.
=== modified file 'Mailman/MailList.py'
--- Mailman/MailList.py 2018-06-12 02:29:33 +0000
+++ Mailman/MailList.py 2018-06-12 13:55:49 +0000
@@ -915,6 +915,12 @@
syslog('vette', '%s banned subscription: %s%s (Spamhaus IP)',
realname, email, whence)
raise Errors.MembershipIsBanned, 'Spamhaus IP'
+ # See if this is from a spamhaus listed domain.
+ if email and mm_cfg.BLOCK_SPAMHAUS_LISTED_DBL_SUBSCRIBE:
+ if Utils.banned_domain(email):
+ syslog('vette', '%s banned subscription: %s (Spamhaus DBL)',
+ realname, email)
+ raise Errors.MembershipIsBanned, 'Spamhaus DBL'
# Sanity check the digest flag
if digest and not self.digestable:
raise Errors.MMCantDigestError
=== modified file 'Mailman/Utils.py'
--- Mailman/Utils.py 2018-06-11 16:59:26 +0000
+++ Mailman/Utils.py 2018-06-12 13:55:49 +0000
@@ -1535,3 +1535,25 @@
if re.search(r'127\.0\.0\.[2-7]$', text, re.MULTILINE):
return True
return False
+
+def banned_domain(email):
+ if not dns_resolver:
+ return False
+
+ email = email.lower()
+ user, domain = ParseEmail(email)
+
+ lookup = '%s.zen.spamhaus.org' % (domain)
+
+ resolver = dns.resolver.Resolver()
+ try:
+ ans = resolver.query(lookup, dns.rdatatype.A)
+ except DNSException:
+ return False
+ if not ans:
+ return False
+ text = ans.rrset.to_text()
+ if re.search(r'127\.0\.1\.\d{1,3}$', text, re.MULTILINE):
+ if not re.search(r'127\.0\.1\.255$', text, re.MULTILINE):
+ return True
+ return False
=== modified file 'NEWS'
--- NEWS 2018-06-12 02:29:33 +0000
+++ NEWS 2018-06-12 13:55:49 +0000
@@ -44,6 +44,10 @@
that can be added to the admin(un)subscribeack.txt templates. This
has been done for the 'en' templates, but not for most others.
+ - Thanks to Jim Popovitch, there is a new
+ BLOCK_SPAMHAUS_LISTED_DBL_SUBSCRIBE setting to enable blocking web
+ subscribes for addresses in domains listed in the Spamhaus DBL.
+
i18n
- The Japanese translation has been updated by Yasuhito FUTATSUKI.
_______________________________________________
Mailman-checkins mailing list
[email protected]
Unsubscribe:
https://mail.python.org/mailman/options/mailman-checkins/archive%40jab.org