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. *


Reply via email to