Author: Chip Coldwell Date: To: exim-users Subject: [Exim] dnslookup failing for shortened domains
This is apropos exim v4.30 on Debian GNU/Linux, compiled from source.
I've been having a problem with shortened addresses. Addresses such
as "norcross@phys5", shortened from "norcross@???" are
failing as unrouteable, even though "qualify_single" is set in the
dnslookup router and "domain harvard.edu" is in /etc/resolv.conf. I
traced the problem using "exim -d -bt norcross@phys5". I added a
single line to host.c:host_find_bydns for debugging purposes:
With this in place, here's the output of "exim -d -bt norcross@phys5":
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Considering norcross@phys5 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> routing norcross@phys5
--------> dnslookup router <--------
local_part=norcross domain=phys5
checking domains
DNS lookup qualify_single=0 search_parents=0
DNS lookup of phys5 (MX) gave HOST_NOT_FOUND
returning DNS_NOMATCH
phys5 in "@ : @mx_any"? no (end of list)
phys5 in "! +local_domains"? yes (end of list)
calling dnslookup router
dnslookup router called for norcross@phys5
domain = phys5
DNS lookup qualify_single=1 search_parents=0
DNS lookup of phys5-MX: using cached value DNS_NOMATCH
dnslookup router declined for norcross@phys5
"more" is false: skipping remaining routers
no more routers
norcross@phys5 is undeliverable:
Unrouteable address
What's happening is pretty clear: during evaluation of the router
pre-conditions, host_find_bydns is called with qualify_single=0.
Since "phys5" is not a top-level domain, this fails with
HOST_NOT_FOUND, and the result is put in the cache, poisoning it for
the later lookup with qualify_single=1.
I consider this a bug.
Chip
--
Charles M. "Chip" Coldwell
System Administrator
Harvard Physics Department
617-495-3388