[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?
Cheers,
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