>>>>> "KA" == Ken A <[EMAIL PROTECTED]> writes:
KA> I'm testing deliver with sendmail and fs quotas. KA> On an over quota condition, deliver accepts the mail, deletes it, KA> then issues a MDN immediately. KA> Is there a way to get deliver to soft fail like procmail does with KA> a 400 error and queue the mail, then let sendmail handle the MDN, KA> following it's "confTO_QUEUEWARN" and "confTO_QUEUERETURN" ? Last time I looked at deliver it seemed like there were very few conditions it considered as a temporary failure and thus for it to return EX_TEMPFAIL. I also was considering over-quota conditions (also filesystem quotas). The '-e' option to deliver will, possibly by accidental side-effect, avoid calling the deliver-generated bounce code. Instead deliver will write some error text on stderr and exit EX_NOPERM. The code in question is src/deliver/deliver.c lines 810 -- 835 which occurs right after attempting to save the message (i.e. ret is the return code from the save attempt). The '-e' option is what sets stderr_rejection. if (ret < 0) { const char *error, *msgid; bool syntax, temporary_error; int ret; error = mail_storage_get_last_error(storage, &syntax, &temporary_error); if (temporary_error) return EX_TEMPFAIL; msgid = mail_get_first_header(mail, "Message-ID"); i_info("msgid=%s: Rejected: %s", msgid == NULL ? "" : str_sanitize(msgid, 80), str_sanitize(error, 512)); /* we'll have to reply with permanent failure */ if (stderr_rejection) { fprintf(stderr, "%s\n", error); return EX_NOPERM; } ret = mail_send_rejection(mail, destination, error); if (ret != 0) return ret < 0 ? EX_TEMPFAIL : ret; /* ok, rejection sent */ } As Timo has said elsewhere "deliver could use a rewrite some day..".