aboutsummaryrefslogtreecommitdiffstats
path: root/Mailman
diff options
context:
space:
mode:
authorYasuhito FUTATSUKI at POEM <futatuki@poem.co.jp>2017-02-15 17:35:23 +0900
committerYasuhito FUTATSUKI at POEM <futatuki@poem.co.jp>2017-02-15 17:35:23 +0900
commit593d91698db3fa9dd99b64f2973ee14947dd4782 (patch)
tree00fa54270be0043ccb74614df7321816c6facc76 /Mailman
parentee5b57e4bc8fdca687cbc04a1338941941f29b1d (diff)
parentc78ea26f8f04cd2e3d2cf231736bcc95ec8cccd5 (diff)
downloadmailman2-593d91698db3fa9dd99b64f2973ee14947dd4782.tar.gz
mailman2-593d91698db3fa9dd99b64f2973ee14947dd4782.tar.xz
mailman2-593d91698db3fa9dd99b64f2973ee14947dd4782.zip
Merge lp:mailman/2.1 up to 1691
Diffstat (limited to 'Mailman')
-rw-r--r--Mailman/Bouncers/SimpleMatch.py4
-rw-r--r--Mailman/Cgi/roster.py6
-rw-r--r--Mailman/Queue/BounceRunner.py34
3 files changed, 28 insertions, 16 deletions
diff --git a/Mailman/Bouncers/SimpleMatch.py b/Mailman/Bouncers/SimpleMatch.py
index 2aa082a2..e84d2255 100644
--- a/Mailman/Bouncers/SimpleMatch.py
+++ b/Mailman/Bouncers/SimpleMatch.py
@@ -188,6 +188,10 @@ PATTERNS = [
(_c('A message that you sent was rejected'),
_c('This is a copy of your message'),
_c('\s(?P<addr>[^\s@]+@[^\s@]+)')),
+ # MailEnable
+ (_c('Message could not be delivered to some recipients.'),
+ _c('Message headers follow'),
+ _c('Recipient: \[SMTP:(?P<addr>[^\s@]+@[^\s@]+)\]')),
# Next one goes here...
]
diff --git a/Mailman/Cgi/roster.py b/Mailman/Cgi/roster.py
index e9ab03c1..cb6847af 100644
--- a/Mailman/Cgi/roster.py
+++ b/Mailman/Cgi/roster.py
@@ -1,4 +1,4 @@
-# Copyright (C) 1998-2016 by the Free Software Foundation, Inc.
+# Copyright (C) 1998-2017 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
@@ -141,8 +141,8 @@ def error_page(errmsg):
print doc.Format()
-def error_page_doc(doc, errmsg, *args):
+def error_page_doc(doc, errmsg):
# Produce a simple error-message page on stdout and exit.
doc.SetTitle(_("Error"))
doc.AddItem(Header(2, _("Error")))
- doc.AddItem(Bold(errmsg % args))
+ doc.AddItem(Bold(errmsg))
diff --git a/Mailman/Queue/BounceRunner.py b/Mailman/Queue/BounceRunner.py
index 651039d6..2d14f284 100644
--- a/Mailman/Queue/BounceRunner.py
+++ b/Mailman/Queue/BounceRunner.py
@@ -29,6 +29,7 @@ from email.Utils import parseaddr
from Mailman import mm_cfg
from Mailman import Utils
from Mailman import LockFile
+from Mailman.Errors import NotAMemberError
from Mailman.Message import UserNotification
from Mailman.Bouncer import _BounceInfo
from Mailman.Bouncers import BouncerAPI
@@ -151,19 +152,26 @@ class BounceMixin:
mlist.Lock()
try:
op, addr, bmsg = mlist.pend_confirm(token)
- info = mlist.getBounceInfo(addr)
- if not info:
- # info was deleted before probe bounce was received.
- # Just create a new info.
- info = _BounceInfo(addr,
- 0.0,
- time.localtime()[:3],
- mlist.bounce_you_are_disabled_warnings
- )
- mlist.disableBouncingMember(addr, info, bmsg)
- # Only save the list if we're unlocking it
- if not locked:
- mlist.Save()
+ # For Python 2.4 compatibility we need an inner try because
+ # try: ... except: ... finally: requires Python 2.5+
+ try:
+ info = mlist.getBounceInfo(addr)
+ if not info:
+ # info was deleted before probe bounce was received.
+ # Just create a new info.
+ info = _BounceInfo(addr,
+ 0.0,
+ time.localtime()[:3],
+ mlist.bounce_you_are_disabled_warnings
+ )
+ mlist.disableBouncingMember(addr, info, bmsg)
+ # Only save the list if we're unlocking it
+ if not locked:
+ mlist.Save()
+ except NotAMemberError:
+ # Member was removed before probe bounce returned.
+ # Just ignore it.
+ pass
finally:
if not locked:
mlist.Unlock()