[Mailman-Users] Newsrunner infinite loop

Mark Sapiro mark at msapiro.net
Thu Aug 14 19:12:32 CEST 2008

Max Lanfranconi wrote:
>I have a mailman 2.1.11 installation running about 1000 mailing lists.
>Each of them is bi-directionally gatewayed via NNTP.
>I have been hitting the following scenario:
>Email 'a' is made of a text body and email 'b' as a text attachment.

Is the attachment Content-Type: text/plain or message/rfc822?

>Email 'b' is made of a text body and another non-text attachment.
>Posting email 'a' to any mailing list gets email a distributed to all 
>the mailing list members but puts  NewsRunner in the following infinite 
>loop (1 traceback per second. Needless to say, the posting never makes 
>it to the newsgroup)
>Aug 13 14:36:30 2008 (25129) Uncaught runner exception:
>Aug 13 14:36:30 2008 (25129) Traceback (most recent call last):
>  File "/usr/local/mailman/Mailman/Queue/NewsRunner.py", line 86, in 
>    conn.quit()
>  File "/usr/lib/python2.4/nntplib.py", line 600, in quit
>    resp = self.shortcmd('QUIT')
>  File "/usr/lib/python2.4/nntplib.py", line 260, in shortcmd
>    return self.getresp()
>  File "/usr/lib/python2.4/nntplib.py", line 215, in getresp
>    resp = self.getline()
>  File "/usr/lib/python2.4/nntplib.py", line 207, in getline
>    if not line: raise EOFError
>Any hint about what may cause this ?

The immediate cause is NewsRunner has a try: ... finally: and in the
finally: clause does

                if conn:

to close the nntp connection if it is open. It appears that the
connection may be already closed at this point because of a prior
exception. Are there any '(NNTPDirect) xxx error for list ...'
messages in the error log?. If not you could locate the following in

                except nntplib.error_temp, e:
                           '(NNTPDirect) NNTP error for list "%s": %s',
                           mlist.internal_name(), e)
                except socket.error, e:
                           '(NNTPDirect) socket error for list "%s":
                           mlist.internal_name(), e)
                if conn:

and replace

                except nntplib.error_temp, e:


                except nntplib.NNTPError, e:

and see if that gives any more information. nntplib does have a debug
facility, but don't try to use it because it writes the debug output
to stdout and NewsRunner doesn't have a stdout so this just causes
more problems.

Mark Sapiro <mark at msapiro.net>        The highway is for gamblers,
San Francisco Bay Area, California    better use your sense - B. Dylan

More information about the Mailman-Users mailing list