Como reduzir o período de tempo limite do DNS do Sendmail

3

Eu tenho um problema com o sendmail período de tempo limite do DNS ao tentar enviar para um endereço de e-mail que tem um problema de DNS. Digamos que o endereço de e-mail problemático seja [email protected]

Posso ver que há um problema de DNS com este domínio usando:

>host -t mx example.com
;; connection timed out; no servers could be reached

Eu posso testar e cronometrar a chamada do sendmail para o endereço de e-mail problemático usando:

> time echo "This is a test message" | /usr/lib/sendmail [email protected] [email protected]
real 2m36.252s
user 0m0.004s
sys  0m0.005s

Atualmente, leva 2m36s para o sendmail ao tempo limite! Isso faz com que as páginas da Web do PHP que tentam enviar para esse endereço de e-mail sejam interrompidas e, eventualmente, retornem um erro para o navegador.

Minha pergunta é: como reduzir esse tempo limite?

Eu vi algumas configurações de tempo limite relacionadas ao sendmail:

> grep resolver /etc/mail/sendmail.cf
Timeout.resolver.retrans=5s
Timeout.resolver.retry=4

O Sendmail parece estar configurado para tentar novamente 4 vezes, com um atraso de 5 segundos em cada retransmissão.

Mas não encontrei o período de tempo limite real do DNS?

Para referência: Isto está ocorrendo no servidor Red Hat Enterprise Linux versão 5.2, sendmail 8.13.8, Linux Kernel: 2.6.18, Apache versão: 2.2.3, versão PHP: 5.3.0 . Observação: Esta pergunta é uma continuação de atrasos Sendmail em alguns endereços de e-mail

    
por Tom 09.12.2009 / 16:00

1 resposta

1

Como uma solução rápida, você pode mexer com seu /etc/resolv.conf. É claro que isso muda a forma como o resolvedor de sistemas funciona, isso não é um problema específico do sendmail.

timeout: n
    sets the amount of time the resolver will wait for a response from a remote name server before retrying the query via a different name server. Measured in seconds, the default is RES_TIMEOUT (see <resolv.h> ). 
attempts: n
    sets the number of times the resolver will send a query to its name servers before giving up and returning an error to the calling application. The default is RES_DFLRETRY (see <resolv.h> ). 

A longo prazo, a solução acima não é tão boa. A configuração do servidor DNS está quebrada e precisa ser corrigida. Se houver uma consulta sobre MX / domínio não existente, o servidor deverá responder RAPIDAMENTE com NXDOMAIN. Não deve esperar tanto tempo, pois geralmente causa todo tipo de problemas com muitos programas (sendmail para iniciantes, mas tipicamente também sshd e NFS).

    
por 09.12.2009 / 16:15