Postfix longas consultas de DNS

2

Eu uso meu servidor postfix como um retransmissor para outro provedor. Eu cavo um pouco para descobrir por que enviar um email simples leva muito tempo. Eu descubro que o postfix conclui consultas DNS para cada email (30 segundos perdidos):

Apr 30 11:26:50 dev1 postfix/smtp[20917]: connecting to in.mailjet.com port 25
Apr 30 11:26:55 dev1 postfix/smtp[20917]: dns_query: in.mailjet.com (MX): OK
Apr 30 11:26:55 dev1 postfix/smtp[20917]: dns_get_answer: type MX for in.mailjet.com
Apr 30 11:26:55 dev1 postfix/smtp[20917]: dns_get_answer: type MX for in.mailjet.com
Apr 30 11:26:55 dev1 postfix/smtp[20917]: dns_get_answer: type MX for in.mailjet.com
Apr 30 11:26:55 dev1 postfix/smtp[20917]: dns_get_answer: type MX for in.mailjet.com
Apr 30 11:26:55 dev1 postfix/smtp[20917]: dns_get_answer: type MX for in.mailjet.com
Apr 30 11:26:55 dev1 postfix/smtp[20917]: smtp_addr_one: host smtp-ovhfr11.mailjet.com
Apr 30 11:26:55 dev1 postfix/smtp[20917]: lookup smtp-ovhfr11.mailjet.com type A flags 0
Apr 30 11:27:00 dev1 postfix/smtp[20917]: dns_query: smtp-ovhfr11.mailjet.com (A): OK
Apr 30 11:27:00 dev1 postfix/smtp[20917]: dns_get_answer: type A for smtp-ovhfr11.mailjet.com
Apr 30 11:27:00 dev1 postfix/smtp[20917]: smtp_addr_one: host smtp-ovhfr7.mailjet.com
Apr 30 11:27:00 dev1 postfix/smtp[20917]: lookup smtp-ovhfr7.mailjet.com type A flags 0
Apr 30 11:27:05 dev1 postfix/smtp[20917]: dns_query: smtp-ovhfr7.mailjet.com (A): OK
Apr 30 11:27:05 dev1 postfix/smtp[20917]: dns_get_answer: type A for smtp-ovhfr7.mailjet.com
Apr 30 11:27:05 dev1 postfix/smtp[20917]: smtp_addr_one: host smtp-ovhfr8.mailjet.com
Apr 30 11:27:05 dev1 postfix/smtp[20917]: lookup smtp-ovhfr8.mailjet.com type A flags 0
Apr 30 11:27:10 dev1 postfix/smtp[20917]: dns_query: smtp-ovhfr8.mailjet.com (A): OK
Apr 30 11:27:10 dev1 postfix/smtp[20917]: dns_get_answer: type A for smtp-ovhfr8.mailjet.com
Apr 30 11:27:10 dev1 postfix/smtp[20917]: smtp_addr_one: host smtp-ovhfr9.mailjet.com
Apr 30 11:27:10 dev1 postfix/smtp[20917]: lookup smtp-ovhfr9.mailjet.com type A flags 0
Apr 30 11:27:15 dev1 postfix/smtp[20917]: dns_query: smtp-ovhfr9.mailjet.com (A): OK
Apr 30 11:27:15 dev1 postfix/smtp[20917]: dns_get_answer: type A for smtp-ovhfr9.mailjet.com
Apr 30 11:27:15 dev1 postfix/smtp[20917]: smtp_addr_one: host smtp-ovhfr10.mailjet.com
Apr 30 11:27:15 dev1 postfix/smtp[20917]: lookup smtp-ovhfr10.mailjet.com type A flags 0
Apr 30 11:27:20 dev1 postfix/smtp[20917]: dns_query: smtp-ovhfr10.mailjet.com (A): OK
Apr 30 11:27:20 dev1 postfix/smtp[20917]: dns_get_answer: type A for smtp-ovhfr10.mailjet.com
Apr 30 11:27:20 dev1 postfix/smtp[20917]: begin in.mailjet.com address list
Apr 30 11:27:20 dev1 postfix/smtp[20917]: pref   10 host smtp-ovhfr11.mailjet.com/5.196.43.135
Apr 30 11:27:20 dev1 postfix/smtp[20917]: pref   10 host smtp-ovhfr7.mailjet.com/178.32.115.14
Apr 30 11:27:20 dev1 postfix/smtp[20917]: pref   10 host smtp-ovhfr8.mailjet.com/46.105.54.204
Apr 30 11:27:20 dev1 postfix/smtp[20917]: pref   10 host smtp-ovhfr9.mailjet.com/37.59.74.234
Apr 30 11:27:20 dev1 postfix/smtp[20917]: pref   10 host smtp-ovhfr10.mailjet.com/5.196.43.129
Apr 30 11:27:20 dev1 postfix/smtp[20917]: end in.mailjet.com address list
  • Por que o postfix faz essas solicitações para cada e-mail?
  • É uma boa ideia configurar o postfix para usar o primeiro MX disponível com uma entrada de DNS? (e como posso conseguir isso?)
  • Existe uma maneira de dizer ao postfix para armazenar em cache todas essas escavações de DNS por pelo menos uma semana?
por iwalktheline 30.04.2015 / 11:41

2 respostas

3

  1. Seu host não parece estar pesquisando caches de DNS. Deveria ser.
  2. Não
  3. Seu sistema operacional (não o postfix) deve armazenar em cache toda pesquisa de registro de DNS necessária. O NSCD é uma ferramenta comum para armazenar em cache as consultas de "hosts".
por 30.04.2015 / 13:43
2

Por padrão, o valor do parâmetro smtp_host_lookup é dns . Por causa disso, o postfix sempre tentará resolver o domínio do destinatário do registro MX para determinar o destino do próximo salto. O postfix depende do resolvedor da libc para fazer a pesquisa, de modo que o comportamento esperado depende da biblioteca. Por exemplo, o postfix sempre fará pesquisa através do servidor NS definido em /etc/resolv.conf .

Com base nos seus registros acima, parece que você tem problema no seu servidor NS. É um caso anormal quando a consulta DNS única levaria até 5 segundos para retornar o resultado. Aqui, os mesmos logs quando o registro MX de pesquisa postfix de in.mailjet.com . Terminou a pesquisa apenas em 2 segundos.

May  1 00:20:37 dewa postfix/smtp[4002]: dns_query: in.mailjet.com (MX): OK
May  1 00:20:37 dewa postfix/smtp[4002]: dns_get_answer: type MX for in.mailjet.com
May  1 00:20:37 dewa postfix/smtp[4002]: message repeated 4 times: [ dns_get_answer: type MX for in.mailjet.com]
May  1 00:20:37 dewa postfix/smtp[4002]: smtp_addr_one: host smtp-ovhfr9.mailjet.com
May  1 00:20:37 dewa postfix/smtp[4002]: lookup smtp-ovhfr9.mailjet.com type A flags 0
May  1 00:20:37 dewa postfix/smtp[4002]: dns_query: smtp-ovhfr9.mailjet.com (A): OK
May  1 00:20:37 dewa postfix/smtp[4002]: dns_get_answer: type A for smtp-ovhfr9.mailjet.com
May  1 00:20:37 dewa postfix/smtp[4002]: lookup smtp-ovhfr9.mailjet.com type AAAA flags 0
May  1 00:20:37 dewa postfix/smtp[4002]: dns_query: smtp-ovhfr9.mailjet.com (AAAA): Host found but no data record of requested type
May  1 00:20:37 dewa postfix/smtp[4002]: smtp_addr_one: host smtp-ovhfr10.mailjet.com
May  1 00:20:37 dewa postfix/smtp[4002]: lookup smtp-ovhfr10.mailjet.com type A flags 0
May  1 00:20:37 dewa postfix/smtp[4002]: dns_query: smtp-ovhfr10.mailjet.com (A): OK
May  1 00:20:37 dewa postfix/smtp[4002]: dns_get_answer: type A for smtp-ovhfr10.mailjet.com
May  1 00:20:37 dewa postfix/smtp[4002]: lookup smtp-ovhfr10.mailjet.com type AAAA flags 0
May  1 00:20:37 dewa postfix/smtp[4002]: dns_query: smtp-ovhfr10.mailjet.com (AAAA): Host found but no data record of requested type
May  1 00:20:37 dewa postfix/smtp[4002]: smtp_addr_one: host smtp-ovhfr11.mailjet.com
May  1 00:20:37 dewa postfix/smtp[4002]: lookup smtp-ovhfr11.mailjet.com type A flags 0
May  1 00:20:37 dewa postfix/smtp[4002]: dns_query: smtp-ovhfr11.mailjet.com (A): OK
May  1 00:20:37 dewa postfix/smtp[4002]: dns_get_answer: type A for smtp-ovhfr11.mailjet.com
May  1 00:20:37 dewa postfix/smtp[4002]: lookup smtp-ovhfr11.mailjet.com type AAAA flags 0
May  1 00:20:37 dewa postfix/smtp[4002]: dns_query: smtp-ovhfr11.mailjet.com (AAAA): Host found but no data record of requested type
May  1 00:20:37 dewa postfix/smtp[4002]: smtp_addr_one: host smtp-ovhfr7.mailjet.com
May  1 00:20:37 dewa postfix/smtp[4002]: lookup smtp-ovhfr7.mailjet.com type A flags 0
May  1 00:20:37 dewa postfix/smtp[4002]: dns_query: smtp-ovhfr7.mailjet.com (A): OK
May  1 00:20:37 dewa postfix/smtp[4002]: dns_get_answer: type A for smtp-ovhfr7.mailjet.com
May  1 00:20:37 dewa postfix/smtp[4002]: lookup smtp-ovhfr7.mailjet.com type AAAA flags 0
May  1 00:20:38 dewa postfix/smtp[4002]: dns_query: smtp-ovhfr7.mailjet.com (AAAA): Host found but no data record of requested type
May  1 00:20:38 dewa postfix/smtp[4002]: smtp_addr_one: host smtp-ovhfr8.mailjet.com
May  1 00:20:38 dewa postfix/smtp[4002]: lookup smtp-ovhfr8.mailjet.com type A flags 0
May  1 00:20:38 dewa postfix/smtp[4002]: dns_query: smtp-ovhfr8.mailjet.com (A): OK
May  1 00:20:38 dewa postfix/smtp[4002]: dns_get_answer: type A for smtp-ovhfr8.mailjet.com
May  1 00:20:38 dewa postfix/smtp[4002]: lookup smtp-ovhfr8.mailjet.com type AAAA flags 0
May  1 00:20:38 dewa postfix/smtp[4002]: dns_query: smtp-ovhfr8.mailjet.com (AAAA): Host found but no data record of requested type
May  1 00:20:38 dewa postfix/smtp[4002]: begin in.mailjet.com address list
May  1 00:20:38 dewa postfix/smtp[4002]: pref   10 host smtp-ovhfr9.mailjet.com/37.59.74.234
May  1 00:20:38 dewa postfix/smtp[4002]: pref   10 host smtp-ovhfr10.mailjet.com/5.196.43.129
May  1 00:20:38 dewa postfix/smtp[4002]: pref   10 host smtp-ovhfr11.mailjet.com/5.196.43.135
May  1 00:20:38 dewa postfix/smtp[4002]: pref   10 host smtp-ovhfr7.mailjet.com/178.32.115.14
May  1 00:20:38 dewa postfix/smtp[4002]: pref   10 host smtp-ovhfr8.mailjet.com/46.105.54.204

Então, sua melhor aposta para resolver o problema a partir da raiz é descobrir por que seu servidor NS precisa de 5 segundos para procurar a entrada DNS.

Sua solução para usar apenas o resultado único do registro MX não funcionará no postfix. O postfix tentará resolver o registro A de todos os domínios retornados do registro MX de preferência de melhor . Registro MX de in.mailjet.com retorna 5 hosts com preferências iguais. Então, o postfix procurará um registro de cinco hosts.

Para ajudar a acelerar a consulta DNS, você pode usar o NSCD e definir smtp_host_lookup como native (como sugerido por Andy). A outra alternativa é executar o cache de DNS local, como powerdns ou desvinculado .

    
por 01.05.2015 / 10:00