"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