------------------------------------------------------------ revno: 1834 fixes bug: https://launchpad.net/bugs/1859011 committer: Mark Sapiro <m...@msapiro.net> branch nick: 2.1 timestamp: Thu 2020-01-16 16:03:34 -0800 message: Fixed SimpleMatch to only return valid addresses. modified: Mailman/Bouncers/SimpleMatch.py Mailman/Bouncers/SimpleWarning.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/Bouncers/SimpleMatch.py' --- Mailman/Bouncers/SimpleMatch.py 2018-06-17 23:47:34 +0000 +++ Mailman/Bouncers/SimpleMatch.py 2020-01-17 00:03:34 +0000 @@ -25,6 +25,9 @@ def _c(pattern): return re.compile(pattern, re.IGNORECASE) +# Pattern to match any valid email address and not much more. +VALID = _c(r'[\x21-\x3d\x3f\x41-\x7e]+@[a-z0-9._]+') + # This is a list of tuples of the form # # (start cre, end cre, address cre) @@ -227,4 +230,4 @@ break if addrs: break - return addrs.keys() + return [x for x in addrs.keys() if VALID.match(x)] === modified file 'Mailman/Bouncers/SimpleWarning.py' --- Mailman/Bouncers/SimpleWarning.py 2018-06-17 23:47:34 +0000 +++ Mailman/Bouncers/SimpleWarning.py 2020-01-17 00:03:34 +0000 @@ -17,9 +17,10 @@ """Recognizes simple heuristically delimited warnings.""" +import email + from Mailman.Bouncers.BouncerAPI import Stop from Mailman.Bouncers.SimpleMatch import _c -from Mailman.Bouncers.SimpleMatch import process as _process @@ -67,8 +68,25 @@ def process(msg): - if _process(msg, patterns): - # It's a recognized warning so stop now - return Stop - else: - return [] + # We used to just import process from SimpleMatch, but with the change in + # SimpleMatch to return only vaild addresses, that doesn't work any more. + # So, we copy most of the process from SimpleMatch here. + addrs = {} + for scre, ecre, acre in patterns: + state = 0 + for line in email.Iterators.body_line_iterator(msg, decode=True): + if state == 0: + if scre.search(line): + state = 1 + if state == 1: + mo = acre.search(line) + if mo: + addr = mo.group('addr') + if addr: + addrs[addr.strip('<>')] = 1 + elif ecre.search(line): + break + if addrs: + # It's a recognized warning so stop now + return Stop + return [] === modified file 'NEWS' --- NEWS 2020-01-10 01:00:40 +0000 +++ NEWS 2020-01-17 00:03:34 +0000 @@ -83,6 +83,9 @@ - A bug causing a UnicodeDecodeError in preparing to send the confirmation request message to a new subscriber has been fixed. (LP: #1851442) + - The SimpleMatch heuristic bounce recognizer has been improved to not + return most invalid email addresses. (LP: #1859011) + 2.1.29 (24-Jul-2018) Bug Fixes
_______________________________________________ Mailman-checkins mailing list Mailman-checkins@python.org Unsubscribe: https://mail.python.org/mailman/options/mailman-checkins/archive%40jab.org