Exim developers,
http://www.exim.org/exim-html-4.63/doc/html/spec_html/ch11.html#id2572769
----------------------------------------------------------------------
A looked up name is accepted only if it leads back to the original IP
address via a forward lookup. If either the reverse or the forward
lookup fails to find any data, or if the forward lookup does not yield
the original IP address, $sender_host_name remains empty, and
$host_lookup_failed is set to “1”.
----------------------------------------------------------------------
The way I understand the above paragraph, $sender_host_name will remain
empty unless both the reverse and forward lookup succeeds, *and* the
forward lookup yields the original IP address. This understanding does
not agree with observed behavior (exim-snapshot-2006-10-16), as the
following ACL fragment/log lines shows:
logwrite = X-debug: host_lookup_deferred=$host_lookup_deferred,
host_lookup_failed=$host_lookup_failed, sender_host_name=$sender_host_name
2006-11-17 11:59:48 X-debug: host_lookup_deferred=1,
host_lookup_failed=0, sender_host_name=sbd7.shopbigdogs.info
2006-11-17 13:28:41 X-debug: host_lookup_deferred=1,
host_lookup_failed=0, sender_host_name=201-243-111-247.dyn.dsl.cantv.net
2006-11-17 13:37:11 X-debug: host_lookup_deferred=1,
host_lookup_failed=0, sender_host_name=98.66.230.200.in-addr.arpa
2006-11-17 13:43:57 X-debug: host_lookup_deferred=1,
host_lookup_failed=0, sender_host_name=85-14-75-17.akk.net.pl
I would consider this a bug either in Exim itself of the Exim
specification. I'll leave it to whoever wrote the relevant
code/documentation to figure out which :-)
If this is indeed and Exim bug, a quick glance at src/host.c would
suggest that the below patch should correct it, though it may have
unforeseen consequences, and I'm not sure if sender_host_address should
be free()-ed?
Bob
--- host.c-orig Sat Nov 18 00:22:45 2006
+++ host.c-new Sat Nov 18 00:23:22 2006
@@ -1792,6 +1792,7 @@
{
HDEBUG(D_host_lookup) debug_printf("temporary error for host name
lookup\n");
host_lookup_deferred = TRUE;
+ sender_host_address = NULL;
return DEFER;
}
else