Skip to main content
Publié le 24 septembre 2026 Depuis février 2024, Gmail exige de tout expéditeur vers ses adresses personnelles une authentification SPF ou DKIM, des DNS direct et inverse valides pour l’adresse d’envoi, et une connexion TLS. Au-delà de 5 000 messages par jour, il faut SPF et DKIM, plus DMARC. Yahoo a publié des règles du même ordre. Depuis novembre 2025, Google ne se contente plus de classer en indésirables : les messages non conformes subissent des rejets temporaires ou définitifs. Un serveur de messagerie sur un VPS n’y échappe pas. Voici les quatre enregistrements qui font la différence, dans l’ordre où les poser, et la façon de vérifier chacun.

Ce que vérifie le serveur qui reçoit

Les exemples qui suivent utilisent example.com, le serveur mail.example.com et l’adresse 203.0.113.42. Remplacez-les par les vôtres.

0. Avant tout : le port 25 sortant

Tout ce qui suit ne sert à rien si votre serveur ne peut pas joindre les autres. Beaucoup d’hébergeurs bloquent le port 25 en sortie par défaut. C’est le cas chez nous : les ports 25, 465 et 587 sortants sont fermés sur tout nouveau VPS, et s’ouvrent sur demande pour un usage raisonnable (serveur personnel, notifications applicatives), jamais pour de l’envoi en masse. Le détail est dans la documentation réseau. Testez depuis le VPS :

1. Nom d’hôte, enregistrement A et reverse DNS

Trois valeurs doivent concorder : le nom que votre serveur annonce dans son HELO, l’enregistrement A de ce nom, et le reverse DNS (PTR) de l’adresse IP.
S’il est faux, corrigez-le :
Côté DNS, il faut un A pour mail.example.com vers 203.0.113.42, et un MX du domaine vers mail.example.com. Le reverse DNS, lui, ne se pose pas dans votre zone : l’adresse IP appartient à votre hébergeur, c’est lui qui le fixe. Chez nous, il se règle depuis la console ; la procédure est dans la documentation Reverse DNS.
Si nous hébergeons la zone DNS de votre domaine, l’onglet Domaine de votre instance, profil Un site web et la messagerie, écrit le A de mail, le MX (priorité 10 vers mail.example.com), les enregistrements SPF et DMARC décrits plus bas, et règle le reverse DNS de l’IP. Un aperçu montre tout avant écriture, y compris vos MX actuels s’ils vont être remplacés. Voir l’annonce et la documentation. Seul DKIM reste à votre charge : section 3.
Vérifiez que l’aller et le retour concordent :

2. SPF : qui a le droit d’envoyer

Un seul enregistrement TXT à la racine du domaine. Pour un serveur qui est à la fois le site et la messagerie :
a autorise l’adresse du A de example.com, mx celles des serveurs MX, et -all déclare que rien d’autre n’envoie pour ce domaine. C’est l’enregistrement qu’écrit le profil messagerie de la console. Si un autre service envoie aussi en votre nom (messagerie hébergée, outil de newsletter), ajoutez son mécanisme include: dans le même enregistrement, pas dans un second.
SPF vérifie l’adresse d’enveloppe (MAIL FROM), pas l’en-tête From: que lit votre correspondant. C’est DMARC, section 4, qui relie les deux.

3. DKIM : signer ce qui part

DKIM est le seul des quatre que la console ne peut pas écrire pour vous : la clé privée est générée sur votre serveur et ne doit jamais le quitter. Vous publiez uniquement la clé publique. Sur Debian ou Ubuntu avec Postfix, OpenDKIM fait le travail :
La commande produit s2026.private (la clé privée) et s2026.txt (l’enregistrement DNS à publier). Le sélecteur est un nom libre ; mettre l’année dedans simplifie la rotation plus tard. Dans /etc/opendkim.conf, renseignez le domaine, le sélecteur et la clé, et remplacez la ligne Socket existante par un port local, que Postfix atteint même depuis son chroot :
Puis branchez Postfix sur le milter :
Publiez le contenu de s2026.txt en TXT sur s2026._domainkey.example.com :
Une clé 2048 bits dépasse les 255 caractères qu’autorise une chaîne TXT : le fichier la découpe en plusieurs chaînes entre guillemets. Elles forment un seul enregistrement, pas plusieurs. Une fois publié, vérifiez qu’il revient entier et qu’il correspond à la clé privée :
La mention key not secure qui peut précéder signale seulement que la zone n’est pas signée DNSSEC. Elle n’empêche pas DKIM de fonctionner.

4. DMARC : relier le tout et dire quoi faire en cas d’échec

DMARC exige que le domaine de l’en-tête From: soit aligné sur celui qui a passé SPF ou DKIM, publie ce que le destinataire doit faire sinon, et où vous envoyer les rapports.
  • p=quarantine : un message non conforme va en indésirables. p=none ne demande rien ; p=reject le fait refuser.
  • rua= : l’adresse qui reçoit les rapports agrégés quotidiens (XML compressé) des grands fournisseurs. Cette boîte doit exister.
C’est l’enregistrement que pose le profil messagerie de la console. Il suppose que tout ce qui envoie en votre nom passe déjà SPF ou DKIM. Si d’autres services envoient pour votre domaine et que vous n’en êtes pas sûr, commencez par p=none, lisez les rapports une ou deux semaines, puis montez.

5. Vérifier de bout en bout

Les enregistrements peuvent être justes et le message échouer quand même. Envoyez un vrai message à une adresse Gmail, en passant par votre Postfix pour qu’il soit signé :
Dans Gmail, ouvrez le message, menu , Afficher l’original. Vous devez lire PASS sur les trois lignes SPF, DKIM et DMARC. Le détail est dans l’en-tête Authentication-Results :
Côté serveur, le journal d’OpenDKIM confirme la signature :

Pièges courants

Deux enregistrements SPF. Un domaine ne doit en porter qu’un. Avec deux TXT commençant par v=spf1, le résultat est une erreur permanente, et SPF échoue pour tout le monde. Fusionnez-les. Plus de dix recherches DNS. Chaque include, a, mx, ptr, exists et redirect coûte une requête, et les include imbriqués comptent aussi. Au-delà de dix, SPF renvoie une erreur permanente. Trois ou quatre services tiers suffisent à y arriver. -all ou ~all. -all (échec) dit que rien d’autre n’envoie ; ~all (échec partiel) le dit sans l’imposer. Certains destinataires rejettent sur un échec SPF avant même d’évaluer DKIM, ce qui pénalise le courrier transféré. Si des messages de votre domaine sont souvent relayés, ~all avec DKIM et DMARC en place est un compromis courant. DMARC en p=none pour toujours. p=none sert à observer. Il satisfait la lettre des exigences, mais ne protège pas votre domaine contre l’usurpation. Fixez-vous une date pour passer à quarantine. Reverse DNS et HELO qui divergent. Un PTR générique de l’hébergeur, un PTR vers un nom sans A en retour, ou un myhostname resté à localhost ou au nom d’installation : chacun suffit à faire douter le destinataire. IPv6 oublié. Si votre VPS a une adresse IPv6, Postfix l’utilise volontiers pour joindre Gmail, et cette adresse doit alors avoir son propre PTR et être couverte par SPF (le mécanisme a inclut les AAAA du domaine). Vérifiez avec dig -x sur l’adresse IPv6. À défaut, faites préférer IPv4 à Postfix :
Le nom mail sans SPF. Les destinataires peuvent aussi vérifier SPF sur le nom annoncé en HELO. Un TXT "v=spf1 a -all" sur mail.example.com règle le cas.

Pour aller plus loin

Besoin d’ouvrir le port 25 ou d’un coup de main sur la configuration ? Notre équipe est disponible depuis votre espace client.