Erro de postfix: nome do host ou do domínio não encontrado

4

Estou usando o Raspbian e o serviço Postfix (versão 2.9.6) parece ser executado automaticamente quando eu inicializo, mas se eu quiser enviar um email, o email permanecerá na fila:

$ mailq
26CB72201F    443 Sat Sep 19 19:44:17   [email protected]
(Host or domain name not found. Name service error for name=smtp.gmail.com type=A: Host not found, try again)
                                        [email protected]

Se eu reiniciar o serviço ( sudo service postfix restart ), os e-mails funcionarão até a próxima inicialização.

Por quê? Qual a diferença?

Durante a instalação do Postfix eu escolhi a configuração “Internet com o smarthost”, mas segui um tutorial para… Internet Site ”para finalizar a configuração, então esse pode ser o problema (?) Eu só quero enviar emails.

UPDATE: O problema pode ser que o Postfix seja executado antes que o Wi-Fi seja conectado.

    
por clemtoy 19.09.2015 / 19:56

2 respostas

2

O problema é que o Postfix verifica /etc/resolv.conf antes de o WiFi ser conectado. Portanto, /var/spool/etc/postfix/resolv.conf fica vazio depois que a inicialização e os e-mails não podem ser enviados.

Para resolver o problema, desativei o serviço postfix:

sudo update-rc.d postfix disable

... e escrevi este script para esperar o fim da conexão Wi-Fi antes de iniciar o Postfix (salvo em /usr/local/bin/postfix_wifi.sh ):

#!/usr/bin/sh

host="smtp.gmail.com"
port=587

until nc $host $port -w 5
do
    sleep 10
done

sudo service postfix start
exit 0

... e adicionei esta linha a /etc/rc.local para que o script seja executado na inicialização:

/usr/local/bin/postfix_wifi.sh &
    
por 20.09.2015 / 21:24
12

Resposta mais curta.

Com um "Host não encontrado, tente novamente", isso pode significar que o servidor está com problemas de resolução de DNS ou o próprio Postfix está com problemas de resolução de DNS. Mas esse é o núcleo do que deve ser limpo.

Quanto a como esclarecê-lo, sua pergunta não fornece detalhes suficientes sobre o sistema operacional ou a configuração básica para fornecer uma resposta sucinta. Você parece estar rodando o Ubuntu / Debian se você está rodando sudo service postfix restart , mas que outros detalhes você pode fornecer?

Resposta mais longa.

Possivelmente conectado a resolv.conf desaparecendo misteriosamente.

Com base no erro:

Host or domain name not found. Name service error for name=smtp.gmail.com type=A: Host not found, try again.

Parece que você está usando os servidores SMTP do Gmail para e-mails enviados. Não sabe qual é o seu sistema operacional básico, mas com base em esta resposta nos fóruns do Ubuntu . ser um problema com a falta de resolv.conf na reinicialização; ênfase ousada é minha:

I have the same problem on Ubuntu 14.04 LTS. When postfix is installed it copies /etc/resolv.conf to /var/spool/postfix/etc/resolve.conf. but for some reason after a reboot/restart the file is not copied and you get the blank file with only the header.

A solução temporária sugerida é copiar o sistema operacional principal resolv.conf para o diretório do Postfix:

sudo cp /etc/resolv.conf /var/spool/postfix/etc/resolv.conf

Esta não é uma solução permanente, parece, mas pelo menos é algo para verificar.

Possivelmente conectado a configurações inet_protocols .

Além disso, esta resposta na falha do servidor explica uma situação semelhante que se concentra no suporte a IPv6. Certifique-se de que o seu problema não esteja relacionado ao IPv6, pois o erro é sobre um registro “type = A” que é IPv4 e para IPv6 seria “type = AAAA”. Mas, dito isso, vale a pena experimentar o ajuste de inet_protocols configurando no seu arquivo de configuração do Postfix. Aqui está o que a documentação oficial do Postfix explica:

When IPv4 support is enabled via the inet_protocols parameter, Postfix will look up DNS type A records, and will convert IPv4-in-IPv6 client IP addresses (::ffff:1.2.3.4) to their original IPv4 form (1.2.3.4). The latter is needed on hosts that pre-date IPV6_V6ONLY support (RFC 3493).

When IPv6 support is enabled via the inet_protocols parameter, Postfix will do DNS type AAAA record lookups.

When both IPv4 and IPv6 support are enabled, the Postfix SMTP client will choose the protocol as specified with the smtp_address_preference parameter. Postfix versions before 2.8 attempt to connect via IPv6 before attempting to use IPv4.

Examples:

  • inet_protocols = ipv4
  • inet_protocols = all (DEFAULT)
  • inet_protocols = ipv6
  • inet_protocols = ipv4, ipv6

Supondo que você esteja em uma configuração do Ubuntu / Debian, abra a configuração aqui:

sudo nano /etc/postfix/main.cf

E encontre - ou defina o valor - na linha inet_protocols para ser este:

inet_protocols = ipv4

Ou seja:

inet_protocols = all

Em seguida, reinicie o serviço Postfix, ou o servidor inteiro, e veja se isso esclarece:

sudo service postfix restart
    
por 19.09.2015 / 20:29