1. Création site Internet
  2. > Articles Techniques
  3. > Ubuntu, Debian, Linux
  4. > Configuration Postfix, DNS IPv6 et serveur Debian/Linux VPS (...)
Configuration Postfix, DNS IPv6 et serveur Debian/Linux VPS Gandi

Configuration Postfix, DNS IPv6 et serveur Debian/Linux VPS Gandi

dimanche 15 mars 2015, par Guillaume Orsal

Lors d’une migration sur un VPS Gandi sous Debian, l’envoi de mails avec Postfix ne fonctionnait plus vers l’extérieur. Cette page explique l’origine du problème (DNS et IPv6) et présente la configuration et la solution pour rétablir l’envoi des mails.

Installation de Postfix

Je ne l’installe pas tous les jours, alors pour ne pas oublier la bonne marche à suivre, voici la procédure d’installation de Postfix.

Tout d’abord, j’ai ajouté les paquets postfix et procmail. Pour vérifier si les paquets sont déjà installés :

dpkg -s procmail postfix 2>/dev/null | grep -i -E "status|package"

S’ils n’apparaissent pas, ou pas tous, dans la liste, il faut les installer :

sudo apt-get install <nom du paquet>

L’objectif est que les sites web installés sur la machine puissent envoyer des mails, j’ai donc répondu aux étapes d’installation de la manière suivante.

Le choix du type d’installation Site Internet correspond à un serveur qui envoie des mails sortants (notifications, formulaires, scripts), sans héberger de boîtes mail publiques. C’est le cas le plus courant pour un serveur web ou un VPS applicatif.

Type d'installation Postfix

Il faut ensuite indiquer le nom de domaine utilisé par les mails provenant de la machine, donc émis par les comptes utilisateurs locaux. Probablement votre nom de domaine principal. Les emails apparaîtront comme provenant de <utilisateur>@<ce domaine>.

Postfix Configuration - FQDN

Les utilisateurs root et postmaster doivent transférer leur mail vers un autre compte. J’ai donc indiqué un compte utilisateur standard. Nous y reviendrons un peu plus tard, notamment pour une question de référencement.

Postfix Configuration - Postmaster account

Comme c’est un serveur, il ne sert pas uniquement à l’envoi, mais aussi à la réception. Il faut donc définir les noms de domaines pour lesquels la machine va recevoir des emails. Mais comme je ne souhaite qu’envoyer des mails, je n’indique que localhost. Ainsi, je ne recevrai que des mails locaux du type root@localhost, le reste sera transféré.

Postfix Configuration - Final destination domain name

Mises à jour synchronisées. Je ne maîtrise pas bien ce paramètre, je me fie donc à l’indication fournie et je ne force pas la synchronisation.

Postfix Configuration - Synchronous updates

Réseaux internes. J’ai laissé le paramètre par défaut qui renvoie sur la boucle locale : 127.0.0.0/8 [ ::ffff:127.0.0.0]/104 [ ::1]/128

Postfix Configuration - Local network

Utilisation de procmail pour la distribution locale : j’ai choisi Oui.

Postfix Configuration - Procmail

Pour le quota des boîtes mail, à vous de voir. Comme l’installation n’est a priori pas prévue pour recevoir des messages, les comptes recevront néanmoins les mails de rapports d’erreur.

Postfix Configuration - Quota

Caractère d’extension pour les adresses locales. Je n’ai pas bien compris cette fonctionnalité et, a priori, je n’en ai pas besoin, je ne l’active donc pas en laissant le champ vide.

Postfix Configuration - Local adress extension

Protocole Internet. Je choisis all, mais c’est peut-être ce choix qui me posera un problème plus tard.

Postfix Configuration - Interfaces

Configuration de Postfix

Si Postfix est déjà installé, il est possible de modifier directement la configuration, soit en rejouant la procédure d’installation avec la commande :

sudo dpkg-reconfigure postfix

Soit en modifiant directement le fichier de configuration, avec les droits administrateur :

sudo vi /etc/postfix/main.cf

NB : petit rappel des commandes vi : x pour supprimer le caractère courant, i pour insérer du texte, Esc pour terminer l’édition, o pour ajouter une ligne et insérer, :w pour enregistrer, :q pour quitter, a pour insérer en fin de ligne.

Je présente ici uniquement les lignes que j’ai modifiées, les autres restent inchangées.

myhostname = orsal.net
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydestination = localhost
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter =
inet_interfaces = loopback-only
inet_protocols = all
myorigin = /etc/mailname

Limiter inet_interfaces à la boucle locale permet d’éviter que le serveur ne devienne un relais SMTP ouvert, ce qui serait un risque de sécurité majeur. En effet, je ne souhaite pas pouvoir envoyer des emails, via ce serveur, depuis un autre serveur sur Internet.

Le paramètre relayhost permet d’indiquer un serveur SMTP relais. Chez Gandi, je n’ai pas eu besoin d’en indiquer. En cas d’envoi de mail, Postfix trouve le serveur de destination par une requête DNS et le contacte directement pour lui remettre le mail.

Dans le cas d’un serveur hébergé à domicile, donc probablement situé dans une plage d’adresses IP ne devant a priori pas envoyer d’emails, vous risquez d’être bloqué à l’envoi. Le mail partira, mais le serveur destinataire pourra le rejeter car marqué comme spam, par exemple via Spamhaus.

Dans ce cas, il faudra passer par le serveur SMTP de votre hébergeur en configurant le paramètre relayhost :

relayhost = smtp.votrefournisseur.fr

Le nom de domaine utilisé comme expéditeur est configuré dans le fichier /etc/mailname, à modifier de la même manière que main.cf.

Enfin, la configuration des alias s’effectue dans le fichier /etc/aliases :

sudo vi /etc/aliases

Il faut configurer la redirection des comptes postmaster et root vers l’utilisateur standard si ce n’est pas déjà fait. Les lignes sont construites de la manière suivante :

alias: destinataire, destinataire, ...

Il faut donc ajouter :

root: utilisateur
postmaster: utilisateur

Après toute modification, il faut redémarrer Postfix pour appliquer la configuration :

sudo service postfix restart

Test d’envoi de mail

Pour vérifier que tout fonctionne, il suffit de s’envoyer un email :

echo "Mon message de `date +%T`" | mail -s "Test mail" &lt;votre adresse email&gt;

Si vous recevez le message, c’est tout bon. Vous pouvez également tester depuis les sites web installés sur le serveur.

Identification du problème

Chez moi, les mails ne partaient pas. Un tour dans les logs permet d’en savoir plus :

sudo cat /var/log/mail.log

Erreur obtenue :

Feb  2 15:43:50 myservername postfix/smtp[5908]: 23FEC7801: to=&lt;root@example.org&gt;, relay=none, delay=57183, delays=57183/0.01/0/0, dsn=4.4.3, status=deferred (Host or domain name not found. Name service error for name=example.org type=MX: Host not found, try again)

Un problème de résolution DNS semble donc en cause : Postfix n’arrive pas à résoudre le serveur MX du domaine destinataire.

Résolution du problème

Le problème venait du serveur DNS IPv6 qui ne répondait pas. Lors d’un envoi de mail, Postfix lançait une résolution du nom de domaine destinataire. N’obtenant pas de réponse, après plusieurs tentatives, le message tombait en erreur et était renvoyé à l’expéditeur.

Pour résoudre le problème, j’ai supprimé le serveur DNS IPv6 de la liste des serveurs DNS de la machine.

sudo vi /etc/resolv.conf

et supprimé la ligne :

nameserver 2001:4b98:dc0:49::225

Un redémarrage du serveur est nécessaire pour que la modification soit prise en compte.

Attention Sur les systèmes Debian modernes, le fichier /etc/resolv.conf peut être régénéré automatiquement (DHCP, NetworkManager, systemd-resolved). Dans ce cas, cette modification peut être temporaire.

Par précaution, j’ai également configuré Postfix pour n’utiliser que IPv4 :

inet_protocols = ipv4

Forcer inet_protocols = ipv4 permet à Postfix d’éviter toute tentative de résolution IPv6, tout en laissant le système utiliser IPv6 pour les autres services.

Référencement SEO et configuration mail

Google encourage les sites à respecter de bonnes pratiques de qualité et de fiabilité, notamment pour les services techniques comme l’envoi de mails.

Un nom de domaine doit posséder les deux adresses suivantes :

  • abuse votrenomdedomaine.org
  • postmaster votrenomdedomaine.org

Il n’est pas obligatoire qu’il s’agisse de comptes réels : une simple redirection suffit.

Cette problématique illustre bien qu’un dysfonctionnement DNS, en particulier lié à IPv6, peut avoir des effets indirects difficiles à diagnostiquer sur un serveur mail pourtant correctement configuré.

En savoir plus

Exemples de configuration de Postfix Postfix.org