Error de Postfix: Host o nombre de dominio no encontrado


4

Estoy usando Raspbian y el servicio Postfix (versión 2.9.6) parece ejecutarse automáticamente cuando inicio, pero si quiero enviar un correo, el correo electrónico permanece en la cola:

$ mailq
26CB72201F    443 Sat Sep 19 19:44:17   user@mail.example.com
(Host or domain name not found. Name service error for name=smtp.gmail.com type=A: Host not found, try again)
                                        someone@gmail.com

Si reinicio el servicio ( sudo service postfix restart ) entonces los correos electrónicos funcionan hasta el próximo arranque.

¿Por qué? ¿Cuál es la diferencia?

Durante la instalación de Postfix, elegí la configuración "Internet con smarthost" pero luego seguí un tutorial para ... Sitio de Internet "para finalizar la configuración, por lo que este podría ser el problema (?) Solo quiero enviar correos electrónicos.

ACTUALIZAR: El problema podría ser que Postfix se ejecute antes de que se conecte el Wi-Fi.


Me pregunto si este nombre de servidor se resolvió cuando se inicia el sistema, pero ¿no se puede acceder a su servidor de nombres?
Thomas Weinbrenner

Respuestas:


12

Una respuesta más corta.

Con un "Host no encontrado, inténtelo de nuevo". Esto podría significar que su servidor tiene problemas de resolución de DNS, o Postfix en sí tiene problemas de resolución de DNS Pero ese es el núcleo de lo que hay que limpiar.

En cuanto a cómo resolverlo, su pregunta no proporciona suficientes detalles sobre su sistema operativo base o configuración para dar una respuesta sucinta Parece que estás ejecutando Ubuntu / Debian si estás ejecutando sudo service postfix restart, pero que otros detalles puede proporcionar?

Respuesta más larga

Posiblemente conectado a resolv.conf misteriosamente desapareciendo.

Basado en el error:

Host o nombre de dominio no encontrado. Error de servicio de nombre para   name = smtp.gmail.com type = A: Host no encontrado, intente nuevamente.

Parece que estás usando los servidores SMTP de Gmail para el correo saliente. No estoy seguro de cuál es tu sistema operativo base, pero basado en esta respuesta en los foros de Ubuntu Esto parece ser un problema con un desaparecido resolv.conf en reiniciar El énfasis audaz es mío:

Tengo el mismo problema en Ubuntu 14.04 LTS. Cuando se instala postfix   se copia /etc/resolv.conf a /var/spool/postfix/etc/resolve.conf.   pero por alguna razón después de un reinicio / reinicio, el archivo no se copia y   se obtiene el archivo en blanco con sólo el encabezado.

La solución temporal sugerida es copiar el sistema operativo principal. resolv.conf al directorio de Postfix:

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

Esta no es una solución permanente, pero al menos es algo que debe revisarse.

Posiblemente conectado a inet_protocols ajustes

también esta respuesta en Server Fault explica una situación similar que se centra en el soporte de IPv6. Bastante seguro de que su problema no está relacionado con IPv6 ya que el error se trata de un registro "tipo = A" que es IPv4 y para IPv6 sería "tipo = AAAA". inet_protocols configuración en su archivo de configuración Postfix. Esto es lo que explica la documentación oficial de Postfix:

Cuando el soporte de IPv4 se habilita a través del parámetro inet_protocols, Postfix   buscará registros de tipo A de DNS y convertirá el cliente IPv4-in-IPv6   Direcciones IP (:: ffff: 1.2.3.4) a su formato IPv4 original (1.2.3.4).   Esto último es necesario en los hosts que son anteriores a IPV6_V6ONLY.   3493).

Cuando la compatibilidad con IPv6 se habilita a través del parámetro inet_protocols, Postfix   Hará búsquedas de registros tipo AAAA de DNS.

Cuando tanto el soporte de IPv4 como el de IPv6 están habilitados, el cliente SMTP de Postfix   elegirá el protocolo como se especifica con el smtp_address_preference   parámetro. Las versiones de Postfix anteriores a 2.8 intentan conectarse a través de IPv6   Antes de intentar utilizar IPv4.

Ejemplos:

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

Suponiendo que está en una configuración de Ubuntu / Debian, abra la configuración aquí:

sudo nano /etc/postfix/main.cf

Y encuentra, o establece el valor, a la inet_protocols línea para ser o esto:

inet_protocols = ipv4

O sea esto:

inet_protocols = all

Luego reinicie el servicio Postfix, o todo el servidor, y vea si eso aclara las cosas:

sudo service postfix restart

2

El problema es que Postfix comprueba /etc/resolv.conf antes de que se conecte el WiFi. Por lo tanto, /var/spool/etc/postfix/resolv.conf permanece vacío después de que el arranque y los correos no pueden ser enviados.

Para resolver el problema, deshabilité el servicio postfix:

sudo update-rc.d postfix disable

... y escribí este script para esperar el final de la conexión Wi-Fi antes de iniciar Postfix (guardado en /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

... y agregué esta línea a /etc/rc.local para que el script se ejecute en el arranque:

/usr/local/bin/postfix_wifi.sh &

¡Muy, muy agradable! Genial ver que resolviste esto por tu cuenta.
JakeGould

¡Gracias! Esta solución está en la misma línea que la tuya y la resolví por mí: unix.stackexchange.com/a/272512/195308
Peter Becich
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.