I started working on a version of sort_and_deliver that takes a dsnuser struct as an argument, and moved one of the loops from pipe.c into sort.c This gives sort_and_delivery an understanding that there may be several actual deliveries associated with a particular address. It's just a sketch right now, and doesn't yet solve any problems (it's just structured better, imho).
The problem always boils down to this, though: how do we assemble the different codes returned by each of the "mini-deliveries" into a single code to return for the address itself? (note that this is a separate, though related, problem to the SMTP issue of finding one code for multiple addresses -- IMHO, we should be recommending to people to force the MTA to go one at a time when using dbmail-smtp). Aaron Ilja Booij <[EMAIL PROTECTED]> said: > 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 > > _______________________________________________ > Dbmail-dev mailing list > Dbmail-dev@dbmail.org > http://twister.fastxs.net/mailman/listinfo/dbmail-dev > --