[Dovecot] deliver: handling of quota_full_tempfail and -e

Ulrich Zehl ulrich-dovecot at topfen.net
Wed Apr 30 18:45:51 EEST 2008


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.


More information about the dovecot mailing list