From 67bd1ab3f4e50e21946731e8d6950f9a6801370e Mon Sep 17 00:00:00 2001 From: Tony Finch Date: Fri, 30 Nov 2012 16:01:00 +0000 Subject: [PATCH 1/1] Add retry timeout fix to ChangeLog --- doc/doc-txt/ChangeLog | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/doc/doc-txt/ChangeLog b/doc/doc-txt/ChangeLog index 218d25567..577ac39f0 100644 --- a/doc/doc-txt/ChangeLog +++ b/doc/doc-txt/ChangeLog @@ -96,6 +96,30 @@ PP/13 Dovecot auth: log better reason to rejectlog if Dovecot did not protocol violation error. Also, make Exim more robust to bad data from the Dovecot auth socket. +TF/01 Fix ultimate retry timeouts for intermittently deliverable recipients. + + When a queue runner is handling a message, Exim first routes the + recipient addresses, during which it prunes them based on the retry + hints database. After that it attempts to deliver the message to + any remaining recipients. It then updates the hints database using + the retry rules. + + So if a recipient address works intermittently, it can get repeatedly + deferred at routing time. The retry hints record remains fresh so the + address never reaches the final cutoff time. + + This is a fairly common occurrence when a user is bumping up against + their storage quota. Exim had some logic in its local delivery code + to deal with this. However it did not apply to per-recipient defers + in remote deliveries, e.g. over LMTP to a separate IMAP message store. + + This commit adds a proper retry rule check during routing so that + the final cutoff time is checked against the message's age. I also + took the opportunity to unify three very similar blocks of code. + + I suspect this new check makes the old local delivery cutoff check + redundant, but I have not verified this so I left the code in place. + Exim version 4.80.1 ------------------- -- 2.30.2