[Mailman-Users] Lists stop working

Mark Sapiro msapiro at value.net
Sat Apr 28 00:40:04 CEST 2007

Rolf E. Sonneveld wrote:
>Mark Sapiro wrote:
>> One minor point here. The post log entry is not written until the
>> message is delivered by SMTPDirect.
>OK, thus only after the message has been delivered to at least one 
>subscriber (or the first MTA in the chain of delivery to at least one 

Yes, the first MTA, namely the one on localhost, port 25 unless
overridden by SMTPHOST/SMTPPORT in mm_cfg.py. There is no guarantee
this MTA has sent the message further. You need to refer the the MTA's
logs for that.

>In my case there were no entries in smtp nor in smtp-failure.

So the message didn't get that far.

>> 1) The MTA pipes the message to the wrapper which passes it to the
>> scripts/post script which in turn places it in the qfiles/in queue.
>> Nothing is logged in Mailman, but the MTA normally logs the delivery.
>Now here's the problem, I think. The MTA logs the message as being 
>delivered to Mailman (via the wrapper script 
>$MAILMANDIR/mailman/bin/mailman), so from the MTA's point of view it's 
>done. Now, as the sent message cannot be found under qfiles, and as none 
>of the $MAILMANDIR/logs/* files is modified, it seems as if the message 
>disappeared in a black hole. Is there no way to enable debugging in the 
>wrapper script? It would show the first action of Mailman, I assume.

There are at least two possibilities here.

1) The post was rejected (not held or discarded). A reject is not
logged, but there should be an associated entry in Mailman's smtp log
with a mailman generated message-id and 1 recipient for the reject
message sent to the poster.

2) The wrapper is for a different Mailman installation with a different
qfiles directory and probably no qrunners running and probably
different log files too.

The wrapper itself (I would expect it to be located at
$MAILMANDIR/mail/mailman, not $MAILMANDIR/mailman/bin/mailman) has the
path to the scripts/ directory compiled in and doesn't have any debug
switches. It will invoke the scripts/post script and presumably this
happens OK or it will return a failure status to the MTA which would
be logged by the MTA.

You can add debugging to the scripts/post script. If you look at this
script, you will see that it already detects a missing or invalid list
name from the wrapper and writes to stderr which is logged to both the
post and error logs.

You could add some more output, say by adding the last two lines of

    inq = get_switchboard(mm_cfg.INQUEUE_DIR)
                tolist=1, _plaintext=1)
    print >> sys.stderr, 'Post for %s queued in %s' \
                        % (listname, mm_cfg.INQUEUE_DIR)

If you don't see this in the post and error logs, you are not looking
at the right installation or (third possibility) the right log files.
Look in mm_cfg.py/Defaults.py for the definition of LOG_DIR and
anything else used in its definition.

This can be tricky. LOG_DIR is defined in Defaults.py in terms of
VAR_PREFIX. If VAR_PREFIX is redefined in mm_cfg.py, this will not
redefine LOG_DIR as LOG_DIR was already defined in Defaults.py in
terms of the Defaults.py definition of VAR_PREFIX.

Mark Sapiro <msapiro at value.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