Exim diz que a pesquisa de DNS foi bem-sucedida, mas também diz que "a pesquisa de host não foi concluída"

2

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?

    
por LordOfThePigs 10.09.2014 / 01:18

3 respostas

4

O resolvedor de DNS recursivo que você está usando (aquele em 10.0.2.3 ) está gravemente corrompido. Em seu comando dig, você está solicitando o registro MX . Mas envia uma resposta contendo dois A registros. Isso nem tudo acontece porque o domínio não tem um registro MX . Acabei de verificar e, de fato, há um registro MX nesse domínio. Além disso, dig está avisando que o pacote de resposta está malformado em WARNING: Message has 1 extra bytes at end .

Eu recomendo que você pare de usar esse servidor DNS defeituoso. Tente colocar outro resolvedor de DNS em /etc/resolv.conf . Eu tenho uma boa experiência com o uso de 8.8.8.8 .

    
por 10.09.2014 / 22:52
1

Os registros MX do DNS devem apontar para nomes, não para endereços IP. Parece que você pode precisar da opção allow_mx_to_ip como solução alternativa.

    
por 10.09.2014 / 11:34
1

Você tem duas perguntas específicas e eu responderei uma por vez:

  1. A mensagem sem nome de host encontrado para o endereço IP 10.0.2.2 significa apenas que, quando o host 10.0.2.2 está conectado à porta 25 no servidor exim, o exim fez uma pesquisa rDNS desse O endereço IP e o DNS responderam com NXDOMAIN (na verdade, uma resposta que significa NXDOMAIN). Não tem relação se Exim aceita ou não a mensagem.

  2. A mensagem 451 Problema local temporário é o Exim informando que está configurado para fazer algumas coisas quando o email é enviado através dele e uma dessas coisas está falhando. Você não tem um registro MX nesse domínio, então você está confiando em algo chamado Um recuo de registro, o que é aceitável de acordo com o RFC, mas não é aconselhável fazê-lo. No final, o servidor Exim determinou que o domínio estava inacessível. Verifique se sua rede está configurada corretamente e se você realmente pode acessar os endereços IP que ela apresenta.

Eu posso estar enganado sobre isso, mas acho que a mensagem "pesquisa de DNS bem-sucedida" não significa que ela obteve o registro solicitado. Significa apenas que Exim pediu e obteve uma resposta que não era uma rejeição. A linha depois disso é quando o Exim está realmente analisando a resposta e, por algum motivo, determina que não obteve a resposta que queria.

    
por 10.09.2014 / 21:35