[exim-dev] $host_lookup_deferred=1 and $sender_host_name not…

Top Page
Delete this message
Reply to this message
Author: B. Johannessen
Date:  
To: exim-dev
Subject: [exim-dev] $host_lookup_deferred=1 and $sender_host_name not empty
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