[Exim] dnslookup case sensitivity problem

Top Page
Delete this message
Reply to this message
Author: Chris Sleep
Date:  
To: exim-users
Subject: [Exim] dnslookup case sensitivity problem
Hi,

I've come across an interesting quirk in an exim 4.20 installation [on a
solaris 9 host] - I have a local user trying to email to
someone@??? with no success - an unroutable address is
returned.

However exim -bt someone@??? shows varying behaviour -
part of the time it returns the unroutable response, and the rest it
returns the expected:

router = dnslookup, transport = remote_smtp
host mail.laurentian.ca [142.51.1.21] MX=10

with debug mode added, it turns out that the unroutables seem to be down
to an issue with case sensitivity on the name returned by the dns
lookup:

The (occasional) working version returns:

--------> dnslookup router <--------
local_part=blah domain=nickel.laurentian.ca
checking domains
nickel.laurentian.ca in "nhm.ac.uk : mailserver.nhm.ac.uk :
nhm.nhm.ac.uk : ftp.nhm.ac.uk : jess.nhm.ac.uk : pat.nhm.ac.uk :
nature.ac.uk"? no (end of list)
nickel.laurentian.ca in "! +local_domains"? yes (end of list)
calling dnslookup router
dnslookup router called for blah@???
domain = nickel.laurentian.ca
DNS lookup of nickel.laurentian.ca (MX) succeeded
142.51.1.21 in "0.0.0.0 : 127.0.0.0/8"? no (end of list)
fully qualified name = nickel.laurentian.ca
host_find_bydns yield = HOST_FOUND (2); returned hosts:
mail.laurentian.ca 142.51.1.21 10
set transport remote_smtp
queued for remote_smtp transport: local_part = blah

.. where delivery will be theoretically fine.
The more frequent response returns in the debug output:

--------> dnslookup router <--------
local_part=blah domain=nickel.laurentian.ca
checking domains
nickel.laurentian.ca in "nhm.ac.uk : mailserver.nhm.ac.uk :
nhm.nhm.ac.uk : ftp.nhm.ac.uk : jess.nhm.ac.uk : pat.nhm.ac.uk :
nature.ac.uk"? no (end of list)
nickel.laurentian.ca in "! +local_domains"? yes (end of list)
calling dnslookup router
dnslookup router called for blah@???
domain = nickel.laurentian.ca
DNS lookup of nickel.laurentian.ca (MX) succeeded
142.51.1.21 in "0.0.0.0 : 127.0.0.0/8"? no (end of list)
fully qualified name = NICKEL.LAURENTIAN.CA
host_find_bydns yield = HOST_FOUND (2); returned hosts:
mail.LAURENTIAN.CA 142.51.1.21 10
domain changed to NICKEL.LAURENTIAN.CA
rewriting header lines
re-routed to blah@???
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Considering blah@???
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

routing blah@???
--------> dnslookup router <--------
dnslookup router skipped: previously routed blah@???

[.. this follows with the routing running through subsequent local
routers, all of which fail]

So, it seems that where the DNS lookup return mail.LAURENTIAN.CA the
domain is changed, the header is rewritten and the message rerouted, but
the second time around the router dows not follow through for delivery
as the router has already acted.

The dnslookup router configuration definition is an unremarkable one:

dnslookup:
driver = dnslookup
domains = ! +local_domains
transport = remote_smtp
ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
no_more


The local resolv.conf points to a local instance of bind (version as
default for solaris 9).

Anyone who can point me in the right direction to fix this issue will
receive eternal gratitude (or at least the next few minutes)

cheers,

Chris