[exim-dev] [Bug 615] New: named localpartlist list caching p…

Top Page
Delete this message
Reply to this message
Author: Dean Brooks
Date:  
To: exim-dev
New-Topics: [exim-dev] [Bug 615] named localpartlist list caching problem with local_part_suffix and local_part_prefix, [exim-dev] [Bug 615] named localpartlist list caching problem with local_part_suffix and local_part_prefix, [exim-dev] [Bug 615] named localpartlist list caching problem with local_part_suffix and local_part_prefix
Subject: [exim-dev] [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@???
        ReportedBy: dean@???
                CC: exim-dev@???



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@???
    --------> 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@??? 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