https://bugs.exim.org/show_bug.cgi?id=3148

--- Comment #4 from [email protected] ---
It could be a 10+ year old bug in my config. I don't know when the retry hint
issue occurred since I just noticed it. 

Normal processing handles it fine as you can see from the exim -bt I pasted in.
This is strictly how retry hints are handled, where after every router it
checks and if it finds an address who's children were delivered, it considers
this one also delivered and ceases to process further routers.

This is bad for multiple reasons. For example, the reason we are rerunning the
address through routers instead of using one_time logic all the time is in case
something changed. This means if things change but we cross through a router
that had an address we delivered, but further routers would change it again,
we'll discard it. The retry hint logic is defeating the purpose of not running
one_time.

Example using changes to aliases which is the reason one_time is not default:

[email protected]
[email protected]

root is root@localdomain and aliased to [email protected]
testuser2 is testuser2@localdomain

testuser2 gets delivered, root gets deferred

I change root to point to testuser2@localdomain,
testuser2@localdomain to root@localdomain
root@localdomain is still aliased to [email protected]

Because of the address conflict and not fully processing the routers,
[email protected] will be discarded. Notice in particular that this router has
not set a transport yet.

virtuser_table router generated testuser2@localdomain
  errors_to=NULL transport=NULL
  uid=unset gid=unset home=NULL
routed by virtuser_table router
  envelope to: [email protected]
  transport: <none>
 locking /var/spool/exim/db/retry.lockfile
 locked  /var/spool/exim/db/retry.lockfile
 EXIM_DBOPEN: file </var/spool/exim/db/retry> dir </var/spool/exim/db>
flags=O_RDONLY
 returned from EXIM_DBOPEN: 0x55bce54d4010
 opened hints database /var/spool/exim/db/retry: flags=O_RDONLY
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Considering: testuser2@localdomain
unique = testuser2@localdomain
testuser2@localdomain was previously delivered: discarded
[email protected]: children all complete
 EXIM_DBCLOSE(0x55bce54d4010)
 closed hints database and lockfile
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

and yet:

# exim -bt [email protected]
[email protected]
    <-- root@localdomain
    <-- testuser2@localdomain
    <-- [email protected]
  router = smarthost, transport = smarthost_smtp


I tried to keep this simple with minimal changes. Any address in a series of
routers is not necessarily a destination. If we've already sent to
[email protected], fine, it's a duplicate, but before we reach transport, we
can't guarantee delivery has been made.

-- 
You are receiving this mail because:
You are on the CC list for the bug.

-- 
## subscription configuration (requires account):
##   https://lists.exim.org/mailman3/postorius/lists/exim-dev.lists.exim.org/
## unsubscribe (doesn't require an account):
##   [email protected]
## Exim details at http://www.exim.org/
## Please use the Wiki with this list - http://wiki.exim.org/

Reply via email to