aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Sapiro <mark@msapiro.net>2009-07-31 13:27:06 -0700
committerMark Sapiro <mark@msapiro.net>2009-07-31 13:27:06 -0700
commit0f74db6fb0ae5a4fcdfaaf1976d196efc01ab0b0 (patch)
tree4019790fda8d9b0875f515120c7b5bdf4200e4c8
parent1fa8485365659b59c7480ea62ea8d73c9e90fb5b (diff)
downloadmailman2-0f74db6fb0ae5a4fcdfaaf1976d196efc01ab0b0.tar.gz
mailman2-0f74db6fb0ae5a4fcdfaaf1976d196efc01ab0b0.tar.xz
mailman2-0f74db6fb0ae5a4fcdfaaf1976d196efc01ab0b0.zip
Added recognition for more bounces.
-rw-r--r--Mailman/Bouncers/AOL.py45
-rw-r--r--Mailman/Bouncers/BouncerAPI.py3
-rw-r--r--Mailman/Bouncers/SimpleMatch.py6
-rw-r--r--NEWS4
-rw-r--r--tests/bounces/aol_01.txt19
-rw-r--r--tests/bounces/simple_37.txt36
-rw-r--r--tests/test_bounces.py2
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
diff --git a/NEWS b/NEWS
index 96c30bf5..d8006b22 100644
--- a/NEWS
+++ b/NEWS
@@ -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