[Mailman-Developers] 552 SMTP CODE in bounce

Mark Sapiro msapiro at value.net
Mon Mar 6 17:38:59 CET 2006

Giuliano Gavazzi wrote:
>I thought that mailman would attempt to parse a bounce caused by a  
>failed delivery to establish if that failure was temporary or permanent.

I know that the Bounce Processing page says that 'soft' bounces score
0.5 and 'hard' bounces score 1.0, but this is not actually implemented.

However, in any case, RFC 2821 defines any 5yx status as a permanent
failure, even 552.

>It might be that mailman parses the error code correctly if that is  
>received directly from the outgoing mailserver, but it seems that if  
>the code is in a bounce (DSN), the parsing might fail.

Mailman does treat a 552 received during delivery by SMTPDirect as
retryable, but this is different. Normally, a 552 - full mailbox will
never be seen by SMTPDirect, since delivery to the remote MTA won't be
attempted until after the SMTP transaction is complete. The 552 that
might be seen by SMTPDirect is based on RFC 821 which says a 552
response can be used for "too many recipients".

>I use exim 4.60 as outgoing mailserver and when attempting to deliver  
>to an overquota mailbox it will return a message with the following  
>This message was created automatically by mail delivery software.
>A message that you sent could not be delivered to one or more of its
>recipients. This is a permanent error. The following address(es) failed:
>   user at example.domain
>     SMTP error from remote mail server after RCPT  
>TO:<user at example.domain>:
>     host mail-mx-4.tiscali.it []: 552 RCPT  
>TO:<user at example.domain> Mailbox disk quota exceeded

Exim is behaving properly in this case. The problem, if any, is with
the receiving MTA that is returning a 552 instead of a 452.

>The user is then given 1 point as with a permanent failure.
>If this is not what's supposed to happen, where do I look in the code  
>to fix this?

I'm currently working on the code in this area, but only to increase
the variety of notices that are recognized, and one other change in
the area of 'delayed' notices. The current code/design actually
provides no way to assign different scores to different bounces. The
recognizers (in Mailman/Bouncers) return either a list of bouncing
addresses or a 'stop' signal in the case of a 'delayed' or 'warning
only' DSN. Mailman treats the 'stop' signal as an empty list, so these
notices are treated the same as 'unrecognized'. In Mailman 2.1.8, the
'stop' signal will result in the bounce being ignored.

If you want to discuss implementation of variable scoring, we should
probably do that on mailman-developers.

>Or perhaps i should teach exim to treat 552 as temporary errors  
>(until the maximum retry has been reached).

If you want to actually keep retrying these, this would be the way to

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-Developers mailing list