[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: ip-port.torhosts.nighteffect.us and exim

On Thu, 26 Apr 2007 08:45:39 -0700 Mike Cardwell 
<tor@xxxxxxxxxxxxxxxxxx> wrote:
>I've been looking into how to use this with Exim4. I just thought 
>share it here for the benefit of the archives.
>warn dnslists    = 
>     log_message = This connection is coming from a tor node that 
>allows exiting to this ip/port combination
>The ACL simply logs the connection, it doesn't perform a 
>rejection, or
>adding a header to the message or anything else. That part is left 
>the reader or the exim users mailing list.
>It was made slightly more difficult to use by the fact that I had 
>reverse the 4 octets of the IP address of the host being connected 
>to. I
>understand why this was done though and agree with it.
>Just out of interest, why do lookups that return positive results 
>such a long time? This is what I typically get:
>server:~# time host
>has address
>port.torhosts.nighteffect.us not found: 2(SERVFAIL)
>port.torhosts.nighteffect.us not found: 2(SERVFAIL)
>real    0m23.451s
>user    0m0.030s
>sys     0m0.010s
>The first line of response is pretty quick, then there are long 
>before each SERVFAIL...
>If the lookup returns an NXDOMAIN, there are no SERVFAILS so the 
>are much faster. I'm not a DNS expert so I'm not sure what is 
>that causes the SERVFAIL's...

Hi Mike,

There are a couple of things going on here. First, the reason why 
you see the first line returned from the 'host' command as 
successful, followed by two 'SERVFAIL' lines is that the 'host' 
command, by default, sends an 'A' request followed by an 'AAAA' 
(IPv6 Lookup) and 'MX' (Mail Exchanger) request. The DNSEL server 
only supports 'A' requests, and so in the case of the second and 
third queries, the DNSEL server is actually returning a 'NOTIMP' 
(Not Implemented) error message, and your local upstream DNS server 
is returning that to you as a 'SERVFAIL' error message. If you run 
the 'host' command with the "Type" flag set, you can prevent 'host' 
from sending the 'AAAA' and 'MX' requests altogether, eliminating 
the two error lines. For example, your query could be:

time host -t A

Second, to address the speed issue, it's likely that your local 
upstream DNS server has some method of operation that really slows 
things down when there is an error returned from the DNSEL server, 
like the two 'NOTIMP' messages I described above. It may be 
retrying those same 'AAAA' and 'MX' requests several times before 
returning the 'SERVFAIL' message to you, holding things up a bit. 
So, the good news is, the speed issue is probably already gone just 
by you using the "Type" flag with the 'host' command, like I 
discussed above. Personally, I know there is no extra delay from 
the DNSEL server when it's returning a 'SERVFAIL', 'NOTIMP', or 
'NXDOMAIN' message, as opposed to a successful lookup.

If necessary, for troubleshooting, you can easily see where the 
delay is occuring by taking your upstream DNS provider out of the 
loop temporarily by telling the 'host' command to talk to the DNSEL 
server directly. So, you could do this (If you still wanted it to 
do the 'A', 'AAAA', and 'MX' requests:

time host

Or do this (To exclude the 'AAAA' and 'MX' requests):

time host -t A

This will let you see the real speed that the DNSEL server is 
responding with.

Please let me know if you have any other questions. I hope that 

Best regards,

Joe Kowalski