On Mon, 22 Sep 2003, Stanier, Alan M wrote:
> So, 4.05 didn't do a DNS lookup, 4.20 did, and failed.
That's the clue. These are the relevant changes, from 4.11, I suspect:
89. When a host was looked up using gethostbyname() (or the more recent
getipnodebyname() on IPv6 systems), Exim was not inspecting the error code
on failure. Thus, any failure was treated as "host not found". Exim now
checks for temporary errors, so the behaviour of "byname" and "bydns"
lookups in this respect should be the same. However, on some OS it has been
observed that getipnodebyname() gives HOST_NOT_FOUND for names for which a
DNS lookup gives TRY_AGAIN. See also change 125 below.
125. Changed the default way of finding an IP address in both the manualroute
and queryprogram routers. Exim now does a DNS lookup; if that yields
HOST_NOT_FOUND, it tries calling getipnodebyname() (or gethostbyname()).
See also change 89 above.
In 4.05, as there's no DNS lookup, Exim just used gethostbyname, and it
must have found the host in your /etc/hosts file.
Interesting, though, that your debug shows that when the DNS lookup
failed for 4.20, it tried getipnodebyname, and that then failed.
Have you upgraded your OS between building 4.05 and 4.20? Have you added
IPv6 support to Exim? I'm wondering if 4.05 is using gethostbyname() and
4.20 is using getipnodebyname(), and these are behaving differently.
One thing you can try is adding "byname" to the manualroute
configuration, to avoid doing the DNS lookup.
Philip
--
Philip Hazel University of Cambridge Computing Service,
ph10@??? Cambridge, England. Phone: +44 1223 334714.
Get the Exim 4 book: http://www.uit.co.uk/exim-book