Hi,
I've been looking at the code in lmtp.c, pipe.c, sort/sort.c and dsn.c
to see if we can do a bit better when a message can't be inserted
because of a user being over quotum.
We *should* return an 552 message to the MTA, but currently we return a 450.
What to do?
We use db_copymsg() to copy the temporary message to the user's mailbox.
db_copymsg signals the calling function when it fails because of an
'over-quotum-error'. However, we then return a DSN_CLASS_TEMP anyway.
We should improve the code to be able report a 552 to the MTA so it can
send the appropriate bounce message.
Using LMTP, this should be quite easy, although we stil have a problem
when an alias expands to two users, one of which is over-quotum. In this
last case, I'd opt for sending the 552.
Using dbmail-smtp: I wonder what information we can send back to the MTA
and how we can do this (in what format).
Ilja