← RFC Reference

Routage DNS et courrier

Encyclopédie des concepts de courrier électronique Published March 2026
ELI5: Imaginez que vous voulez envoyer une lettre à quelqu'un dans une entreprise. Vous ne connaissez pas le bâtiment exact, alors vous appelez le standard de l'entreprise (DNS) et demandez « où dois-je envoyer le courrier ? » (requête MX). On vous donne une liste de salles de courrier classées par préférence. Vous essayez la première. Si elle est fermée, vous essayez la suivante. Si l'entreprise n'a pas d'annuaire au standard, vous essayez l'adresse du siège social (enregistrement A). S'ils ont affiché un panneau disant « pas de courrier accepté » — c'est un MX nul.

Comment le DNS pilote l'intégralité du chemin de livraison des courriels — enregistrements MX, priorité et basculement, secours A/AAAA, MX nul, enregistrements PTR et les enregistrements DNS dont chaque domaine d'envoi a besoin.

L'algorithme d'acheminement du courrier

Quand un serveur d'envoi doit livrer un message à user@example.com, il suit cet algorithme, défini dans la RFC 5321 section 5 :

  1. Interroger les enregistrements MX pour example.com
  2. Si des enregistrements MX existent, les trier par priorité (le nombre le plus bas = la préférence la plus haute)
  3. Pour chaque nom d'hôte MX, résoudre ses enregistrements A et/ou AAAA pour obtenir les adresses IP
  4. Tenter de se connecter au MX de plus haute priorité. En cas d'échec, essayer le suivant.
  5. Si aucun enregistrement MX n'existe (réponse NODATA), basculer sur l'enregistrement A/AAAA du domaine et tenter la livraison là-bas
  6. Si l'enregistrement MX est un MX nul (0 .), le domaine n'accepte pas le courrier — générer un échec permanent
  7. Si le domaine n'existe pas du tout (NXDOMAIN), générer un échec permanent

Enregistrements MX

L'enregistrement MX (Mail Exchanger) est le type d'enregistrement DNS principal pour l'acheminement du courrier. Il mappe un domaine à un ou plusieurs serveurs de courrier avec des priorités :

$ dig +short MX example.com
10 mx1.example.com.
20 mx2.example.com.
30 mx-backup.example.com.

Chaque enregistrement a deux parties :

Priorité et basculement

Dans l'exemple ci-dessus, l'expéditeur essaie d'abord mx1.example.com (priorité 10). Si ce serveur est inaccessible, retourne une erreur 4xx temporaire, ou la connexion expire, l'expéditeur essaie mx2.example.com (priorité 20), puis mx-backup.example.com (priorité 30).

Si plusieurs enregistrements MX partagent la même priorité, l'expéditeur doit les randomiser. Cela fournit l'équilibrage de charge :

10 mx1.example.com.
10 mx2.example.com.
10 mx3.example.com.

Ici, les trois serveurs ont une priorité égale. Le serveur d'envoi en sélectionne un au hasard pour chaque tentative de livraison, distribuant la charge entre les trois.

MX doit pointer sur un nom d'hôte, pas une IP

Le champ exchange d'un enregistrement MX doit être un nom d'hôte. Il ne peut pas être une adresse IP (la RFC 5321 est explicite à ce sujet). Le nom d'hôte lui-même doit être résolu en un enregistrement A et/ou AAAA. Il ne doit pas être un CNAME — bien que certains résolveurs tolèrent les cibles MX qui sont des CNAME, c'est techniquement interdit et cause des problèmes d'interopérabilité.

MX ne doit pas pointer sur un CNAME

C'est une configuration erronée courante. Si mx1.example.com est un CNAME pointant vers mail.provider.com, certains serveurs d'envoi échoueront à livrer. Utilisez toujours des enregistrements A/AAAA pour les cibles MX.

Secours A/AAAA

Si un domaine n'a aucun enregistrement MX du tout (pas même un MX nul), le serveur d'envoi bascule sur l'enregistrement A ou AAAA du domaine et tente la livraison SMTP là-bas. C'est la règle « MX implicite ».

; Aucun enregistrement MX pour tiny-domain.com
tiny-domain.com. IN A 198.51.100.50

Le serveur d'envoi tentera de livrer à 198.51.100.50 sur le port 25. Cela fonctionne, mais c'est considéré comme une mauvaise pratique pour tout domaine qui envoie ou reçoit activement du courrier. Publiez toujours des enregistrements MX explicites.

Le secours ne s'applique que quand il y a zéro enregistrement MX. Si des enregistrements MX existent mais que tous les hôtes MX sont inaccessibles, l'expéditeur ne bascule pas vers l'enregistrement A — il met le message en file d'attente pour une nouvelle tentative.

MX nul : « Ce domaine n'accepte pas le courrier »

La RFC 7505 définit le MX nul — un moyen de déclarer explicitement qu'un domaine n'accepte pas le courrier électronique :

no-mail.example.com. IN MX 0 .

Le point unique (.) comme exchange, avec priorité 0, signifie « ne pas tenter la livraison ». Le serveur d'envoi doit immédiatement générer un échec permanent (5.1.2 — mauvais système de destination) plutôt que de perdre du temps en connexion.

Utilisez le MX nul pour :

Sans un MX nul, les expéditeurs basculeront sur l'enregistrement A et gaspilleront du temps en tentant des connexions qui n'aboutiront jamais.

Enregistrements PTR : DNS inversé

Un enregistrement PTR mappe une adresse IP vers un nom d'hôte. C'est l'inverse d'un enregistrement A :

; Recherche directe
mail.example.com. IN A 198.51.100.42

; Recherche inverse
42.100.51.198.in-addr.arpa. IN PTR mail.example.com.

Les enregistrements PTR ne font pas partie de l'algorithme d'acheminement du MX, mais ils sont essentiels pour la livrabilité. La plupart des grands fournisseurs de boîtes de réception vérifient l'enregistrement PTR de l'adresse IP du serveur de connexion :

Les enregistrements PTR sont gérés par le propriétaire du bloc d'adresses IP (généralement votre fournisseur d'hébergement ou FAI), et non via le DNS de votre domaine. Vous devrez peut-être contacter votre fournisseur pour définir ou modifier les enregistrements PTR.

Enregistrements DNS que chaque domaine d'envoi doit avoir

Voici l'ensemble complet des enregistrements DNS pour un domaine qui envoie du courrier via un service comme Mailer To Go :

; Enregistrements MX (pour recevoir le courrier)
example.com. IN MX 10 mx1.example.com.
example.com. IN MX 20 mx2.example.com.

; Enregistrements A pour les hôtes MX
mx1.example.com. IN A 203.0.113.10
mx2.example.com. IN A 203.0.113.11

; Enregistrement SPF (qui peut envoyer en tant que ce domaine)
example.com. IN TXT "v=spf1 include:_spf.mailertogo.com -all"

; Clé publique DKIM (pour la vérification de la signature)
mtg._domainkey.example.com. IN CNAME mtg._domainkey.mailertogo.com.

; Politique DMARC
_dmarc.example.com. IN TXT "v=DMARC1; p=reject; rua=mailto:dmarc@example.com"

; Politique MTA-STS (forcer TLS pour le courrier entrant)
_mta-sts.example.com. IN TXT "v=STSv1; id=20260311"

; TLSRPT (rapport d'échec TLS)
_smtp._tls.example.com. IN TXT "v=TLSRPTv1; rua=mailto:tls-reports@example.com"

Pour un domaine qui envoie mais ne reçoit pas de courrier (par exemple, un sous-domaine utilisé pour le courrier transactionnel) :

; MX nul (n'accepte pas le courrier)
notifications.example.com. IN MX 0 .

; SPF, DKIM, DMARC comme ci-dessus
notifications.example.com. IN TXT "v=spf1 include:_spf.mailertogo.com -all"
mtg._domainkey.notifications.example.com. IN CNAME mtg._domainkey.mailertogo.com.
_dmarc.notifications.example.com. IN TXT "v=DMARC1; p=reject; rua=mailto:dmarc@example.com"

Considérations TTL

Les enregistrements DNS ont un Time To Live (TTL) qui contrôle la durée pendant laquelle les résolveurs les mettent en cache. Pour les enregistrements liés au courrier :

Lors de modifications DNS, réduisez le TTL avant le changement (attendez l'expiration de l'ancien TTL), effectuez le changement, vérifiez, puis augmentez le TTL à la valeur opérationnelle.

DNSSEC et courrier

DNSSEC (DNS Security Extensions) ajoute des signatures cryptographiques aux enregistrements DNS, prévenant l'usurpation et l'empoisonnement du cache. Pour le courrier, DNSSEC est particulièrement important parce que :

Sans DNSSEC, un attaquant de réseau peut forger des réponses DNS et rediriger ou intercepter le courrier. L'adoption de DNSSEC pour les domaines de courrier augmente mais n'est pas encore universelle.

Enregistrements SRV pour la soumission de courrier

La RFC 6186 définit les enregistrements SRV que les clients de courrier peuvent utiliser pour découvrir automatiquement les serveurs de soumission et IMAP/POP :

_submission._tcp.example.com. IN SRV 0 1 587 mail.example.com.
_imaps._tcp.example.com. IN SRV 0 1 993 imap.example.com.
_pop3s._tcp.example.com. IN SRV 0 1 995 pop.example.com.

Ceux-ci sont utilisés pour l'autoconfigurations du client de courrier — quand un utilisateur tape son adresse e-mail, le client interroge les enregistrements SRV pour trouver le serveur correct, le port et le protocole. C'est séparé de l'acheminement serveur-à-serveur basé sur MX.

Ce qui peut mal tourner

Enregistrements MX manquants

Sans enregistrements MX, les expéditeurs basculer sur votre enregistrement A. Si votre serveur web n'exécute pas de serveur SMTP sur le port 25, la livraison du courrier échoue après expiration du délai. Publiez toujours des enregistrements MX explicites, ou un MX nul si vous n'acceptez pas le courrier.

MX pointant vers un CNAME

Comme noté ci-dessus, c'est techniquement invalide. Certains expéditeurs suivront le CNAME ; d'autres échoueront. Utilisez des enregistrements A/AAAA pour tous les noms d'hôtes cibles MX.

Références MX circulaires

Si example.com a un MX pointant vers mail.example.com, et mail.example.com a son propre MX pointant vers example.com, le courrier peut boucler. Les cibles MX doivent être des noms d'hôtes feuilles avec des enregistrements A/AAAA uniquement.

Enregistrement PTR manquant

Votre IP d'envoi n'a pas de DNS inversé, ou elle se résout sur un nom d'hôte ISP générique. Les grands fournisseurs de boîtes de réception (Gmail, Microsoft, Yahoo) repousseront ou rejetteront votre courrier. Assurez-vous que vos IP d'envoi ont des enregistrements PTR qui se résolvent en avant vers la même IP.

Délai d'expiration DNS lors de la livraison

Si les serveurs DNS du domaine destinataire sont lents ou inaccessibles, le serveur d'envoi ne peut pas résoudre les enregistrements MX. Le message est mis en file d'attente pour une nouvelle tentative. Les échecs DNS persistants aboutissent finalement à un rebond (généralement après 4-5 jours). Il n'y a rien que vous puissiez faire en tant qu'expéditeur — c'est un problème d'infrastructure du destinataire.

L'enregistrement SPF dépasse la limite UDP DNS

Les réponses DNS via UDP sont limitées à 512 octets (ou 4096 avec EDNS0). Un enregistrement SPF très long avec de nombreuses directives include: peut être tronqué. Le résolveur bascule sur TCP, ce qui ajoute de la latence et peut échouer si le serveur DNS ne supporte pas TCP. Gardez votre enregistrement SPF concis.

Débogage DNS pour le courrier

Commandes essentielles pour diagnostiquer les problèmes d'acheminement du courrier :

# Vérifier les enregistrements MX
$ dig MX example.com +short
10 mx1.example.com.
20 mx2.example.com.

# Vérifier que les cibles MX se résolvent en IP
$ dig A mx1.example.com +short
203.0.113.10

# Vérifier PTR (DNS inversé)
$ dig -x 198.51.100.42 +short
mail.example.com.

# Vérifier le DNS inversé confirmé en avant
$ dig A mail.example.com +short
198.51.100.42

# Vérifier l'enregistrement SPF
$ dig TXT example.com +short | grep spf
"v=spf1 include:_spf.mailertogo.com -all"

# Vérifier la clé publique DKIM
$ dig TXT mtg._domainkey.example.com +short
"v=DKIM1; k=rsa; p=MIIBIjANBgkqh..."

# Vérifier la politique DMARC
$ dig TXT _dmarc.example.com +short
"v=DMARC1; p=reject; rua=mailto:dmarc@example.com"

# Vérifier le MX nul
$ dig MX no-mail.example.com +short
0 .

Points clés à retenir

Lectures complémentaires

Related RFCs