diff options
author | Mark Sapiro <mark@msapiro.net> | 2009-07-31 13:27:06 -0700 |
---|---|---|
committer | Mark Sapiro <mark@msapiro.net> | 2009-07-31 13:27:06 -0700 |
commit | 0f74db6fb0ae5a4fcdfaaf1976d196efc01ab0b0 (patch) | |
tree | 4019790fda8d9b0875f515120c7b5bdf4200e4c8 | |
parent | 1fa8485365659b59c7480ea62ea8d73c9e90fb5b (diff) | |
download | mailman2-0f74db6fb0ae5a4fcdfaaf1976d196efc01ab0b0.tar.gz mailman2-0f74db6fb0ae5a4fcdfaaf1976d196efc01ab0b0.tar.xz mailman2-0f74db6fb0ae5a4fcdfaaf1976d196efc01ab0b0.zip |
Added recognition for more bounces.
-rw-r--r-- | Mailman/Bouncers/AOL.py | 45 | ||||
-rw-r--r-- | Mailman/Bouncers/BouncerAPI.py | 3 | ||||
-rw-r--r-- | Mailman/Bouncers/SimpleMatch.py | 6 | ||||
-rw-r--r-- | NEWS | 4 | ||||
-rw-r--r-- | tests/bounces/aol_01.txt | 19 | ||||
-rw-r--r-- | tests/bounces/simple_37.txt | 36 | ||||
-rw-r--r-- | tests/test_bounces.py | 2 |
7 files changed, 112 insertions, 3 deletions
diff --git a/Mailman/Bouncers/AOL.py b/Mailman/Bouncers/AOL.py new file mode 100644 index 00000000..df8dd8c4 --- /dev/null +++ b/Mailman/Bouncers/AOL.py @@ -0,0 +1,45 @@ +# Copyright (C) 2009 by the Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +# USA. + +"""Recognizes a class of messages from AOL that report only Screen Name.""" + +import re +from email.Utils import parseaddr + +scre = re.compile('mail to the following recipients could not be delivered') + +def process(msg): + if msg.get_content_type() <> 'text/plain': + return + if not parseaddr(msg.get('from', ''))[1].lower().endswith('@aol.com'): + return + addrs = [] + found = False + for line in msg.get_payload(decode=True).splitlines(): + if scre.search(line): + found = True + continue + if found: + local = line.strip() + if local: + if re.search(r'\s', local): + break + if re.search('@', local): + addrs.append(local) + else: + addrs.append('%s@aol.com' % local) + return addrs diff --git a/Mailman/Bouncers/BouncerAPI.py b/Mailman/Bouncers/BouncerAPI.py index e19c53f7..5f83faf1 100644 --- a/Mailman/Bouncers/BouncerAPI.py +++ b/Mailman/Bouncers/BouncerAPI.py @@ -1,4 +1,4 @@ -# Copyright (C) 1998-2006 by the Free Software Foundation, Inc. +# Copyright (C) 1998-2009 by the Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -53,6 +53,7 @@ BOUNCE_PIPELINE = [ 'SimpleWarning', 'Yale', 'LLNL', + 'AOL', ] diff --git a/Mailman/Bouncers/SimpleMatch.py b/Mailman/Bouncers/SimpleMatch.py index a6a952a2..1c88d5ac 100644 --- a/Mailman/Bouncers/SimpleMatch.py +++ b/Mailman/Bouncers/SimpleMatch.py @@ -174,6 +174,10 @@ PATTERNS = [ (_c('Could not deliver message to'), _c('^\s*--'), _c('^Failed Recipient:\s*(?P<addr>[^\s@]+@[^\s@]+)\s*$')), + # uci.edu + (_c('--------Message not delivered'), + _c('--------Error Detail'), + _c('^\s*(?P<addr>[^\s@]+@[^\s@]+)\s*$')), # Next one goes here... ] @@ -195,7 +199,7 @@ def process(msg, patterns=None): # we process the message multiple times anyway. for scre, ecre, acre in patterns: state = 0 - for line in email.Iterators.body_line_iterator(msg): + for line in email.Iterators.body_line_iterator(msg, decode=True): if state == 0: if scre.search(line): state = 1 @@ -1,5 +1,5 @@ Mailman - The GNU Mailing List Management System -Copyright (C) 1998-2008 by the Free Software Foundation, Inc. +Copyright (C) 1998-2009 by the Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA Here is a history of user visible changes to Mailman. @@ -8,6 +8,8 @@ Here is a history of user visible changes to Mailman. Bug Fixes and other patches + - Added recognition for more bounces. + - Updated contrib/mmdsr to report preserved messages. 2.1.12 (23-Feb-2009) diff --git a/tests/bounces/aol_01.txt b/tests/bounces/aol_01.txt new file mode 100644 index 00000000..2abf0975 --- /dev/null +++ b/tests/bounces/aol_01.txt @@ -0,0 +1,19 @@ +X-MimeOLE: Produced By Microsoft Exchange V6.5 +Content-class: urn:content-classes:message +MIME-Version: 1.0 +Content-Type: text/plain; + charset="iso-8859-1" +Content-Transfer-Encoding: quoted-printable +Subject: Mail Delivery Problem +Date: Fri, 17 Jul 2009 16:05:21 -0700 +Message-ID: <200907171908.7d834a6104831b4@omr-d25.mx.aol.com> +X-MS-Has-Attach: +X-MS-TNEF-Correlator: +From: "Mail Delivery Subsystem" <MAILER-DAEMON@AOL.com> +To: <xxx-bounces@lists.xxx.com> + + +Your mail to the following recipients could not be delivered because = +they are not accepting mail from xxx@lists.xxx.com: + screenname + diff --git a/tests/bounces/simple_37.txt b/tests/bounces/simple_37.txt new file mode 100644 index 00000000..50cb0b28 --- /dev/null +++ b/tests/bounces/simple_37.txt @@ -0,0 +1,36 @@ +X-MimeOLE: Produced By Microsoft Exchange V6.5 +Content-class: urn:content-classes:message +MIME-Version: 1.0 +Content-Type: text/plain; + charset="iso-8859-1" +Content-Transfer-Encoding: quoted-printable +Subject: Returned mail - nameserver error report +Date: Fri, 17 Jul 2009 16:05:22 -0700 +Message-ID: <200907172305.n6HN5Mn23080@mta1.service.uci.edu> +X-MS-Has-Attach: +X-MS-TNEF-Correlator: +From: <MAILER-DAEMON@mta1.service.uci.edu> +To: <xxx-bounces@lists.xxx.com> + + --------Message not delivered to the following addresses: + + user@uci.edu=20 + + --------Error Detail (phquery V3.0): + +---- user@uci.edu=20 + Does not have a final email delivery point, + please contact this person by alternate means. +=20 + name: User Name + alias: USER + +Please contact Postmaster@uci.edu if you have any questions. + + --------Unsent Message below: + +Received: from mx2.service.uci.edu (mx2.service.uci.edu = +[128.200.59.180]) + by mta1.service.uci.edu (8.11.4-20030923/8.11.2) with ESMTP id = +n6HN5Mi23070; + Fri, 17 Jul 2009 16:05:22 -0700 (PDT) diff --git a/tests/test_bounces.py b/tests/test_bounces.py index 7986c7d4..9a4cba4d 100644 --- a/tests/test_bounces.py +++ b/tests/test_bounces.py @@ -73,6 +73,7 @@ class BounceTest(unittest.TestCase): ('SimpleMatch', 'simple_33.txt', ['hmu@extralumin.com']), ('SimpleMatch', 'simple_34.txt', ['roland@xxx.com']), ('SimpleMatch', 'simple_36.txt', ['garyt@xxx.com']), + ('SimpleMatch', 'simple_37.txt', ['user@uci.edu']), ('SimpleMatch', 'bounce_02.txt', ['acinsp1@midsouth.rr.com']), ('SimpleMatch', 'bounce_03.txt', ['james@jeborall.demon.co.uk']), # SimpleWarning @@ -163,6 +164,7 @@ class BounceTest(unittest.TestCase): 'turtle4jne@yahoo.com']), # sina.com appears to use their own weird SINAEMAIL MTA ('Sina', 'sina_01.txt', ['boboman76@sina.com', 'alan_t18@sina.com']), + ('AOL', 'aol_01.txt', ['screenname@aol.com']), # No address can be detected in these... # dumbass_01.txt - We love Microsoft. :( # Done |