2

I'm trying to forward the emails from my Debian server to my usual email address. I'm probably missing something important, as I can't find a good solution online looking for the following error message:

dnslookup defer (-1): host lookup did not complete

I found this answer but it did not help me: https://serverfault.com/questions/370489/exim-cannot-send-to-remote-mail-servers

I have a user Debian-exim:

uid=101(Debian-exim) gid=103(Debian-exim) groups=103(Debian-exim)

I don't think that port 25 is filtered on my network. Anyway, I think that it is a DNS issue for now. I am not sure if the following server here is still working and can't find another address to test with:

telnet 209.85.225.27 25
Trying 209.85.225.27...
telnet: Unable to connect to remote host: Connection timed out

This works:

echo "This is a test." | mail -s Testing user@localhost

This does not:

echo "This is a test." | mail -s Testing my@mail.eu
echo "This is a test." | mail -s Testing my@gmail.com

In /var/log/exim4/mainlog I got:

1YDDm0-0007mZ-BS <= user@example.dynu.com U=user P=local S=464
1YDDm0-0007mZ-BS == my@mail.eu R=dnslookup defer (-1): host lookup did not complete
1YDE1X-0007v5-EG <= user@example.dynu.com U=user P=local S=456

And in /etc/resolv.conf:

domain home
search home
nameserver 192.168.1.1

And finally (The interesting part seems to be at the very end):

sudo exim -bt -d-resolver my@mail.eu
[sudo] password for user: 
Exim version 4.80 uid=0 gid=0 pid=31872 D=fbb95cfd
Berkeley DB: Berkeley DB 5.1.29: (October 25, 2011)
Support for: crypteq iconv() IPv6 GnuTLS move_frozen_messages DKIM
Lookups (built-in): lsearch wildlsearch nwildlsearch iplsearch cdb dbm dbmjz dbmnz dnsdb dsearch nis nis0 passwd
Authenticators: cram_md5 plaintext
Routers: accept dnslookup ipliteral manualroute queryprogram redirect
Transports: appendfile/maildir/mailstore autoreply lmtp pipe smtp
Fixed never_users: 0
Size of off_t: 8
Compiler: GCC [4.6.3]
Library version: GnuTLS: Compile: 2.12.20
                         Runtime: 2.12.20
Library version: PCRE: Compile: 8.30
                       Runtime: 8.30 2012-02-04
Total 13 lookups
WHITELIST_D_MACROS: "OUTGOING"
TRUSTED_CONFIG_LIST: "/etc/exim4/trusted_configs"
changed uid/gid: forcing real = effective
  uid=0 gid=0 pid=31872
  auxiliary group list: <none>
seeking password data for user "uucp": cache not available
getpwnam() succeeded uid=10 gid=10
changed uid/gid: calling tls_validate_require_cipher
  uid=101 gid=103 pid=31873
  auxiliary group list: <none>
tls_validate_require_cipher child 31873 ended: status=0x0
configuration file is /var/lib/exim4/config.autogenerated
log selectors = 00000ffc 00612001
trusted user
admin user
seeking password data for user "mail": cache not available
getpwnam() succeeded uid=8 gid=8
user name "root" extracted from gecos field "root"
originator: uid=0 gid=0 login=root name=root
sender address = root@example.dynu.com
Address testing: uid=0 gid=103 euid=0 egid=103
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Testing my@mail.eu
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Considering my@mail.eu
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
routing my@mail.eu
--------> hubbed_hosts router <--------
local_part=my domain=mail.eu
checking domains
expansion of "${if exists{/etc/exim4/hubbed_hosts}{partial-lsearch;/etc/exim4/hubbed_hosts}fail}" forced failure: assume not in this list
hubbed_hosts router skipped: domains mismatch
--------> dnslookup_relay_to_domains router <--------
local_part=my domain=mail.eu
checking domains
mail.eu in "@:localhost:example.dynu.com"? no (end of list)
mail.eu in "empty"? no (end of list)
mail.eu in "! +local_domains : +relay_to_domains"? no (end of list)
dnslookup_relay_to_domains router skipped: domains mismatch
--------> dnslookup router <--------
local_part=my domain=mail.eu
checking domains
cached no match for +local_domains
cached lookup data = NULL
mail.eu in "! +local_domains"? yes (end of list)
R: dnslookup for my@mail.eu
calling dnslookup router
dnslookup router called for my@mail.eu
  domain = mail.eu
DNS lookup of mail.eu (MX) gave TRY_AGAIN
mail.eu in dns_again_means_nonexist? no (option unset)
returning DNS_AGAIN
dnslookup router: defer for my@mail.eu
  message: host lookup did not complete
my@mail.eu cannot be resolved at this time: host lookup did not complete
search_tidyup called
>>>>>>>>>>>>>>>> Exim pid=31872 terminating with rc=1 >>>>>>>>>>>>>>>>

Could someone help me out here?

Thanks a lot!

4

The standard dnslookup router of exim uses an algorithm to decide how to resolve an email address (this is detailed in the Exim manual on the chapter detailing dnslookup router). Looking at the results from dig, this seems fine:

$ dig mail.eu mx

; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> mail.eu mx
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5467
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 4

;; QUESTION SECTION:
;mail.eu.           IN  MX

;; ANSWER SECTION:
mail.eu.        86400   IN  MX  10 in1-smtp.messagingengine.com.
mail.eu.        86400   IN  MX  20 in2-smtp.messagingengine.com.

;; ADDITIONAL SECTION:
in1-smtp.messagingengine.com. 72474 IN  A   66.111.4.70
in1-smtp.messagingengine.com. 72474 IN  A   66.111.4.73
in1-smtp.messagingengine.com. 72474 IN  A   66.111.4.72
in1-smtp.messagingengine.com. 72474 IN  A   66.111.4.71

;; Query time: 33 msec
;; SERVER: 192.168.0.1#53(192.168.0.1)
;; WHEN: Mon Jan 19 16:51:24 2015
;; MSG SIZE  rcvd: 158

This means that your local resolver (192.168.1.1) is either returning a TRY_AGAIN response for the SRV request (have you got SRV enabled in your exim configuration) OR has "negatively cached" a failed result (was your DSL down at the time it happened?).

I would suggest testing around your resolver by using an open DNS server (such as Google's), by adding:

nameserver 8.8.8.8

before your

nameserver 192.168.1.1

statement in your resolv.conf and then try running you exim -bt user@mail.eu test again to rule out this resolvers response.

If using Google's DNS cache server solves the issue, then a restart of your DNS resolver (the device at 192.168.1.1) to see if that solves the ongoing issue (don't forget to comment out the Google cache entry before re-testing!)

There are other options detailed in that chapter if you continue to get errors even when using Google's DNS cache servers (or if you prefer NOT to use an external DNS resolver). Note that by adding the nameserver line all DNS lookups will be passed to Google for resolving. This will add a small delay to DNS requests as well as passing on all DNS requests your host will make to Google - not everyone's idea of a "Good Thing"™.

  • Thanks a lot. I tried to use google's DNS and the dnslookup works now! I don't know why I didn't think about that... I still have an issue since I now got "No route to host", "Connection timed out" and "Network is unreachable" errors. The command "telnet 2a00:1450:4010:c05::1b 25" gives me the same errors. I guess port 25 is filtered here then. – bg666 Jan 19 '15 at 17:30
  • If they do not filter icmp/udp, you can test if port 25 is blocked. Try running a traceroute 2a00:1450:4010:c05::1b. If that shows many hops and reaches the destination, then yes most likely port 25 outbound is blocked. – Drav Sloan Jan 19 '15 at 17:33
  • Oh and don't forget to accept the answer if you think this has solved the immediate issue you were facing, thanks! ;) – Drav Sloan Jan 19 '15 at 17:36
  • I sent an email to the IT support to make sure. Thanks a lot! – bg666 Jan 19 '15 at 17:51
  • Wonderful tip the 8.8.8.8, I've been stuck for a whole day until I tried your tip. – Basil A Mar 29 '17 at 17:13

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.