[Mailman-Developers] message posting in a loop with mailman 2.1b1

Barry A. Warsaw barry@zope.com
Tue, 16 Apr 2002 18:33:59 -0400


>>>>> "MM" == Marc MERLIN <marc_news@vasoftware.com> writes:

    MM> I just upgraded one of my servers to exim 4 and mailman choked
    MM> badly on having exim refuse a message because exim did this:

    SMTP> 451 Temporary local problem - please try later

    MM> The problem is that mailman decided that the whole post
    MM> failed, and started to resend it in a loop.

If I'm reading RFC 2821 correctly, this is the right thing for Mailman
to do.  A 451 error code means:

    "The command was not accepted, and the requested action did not
     occur.  However, the error condition is temporary and the action
     may be requested again.  The sender should return to the beginning
     of the command sequence (if any)."

So it looks to me like we're correct in assuming that none of the
recipients of that chunk got the message.  If Exim is doing partial
deliveries and still returning 451, that doesn't seem right.
    
    MM> This also caused bounce scores against all the users and
    MM> angered the membership obviously.

We could debate whether it's right to increment bounce scores to
recipients in a 451'd message.  Maybe we should soft-bounce them
(increment by 1.0 > score > 0).  I could see an argument about just
ignoring 451 responses w.r.t. the bounce processor.
    
    MM> Since mailman doesn't know who many receipients it delivered
    MM> to when it gets an error from the MTA (4xx or 5xx), I

Mailman shouldn't have to know.  If it gets a 4xx or 5xx response for
a batch of recipients, it has to assume that none of those recipients
will get the message.  I think this is mandated by the RFC.

    MM> recommend that mailman moves the message in a separate queue
    MM> dir, logs an error (possibly Emailing the list owner in the
    MM> process) and gives up on the message. Resending it is only
    MM> going to piss off the users that are getting the message each
    MM> time mm tries.

Unless I'm misreading the RFC, you have to blame Exim for this.

-Barry