I think you're describing the way it already works. If there's both a TEMP and a FAIL condition, worstcase returns TEMP.
Aaron Michael Häusler <[EMAIL PROTECTED]> said: >>>dsn.c:dsnuser_worstcase_list(...) should return the worst case. With the >>>current solution, if there are two deliveries (A with DSN_CLASS_OK and B >>>with DSN_CLASS_FAIL), there will be no delivery to A because of the >>>failure with B. Maybe a better solution would be to make >>>pipe.c:insert_messages(...) respect the individual status of the entries >>>of dsnusers? >> >> The delivery to A is not thrown away, but may be duplicated when the MTA >> retries B. > > > Maybe I don't understand completely how dsnusers gets filled, but the > current check > > if (dsnuser_worstcase_list(&dsnusers) == DSN_CLASS_FAIL) { > trace(TRACE_DEBUG, "main(): [...]"); > exitcode = EX_NOUSER; > goto freeall; > } > > will *skip any* insertion, if at least *one* DSN_CLASS_FAIL occurs. > And the exitcode EX_NOUSER will prevent the MTA to retry (after all, > this is exactly what all this fuss is about). > > This will not trouble me, because I call dbmail-smtp -d with only one > address. But won't this cause loss of mail, if you call it with several > addresses or let dbmail parse the headers itself? > >> This is correct; the status is changed in the event of an error or >> over-quota situation. Lots of people have been saying that over-quota >> should do a full bounce, and I think we should look into that after 2.0.1. > > Of course, it is completely valid to change the status from OK to > TEMP_FAIL or FAIL, if an error occurs. But my problem is, that > insert_messages may also change the status from FAIL to TEMP_FAIL. Imho, > this is invalid behaviour (it may be the cause for duplicated mail). > > I think, insert_messages should check each entry of dsnusers if its > status is OK and only then try to insert. This would make FAILs > permanent, but won't cause mail loss. > > Best regards, > Michael > _______________________________________________ > Dbmail-dev mailing list > Dbmail-dev@dbmail.org > http://twister.fastxs.net/mailman/listinfo/dbmail-dev > --