Estou tentando enviar e-mails de notificação automática para os usuários do meu website. Esses e-mails são enviados aos usuários por um daemon personalizado que os envia via exim 4. O papel do Exim nisso é simplesmente retransmitir o e-mail para o servidor de e-mail associado ao endereço dos destinatários. Todos os emails enviados devem ser retransmitidos. Não há e-mails locais nem mensagens recebidas.
No entanto, quando tento enviar e-mails, meu daemon sempre recebe a seguinte resposta:
com.sun.mail.smtp.SMTPAddressFailedException: 451 Temporary local problem - please try later
Em /var/log/exim4/mainlog
, tenho as seguintes linhas
2014-09-09 22:30:50 no host name found for IP address 10.0.2.2
2014-09-09 22:30:50 H=(lotp-lanbox) [10.0.2.2] F=<[email protected]> temporarily rejected RCPT <[email protected]>: host lookup did not complete
(Observe que 10.0.2.2 é o endereço IP do host no qual o daemon emissor está instalado.)
Essa mensagem é estranha, mas falta detalhes. Aqui está outro comando de depuração que eu iniciei:
user@host:~$ exim4 -bt -d-resolver [email protected]
Exim version 4.82 uid=0 gid=0 pid=14035 D=fbb95cfd
Berkeley DB: Berkeley DB 5.3.28: (September 9, 2013)
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.8.2]
Library version: GnuTLS: Compile: 2.12.23
Runtime: 2.12.23
Library version: PCRE: Compile: 8.31
Runtime: 8.31 2012-07-06
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=14035
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=109 gid=116 pid=14036
auxiliary group list: <none>
tls_validate_require_cipher child 14036 ended: status=0x0
configuration file is /var/lib/exim4/config.autogenerated
log selectors = 00000ffc 00632001
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@dev
Address testing: uid=0 gid=116 euid=0 egid=116
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Testing [email protected]
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Considering [email protected]
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
routing [email protected]
--------> hubbed_hosts router <--------
local_part=foobar domain=romandie.com
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=foobar domain=romandie.com
checking domains
romandie.com in "@:localhost"? no (end of list)
romandie.com in "*"? yes (matched "*")
romandie.com in "! +local_domains : +relay_to_domains"? yes (matched "+relay_to_domains")
R: dnslookup_relay_to_domains for [email protected]
calling dnslookup_relay_to_domains router
dnslookup_relay_to_domains router called for [email protected]
domain = romandie.com
DNS lookup of romandie.com (MX) succeeded
dnslookup_relay_to_domains router: defer for [email protected]
message: host lookup did not complete
[email protected] cannot be resolved at this time: host lookup did not complete
search_tidyup called
>>>>>>>>>>>>>>>> Exim pid=14035 terminating with rc=1 >>>>>>>>>>>>>>>>
Aqui está o extrato que parece particularmente estranho para mim (a partir do final dessa saída):
dnslookup_relay_to_domains router called for [email protected]
domain = romandie.com
DNS lookup of romandie.com (MX) succeeded
dnslookup_relay_to_domains router: defer for [email protected]
message: host lookup did not complete
[email protected] cannot be resolved at this time: host lookup did not complete
Como é possível que a pesquisa de DNS seja bem-sucedida e não concluída? O que estou fazendo errado?
Eu tentei fazer pesquisas de DNS usando dig
da máquina na qual o exim4 está instalado e os resultados parecem bons para mim:
user@host:~$ dig mx romandie.com
;; Warning: Message parser reports malformed message packet.
; <<>> DiG 9.9.5-3-Ubuntu <<>> mx romandie.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36151
;; flags: qr aa rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: Message has 1 extra bytes at end
;; QUESTION SECTION:
;romandie.com. IN MX
;; ANSWER SECTION:
romandie.com. 3600 IN A 37.35.105.169
romandie.com. 3600 IN A 37.35.105.166
;; Query time: 19 msec
;; SERVER: 10.0.2.3#53(10.0.2.3)
;; WHEN: Tue Sep 09 23:14:45 UTC 2014
;; MSG SIZE rcvd: 63
A pesquisa em si parece bem.
Por que o exim está dizendo que está tendo sucesso e falhando ao mesmo tempo?