Hi,
while testing out dovecot 1.1, I found that when you set quota_full_tempfail = yes in dovecot.conf and use the deliver -e command line flag, no deferral reason is printed, thus breaking my fancy quota_exceeded_message. This appears to be because of the if() block in lines 1003-1009 in src/deliver/deliver.c, and should be easily fixable (if it is indeed a bug, and not intended behavior).
However, I shied away from creating a patch because either there is a mismatch between the documentation and deliver's actual behavior, or I misunderstood the code (likely, since I'm not really a C programmer).
The lines in question (in src/deliver/deliver.c) read: | 1003 if (error != MAIL_ERROR_NOSPACE || | 1004 getenv("QUOTA_FULL_TEMPFAIL") != NULL) {
Does this mean that the corresponding block gets executed whenever quota_full_tempfail is set? If so, setting it transforms all errors into TEMPFAILs, and not only those relating to quota/space issues. I think dovecot-example.conf should at least mention this it's inteded; otherwise, the code should be changed (I'm not completely sure what Timo's intensions are, so I won't comment on possible solutions).
Regards, Ulrich
PS: All line numbers are taken from rev 080dd4d2fd94, which was the most recent at the time of writing.