login
Wed 20 of Oct, 2021 (06:16 UTC)

[root@madeira.eng.br ~]#

Linux - It is now safe to turn on your computer

atualizar cache imprimir

Resolvendo o erro deferral: CNAME_lookup_failed_temporarily._(#4.4.3) no Qmail

Criada por: Frederico Madeira, última modificação em: Thu 28 of Jul, 2011 (03:33 UTC)
Observando os logs de um servidor Qmail, encontrei os seguintes eventos:

@400000004e30b45c0701f3f4 starting delivery 8957: msg 99396 to remote xxxxx@wal-mart.com
@400000004e30b45c0702171c status: local 0/10 remote 1/120
@400000004e30b4862059075c delivery 8957: deferral: CNAME_lookup_failed_temporarily._(#4.4.3)/
@400000004e30b48620591ae4 status: local 0/10 remote 0/120
@400000004e30b52d1fcda3c4 starting delivery 8959: msg 99395 to remote xxxxxxx@oi.com.br
@400000004e30b52d1fcdaf7c status: local 0/10 remote 1/120
@400000004e30b557306e951c delivery 8959: deferral: CNAME_lookup_failed_temporarily._(#4.4.3)/
@400000004e30b557306ea8a4 status: local 0/10 remote 0/120


Pesquisando sobre este erro, encontrei diversas referências apontando como causa o tamanho da resposta DNS a consultas feitas aos nomes dos domínios para os quais se deseja enviar os e-mails. Se a resposta do servidor de nomes for maior do que os 512 bytes do pacote UDP, certamente qmail irá gerar o erro em questão.

Dan Bernstein escreveu o Qmail baseado na RFC que determina o tamanho das respostas as consultas DNS em 512 bytes, só que hoje existem algumas extensões da RFC que permitem a utilização de registros do tipo SPF é utilizado no combate ao SPAM e este registro torna a resposta DNS maior do que os 512 bytes definidos inicialmente. Outra questão que pode causar este problema é quando os provedores possuem um número grande de servidores de email, tornando extensa uma consulta pelo registro MX de um determinado domínio (vide exemplo abaixo).

[root@pbxip ~]# dig mx google.com

; <<>> DiG 9.3.6-P1-RedHat-9.3.6-4.P1.el5_4.2 <<>> mx google.com
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2691
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;google.com.			IN	MX

;; ANSWER SECTION:
google.com.		529	IN	MX	50 alt4.aspmx.l.google.com.
google.com.		529	IN	MX	40 alt3.aspmx.l.google.com.
google.com.		529	IN	MX	10 aspmx.l.google.com.
google.com.		529	IN	MX	30 alt2.aspmx.l.google.com.
google.com.		529	IN	MX	20 alt1.aspmx.l.google.com.

;; Query time: 3 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Wed Jul 27 21:08:20 2011
;; MSG SIZE  rcvd: 136

[root@pbxip ~]#


Como solução a este problema, encontramos três alternativas, conforme detalhado abaixo:

1. Aplicar o patch de Christopher K. Davis' disponível em http://www.ckdhr.com/ckd/qmail-103.patch

Este procedimento atendeu o meu problema. É necessário aplicar o patch ao arquivo dns.c do qmail e em seguida recompilá-lo. Para isso o serviço qmail deve estar parado. Após aplicar o patch, faça um restart no serviço de rede para limpar o cache local e forçar uma nova consulta.
Para aplicar o patch, entre no diretório de instalação do qmail e siga os paços abaixo:

wget http://www.ckdhr.com/ckd/qmail-103.patch
cd netqmail-1.05
patch -p1 < ../qmail-103.patch
patching file dns.c
Hunk #1 succeeded at 19 (offset -2 lines).
Hunk #3 succeeded at 64 (offset -2 lines).
/etc/init.d/qmail stop
make
make setup check
/etc/init.d/qmail start
/etc/init.d/qmail doqueue

Verifique nos logs se a fila foi processada.

2. Alterar o tamanho do buffer do pacote para 65536

Esta é a solução mais simples, no entanto é a que desperdiça mais memória, dependendo do tamanho do seu sistema, ela pode trazer algum problema:
Para executá-la, basta entrar no diretório de instalação do qmail, ediar o arquivo dns.c e alterar o valor PACKETSZ pelo número 65536. Em seguida rodar o comando make setup check

3. Rodar no servidor o aplicativo dnscache do servidor DNS djbdns

A instalação e configuração do dnscache está detalhada e explicada no site do djbdns.
Particularmente esta opção não me atendeu, pois durante o processo de resolução de nomes para o qmail, o dnscache retornou os seguintes erros:

@400000004e30ca982f6b07cc servfail oi.com.br. input/output error
@400000004e30ca982f6b270c sent 266 43


Referências

Documentação do Qmail
http://techblog.bujnowski.com.br/?p=11
Discussão na Lista Masoch-L
Site do projeto djbdns


Comentários