[Exim] dnslookup failing for shortened domains

Top Page
Delete this message
Reply to this message
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:

DEBUG(D_dns) debug_printf("DNS lookup qualify_single=%d search_parents=%d\n",
qualify_single, search_parents);

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