[Dovecot] Deferring, instead of rejecting, messages when at quota

Mike Brudenell pmb1 at york.ac.uk
Thu Apr 26 13:01:02 EEST 2007

Greetings -

On 26 Apr 2007, at 10:36, Magnus Holmgren wrote:

> In Exim, you can set the temp_errors option of the transport. I  
> don't know
> what code is returned in this case, but I have temp_errors =  
> 73:75:77:78:89.
> If Exim takes care of all the hard errors (like nonexisting  
> user...) you can
> almost set temp_errors = *.

Hmmm... I'm continuing to peer at the source code of Dovecot's  
deliver and related libraries and have a feeling it's not going to be  
as straight forward as the above.

It looks as though deliver calls routines in lib-storage to try and  
write out the message.  If these detect a problem they flag the  
error, and the routine they use to do so indicates it is not a  
temporary one.  Deliver sees the write failed and, seeing that  
temporary_error is FALSE itself generates and sends the error response.

I'm currently trying to work out how this behaviour can be changed  
without affecting other things.

For example it probably isn't safe to change the function used by the  
storage routines to flag that any and every error logged through it  
is a temporary_error: there may well be other places it gets called  
where the error is NOT temporary.

Likewise I'm not sure if I can simply change the source of deliver to  
always return a temporary failure code because again there may be  
other problems that occur which should be permanently failed.

I think I need help from Timo on this one, unless someone has already  
worked this one out previously?

Mike B-)

The Computing Service, University of York, Heslington, York Yo10 5DD, UK
Tel:+44-1904-433811  FAX:+44-1904-433740

* Unsolicited commercial e-mail is NOT welcome at this e-mail address. *

More information about the dovecot mailing list