web-dev-qa-db-fra.com

Erreur Postfix: nom d'hôte ou de domaine introuvable.

J'utilise Raspbian et le service Postfix (version 2.9.6) semble être exécuté automatiquement lorsque je démarre, mais si je veux envoyer un courrier, celui-ci reste dans la file d'attente:

$ 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]

Si je redémarre le service (Sudo service postfix restart), les e-mails fonctionnent jusqu'au prochain démarrage.

Pourquoi? Quelle est la différence?

Lors de l’installation de Postfix, j’ai choisi la configuration "Internet avec smarthost", mais j’ai suivi un tutoriel pour… Site Internet "pour terminer la configuration. C’est peut-être le problème (?) Je veux juste envoyer des courriels.

PDATE: Le problème peut être que Postfix est exécuté avant que le Wi-Fi ne soit connecté.

4
clemtoy

Le problème est que Postfix vérifie /etc/resolv.conf avant que le WiFi soit connecté. Par conséquent, /var/spool/etc/postfix/resolv.conf reste vide après le démarrage et les mails ne peuvent pas être envoyés.

Pour résoudre le problème, j'ai désactivé le service postfix:

Sudo update-rc.d postfix disable

… Et j'ai écrit ce script pour attendre la fin de la connexion Wi-Fi avant de démarrer Postfix (enregistré dans /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

… Et j'ai ajouté cette ligne à /etc/rc.local pour que le script soit exécuté au démarrage:

/usr/local/bin/postfix_wifi.sh &
2
clemtoy

Réponse plus courte.

Si l'hôte est introuvable, essayez à nouveau. Cela peut signifier que votre serveur a des problèmes de résolution DNS ou que Postfix lui-même a des problèmes de résolution DNS. Mais c’est là le cœur de ce qui doit être nettoyé.

En ce qui concerne la clarification, votre question ne fournit pas suffisamment de détails sur votre système d’exploitation ou votre système de base pour donner une réponse succincte. Vous semblez utiliser Ubuntu/Debian si vous utilisez Sudo service postfix restart, mais quels autres détails pouvez-vous fournir?

Réponse plus longue.

Peut-être connecté à resolv.conf en train de disparaître mystérieusement.

Basé sur l'erreur:

Nom d'hôte ou de domaine introuvable. Erreur de service de nom pour nom = smtp.gmail.com type = A: hôte introuvable, réessayez.

Il semble que vous utilisiez les serveurs SMTP de Gmail pour le courrier sortant. Vous ne savez pas quel est votre système d'exploitation de base, mais en vous basant sur cette réponse sur les forums Ubunt , il semble y avoir un problème avec un resolv.conf manquant au redémarrage; l'accent gras est le mien:

J'ai le même problème sur Ubuntu 14.04 LTS. Lorsque postfix est installé, il copie /etc/resolv.conf dans /var/spool/postfix/etc/resolve.conf. mais pour une raison quelconque, après un redémarrage/redémarrage, le fichier n'est pas copié et vous obtenez le fichier vide avec uniquement l'en-tête.

La solution temporaire suggérée consiste à copier le système d'exploitation principal resolv.conf dans le répertoire de Postfix:

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

Ce n’est pas une solution permanente, semble-t-il, mais au moins c’est quelque chose à vérifier.

Peut-être connecté aux paramètres inet_protocols.

De plus, cette réponse sur Server Fault explique une situation similaire centrée sur la prise en charge d'IPv6. Vous êtes presque certain que votre problème n'est pas lié à IPv6, car l'erreur concerne un enregistrement "type = A", qui est IPv4. Pour IPv6, il s'agirait de "type = AAAA". Cela dit, cela pourrait valoir la peine d'essayer d'ajuster la inet_protocols dans votre fichier de configuration Postfix. Voici ce que la documentation officielle de Postfix explique:

Lorsque la prise en charge IPv4 est activée via le paramètre inet_protocols, Postfix recherchera les enregistrements DNS de type A et convertira les adresses IP du client IPv4-in-IPv6 (:: ffff: 1.2.3.4) en leur forme IPv4 d'origine (1.2.3.4). Ce dernier est nécessaire sur les hôtes antérieurs à la prise en charge par IPV6_V6ONLY (RFC 3493).

Lorsque la prise en charge IPv6 est activée via le paramètre inet_protocols, Postfix effectuera des recherches d'enregistrement de type DNS AAAA.

Lorsque les supports IPv4 et IPv6 sont activés, le client SMTP de Postfix choisit le protocole spécifié avec le paramètre smtp_address_preference. Les versions de Postfix antérieures à la version 2.8 tentent de se connecter via IPv6 avant d'utiliser IPv4.

Exemples:

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

En supposant que vous êtes sur une configuration Ubuntu/Debian, ouvrez la configuration ici:

Sudo nano /etc/postfix/main.cf

Et recherchez (ou définissez la valeur) sur la ligne inet_protocols soit:

inet_protocols = ipv4

Ou être ceci:

inet_protocols = all

Ensuite, redémarrez le service Postfix - ou l’ensemble du serveur - et voyez si cela clarifie les choses:

Sudo service postfix restart
13
JakeGould