Postfix - Hôte ou domaine introuvable


22

Je viens d'installer Postfix sur mon Ubuntu, sur un réseau local.

Sur ce réseau, j'ai un serveur Exchange (utilisant un domaine mail.example.com). J'ai rencontré un problème lors de l'envoi d'un e-mail à une adresse locale adress@example.com::

relay=none, delay=0.01, delays=0.01/0/0/0, dsn=4.3.5, status=deferred 
(Host or domain name not found. Name service error for name=example.com
type=AAAA: Host found but no data record of requested type)

J'ai résolu ce problème en utilisant relay_domaindans mon Postfix main.cf:

relay_domains = example.com
transport_maps = hash:/etc/postfix/transport

Et dans mon /etc/postfix/transport:

example.com smtp:[mail.example.com]

Maintenant, je peux envoyer des mails @example.comet j'ai testé certains des principaux webmails (Gmail, Yahoo, Hotmail ...). Ça marche. Mais pourquoi j'ai cette erreur sur mes adresses @example.com? Comment puis-je être sûr de ne jamais trouver cette erreur sur un autre domaine?

Ma configuration Postfix est:

postconf -n

alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
config_directory = /etc/postfix
inet_interfaces = all
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
mydestination = SRVWEB, localhost.localdomain, localhost
myhostname = SRVWEB
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
myorigin = /etc/mailname
readme_directory = no
recipient_delimiter = +
relay_domains = mutuelle-var.fr
relayhost =
smtp_generic_maps = hash:/etc/postfix/generic
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = yes
transport_maps = hash:/etc/postfix/transport

Pourriez-vous ajouter la sortie de postconf -n à la question?
ALex_hha

Utilisez-vous ipv6?
ALex_hha

J'ai changé la configuration de postfix pour utiliser uniquement ipv4 pour l'instant. Attendez et voyez ..
Vincent LITUR

Réponses:


33

Votre serveur essaie d'utiliser IPv6 lors de l'envoi du courrier. Étant donné que le mail.example.comn'a pas d'enregistrement AAAA (qui est identique à un enregistrement A, mais pour IPv6), cela ne fonctionne pas.

Si vous voulez que Postfix n'utilise jamais IPv6, vous pouvez changer cela dans le fichier de configuration, comme expliqué dans la page de manuel postconf (5):

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

When  both IPv4 and IPv6 support are enabled, the Postfix SMTP client
will 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

Si vous souhaitez le modifier pour ce domaine uniquement, modifiez votre carte de transport pour lire

example.com smtp-ipv4:[mail.domain.com]

Merci pour cette explication! J'ai lu une documentation en français qui disait que ipv4 était la configuration par défaut .. J'ai mis ipv4 maintenant, et j'ai rechargé Postfix, semble fonctionner. Merci encore !
Vincent LITUR

Cela dépend de la version de Postfix que vous utilisez - je ne me souviens pas de quelle version par défaut, mais je sais qu'ils l'ont changé au moins une fois.
Jenny D dit Réintégrer Monica le

7
Ce n'est pas la connexion qui échoue, mais la recherche DNS qui la précède. Quand je inet_protocols = allne cherche pas une Arecherche si une AAAArecherche échoue, ce qui semble inutile. De plus, si vous modifiez cette valeur, vous devez redémarrer postfix, pas seulement recharger.
Synchro

0

La configuration simple de Postfix qui a fonctionné pour moi.

/etc/postfix/main.cf

myhostname = localhost.testing.com
myorigin = testing.com
relayhost =
inet_protocols = ipv4
inet_interfaces = loopback-only
mydestination =

-5

Le changement suivant dans /etc/postfix/main.cf a résolu le problème pour moi.

inet_protocols = ipv6 

Remplacez ce qui précède par

inet_protocols = all

9
N'ajoute pas grand-chose à la réponse acceptée et, pour être franc, est inutile sans le post de JennyD qui fournit l' explication .
Deer Hunter
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.