Mailing List Archive

[Bug 615] New: named localpartlist list caching problem with local_part_suffix and local_part_prefix
------- You are receiving this mail because: -------
You are on the CC list for the bug.

http://bugs.exim.org/show_bug.cgi?id=615
Summary: named localpartlist list caching problem with
local_part_suffix and local_part_prefix
Product: Exim
Version: 4.68
Platform: All
OS/Version: All
Status: NEW
Severity: bug
Priority: high
Component: List matching
AssignedTo: ph10@hermes.cam.ac.uk
ReportedBy: dean@iglou.com
CC: exim-dev@exim.org


There is a problem with the way Exim 4.68 handles caching of named
localpartlist lists, when used with the router options of
local_part_suffix and local_part_prefix.

Specifically, Exim will cache negative lookups (as it should), but then
improperly uses the previous cached negative lookup even when the key
changes as a result of local_part_suffix or local_part_prefix.

To easily reproduce the problem, use this complete config file in its
entirety and save it as "/tmp/testconfig":

#------------------------------------------------------------
qualify_domain = mydomain.com
localpartlist aliases = joe:sam:tom

begin routers

router1:
driver = accept
local_parts = +aliases
condition = false
transport = local_delivery

router2:
driver = accept
local_parts = +aliases
local_part_suffix = -real
transport = local_delivery

begin transports

local_delivery:
driver = appendfile
file = /tmp/${local_part}
#------------------------------------------------------------

Then, run the following command to test the router:

/usr/lib/sendmail -bv -d+route -C/tmp/testconfig

Once prompted by Exim, enter a test address of:

joe-real

The result you will receive will be:

routing joe-real@mydomain.com
--------> router1 router <--------
local_part=joe-real domain=mydomain.com
checking local_parts
joe-real in "joe:sam:tom"? no (end of list)
joe-real in "+aliases"? no (end of list)
router1 router skipped: local_parts mismatch
--------> router2 router <--------
local_part=joe-real domain=mydomain.com
stripped suffix -real
checking local_parts
cached no match for +aliases
cached lookup data = NULL
**> joe in "+aliases"? no (end of list)
router2 router skipped: local_parts mismatch
no more routers
joe-real@mydomain.com failed to verify: Unrouteable address

Note the line above that I have highlighted. That is where the problem
lies, because "joe" is *in* the +aliases named list. However, it's
using the cached negative lookup associated with the address, but failed
to recognize that the lookup key is different (i.e. "joe" instead of
the cached negative value for "joe-real").

This can cause definite problems for anyone using the prefix or suffix
options.


--
Configure bugmail: http://bugs.exim.org/userprefs.cgi?tab=email

--
## List details at http://lists.exim.org/mailman/listinfo/exim-dev Exim details at http://www.exim.org/ ##