[Mailman-Developers] SMTPDirect timeout
Thien Vu
thien.vu at gmail.com
Fri Jan 28 18:21:03 CET 2005
It seems my attachment didn't make it through the first time. Here's the patch:
diff -Naur mailman-2.1.5.orig/Mailman/Defaults.py.in
mailman-2.1.5/Mailman/Defaults.py.in
--- mailman-2.1.5.orig/Mailman/Defaults.py.in 2004-04-24
19:30:03.000000000 -0700
+++ mailman-2.1.5/Mailman/Defaults.py.in 2005-01-26
13:18:07.000000000 -0800
@@ -348,6 +348,7 @@
#
#DELIVERY_MODULE = 'Sendmail'
DELIVERY_MODULE = 'SMTPDirect'
+SMTP_DELIVERY_TIMEOUT = minutes(10)
# MTA should name a module in Mailman/MTA which provides the MTA specific
# functionality for creating and removing lists. Some MTAs like Exim can be
diff -Naur mailman-2.1.5.orig/Mailman/Handlers/SMTPDirect.py
mailman-2.1.5/Mailman/Handlers/SMTPDirect.py
--- mailman-2.1.5.orig/Mailman/Handlers/SMTPDirect.py 2004-01-22
15:02:07.000000000 -0800
+++ mailman-2.1.5/Mailman/Handlers/SMTPDirect.py 2005-01-26
13:18:07.000000000 -0800
@@ -67,7 +67,12 @@
if self.__conn is None:
self.__connect()
try:
+ def handler (signum, frame):
+ raise smtplib.SMTPException('SMTP Delivery Timeout exceeded')
+ signal.signal(signal.SIGALRM, handler)
+ signal.alarm(mm_cfg.SMTP_DELIVERY_TIMEOUT)
results = self.__conn.sendmail(envsender, recips, msgtext)
+ signal.alarm(0)
except smtplib.SMTPException:
# For safety, close this connection. The next send attempt will
# automatically re-open it. Pass the exception on up.
On Fri, 28 Jan 2005 09:18:31 -0800, Thien Vu <thien.vu at gmail.com> wrote:
> It should but the MTA we're connecting to is a load balancer, and this
> is a known issue with our load balancer vendor (the backend goes down
> but the load balancer doesn't terminate the connection), but this
> could happen for a variety of other reasons.
>
> I chose to do this rather than SO_KEEPALIVE because the socket
> interface isn't really exposed through the smtplib module.
>
> Thien
>
>
> On Fri, 28 Jan 2005 11:01:30 +0100, Brad Knowles
> <brad at stop.mail-abuse.org> wrote:
> > At 9:00 PM -0800 2005-01-27, Thien Vu wrote:
> >
> > > The patch I've attached is a simple alarm around the SMTPDirect.py
> > > call into smtplib to terminate the connection after a configurable
> > > amount of time. Right now I have it set to minutes(10) but it's
> > > completely configurable via mm_cfg.py
> >
> > That's very weird. The MTA should be dropping those connections
> > after five minutes of idle time (I think that's the recommended
> > value). Obviously, in your case the MTA is not doing this, so the
> > client should definitely be protecting itself against being hung
> > indefinitely.
> >
> > --
> > Brad Knowles, <brad at stop.mail-abuse.org>
> >
> > "Those who would give up essential Liberty, to purchase a little
> > temporary Safety, deserve neither Liberty nor Safety."
> >
> > -- Benjamin Franklin (1706-1790), reply of the Pennsylvania
> > Assembly to the Governor, November 11, 1755
> >
> > SAGE member since 1995. See <http://www.sage.org/> for more info.
> >
>
More information about the Mailman-Developers
mailing list