diff options
author | bwarsaw <> | 2003-03-31 21:49:43 +0000 |
---|---|---|
committer | bwarsaw <> | 2003-03-31 21:49:43 +0000 |
commit | de777e10950eed3aff489e74908578b5759003bb (patch) | |
tree | 10711cb2e58ce6b83faf021b0cd084de58d22bc4 /Mailman/Bouncers | |
parent | fb97bfb122d119977a719f3a33673edaaae5bd37 (diff) | |
download | mailman2-de777e10950eed3aff489e74908578b5759003bb.tar.gz mailman2-de777e10950eed3aff489e74908578b5759003bb.tar.xz mailman2-de777e10950eed3aff489e74908578b5759003bb.zip |
Backporting from trunk
Diffstat (limited to 'Mailman/Bouncers')
-rw-r--r-- | Mailman/Bouncers/DSN.py | 14 | ||||
-rw-r--r-- | Mailman/Bouncers/Microsoft.py | 15 | ||||
-rw-r--r-- | Mailman/Bouncers/Postfix.py | 17 | ||||
-rw-r--r-- | Mailman/Bouncers/SimpleMatch.py | 6 |
4 files changed, 32 insertions, 20 deletions
diff --git a/Mailman/Bouncers/DSN.py b/Mailman/Bouncers/DSN.py index 3e040bef..6c32f0ff 100644 --- a/Mailman/Bouncers/DSN.py +++ b/Mailman/Bouncers/DSN.py @@ -1,20 +1,24 @@ -# Copyright (C) 1998,1999,2000,2001,2002 by the Free Software Foundation, Inc. +# Copyright (C) 1998-2003 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 +# along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -"""Parse RFC 1894 (i.e. DSN) bounce formats.""" +"""Parse RFC 3464 (i.e. DSN) bounce formats. + +RFC 3464 obsoletes 1894 which was the old DSN standard. This module has not +been audited for differences between the two. +""" from email.Iterators import typed_subpart_iterator from email.Utils import parseaddr diff --git a/Mailman/Bouncers/Microsoft.py b/Mailman/Bouncers/Microsoft.py index 65d49cc1..f14268a9 100644 --- a/Mailman/Bouncers/Microsoft.py +++ b/Mailman/Bouncers/Microsoft.py @@ -1,23 +1,24 @@ -# Copyright (C) 1998,1999,2000,2001,2002 by the Free Software Foundation, Inc. +# Copyright (C) 1998-2003 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 +# along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. """Microsoft's `SMTPSVC' nears I kin tell.""" import re from cStringIO import StringIO +from types import ListType scre = re.compile(r'transcript of session follows', re.IGNORECASE) @@ -32,7 +33,11 @@ def process(msg): except IndexError: # The message *looked* like a multipart but wasn't return None - body = StringIO(subpart.get_payload()) + data = subpart.get_payload() + if isinstance(data, ListType): + # The message is a multi-multipart, so not a matching bounce + return None + body = StringIO(data) state = 0 addrs = [] while 1: diff --git a/Mailman/Bouncers/Postfix.py b/Mailman/Bouncers/Postfix.py index fb1a1233..447e326c 100644 --- a/Mailman/Bouncers/Postfix.py +++ b/Mailman/Bouncers/Postfix.py @@ -1,17 +1,17 @@ -# Copyright (C) 1998,1999,2000,2001,2002 by the Free Software Foundation, Inc. +# Copyright (C) 1998-2003 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 +# along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. """Parse bounce messages generated by Postfix. @@ -20,12 +20,10 @@ This also matches something called `Keftamail' which looks just like Postfix bounces with the word Postfix scratched out and the word `Keftamail' written in in crayon. -It also matches something claiming to be `The BNS Postfix program'. -/Everybody's/ gotta be different, huh? - +It also matches something claiming to be `The BNS Postfix program', and +`SMTP_Gateway'. Everybody's gotta be different, huh? """ - import re from cStringIO import StringIO @@ -42,7 +40,8 @@ def flatten(msg, leaves): # are these heuristics correct or guaranteed? -pcre = re.compile(r'[ \t]*the\s*(bns)?\s*(postfix|keftamail)', re.IGNORECASE) +pcre = re.compile(r'[ \t]*the\s*(bns)?\s*(postfix|keftamail|smtp_gateway)', + re.IGNORECASE) rcre = re.compile(r'failure reason:$', re.IGNORECASE) acre = re.compile(r'<(?P<addr>[^>]*)>:') diff --git a/Mailman/Bouncers/SimpleMatch.py b/Mailman/Bouncers/SimpleMatch.py index ccc8d6ed..9cb0832b 100644 --- a/Mailman/Bouncers/SimpleMatch.py +++ b/Mailman/Bouncers/SimpleMatch.py @@ -1,4 +1,4 @@ -# Copyright (C) 1998,1999,2000,2001,2002 by the Free Software Foundation, Inc. +# Copyright (C) 1998-2003 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 @@ -70,6 +70,10 @@ PATTERNS = [ (_c('Undeliverable Address:\s*(?P<addr>.*)$'), _c('Original message attached'), _c('Undeliverable Address:\s*(?P<addr>.*)$')), + # Another demon.co.uk format + (_c('This message was created automatically by mail delivery'), + _c('^---- START OF RETURNED MESSAGE ----'), + _c("addressed to '(?P<addr>[^']*)'")), # Next one goes here... ] |