← RFC Reference

MTA-STS — Mail Transfer Agent Strict Transport Security

Voie de normalisation Sécurité du transport Published March 2026
ELI5: Imaginez envoyer une lettre par une boîte aux lettres verrouillée, mais quelqu'un pourrait remplacer le verrou par un faux et lire votre courrier. MTA-STS, c'est comme publier un panneau qui dit « J'utilise toujours le vrai verrou — si le verrou semble faux, ne livrez pas. » Cela empêche les attaquants de tromper les serveurs de messagerie pour envoyer des emails sans chiffrement.

Pourquoi cela existe

SMTP a été conçu à une époque où les e-mails transitaient en texte clair. STARTTLS (RFC 3207) a ajouté un chiffrement optionnel, mais il présente un défaut fatal : il est opportuniste. Un serveur d'envoi demande « supportez-vous TLS ? » et un attaquant actif du réseau peut simplement supprimer cette réponse, forçant une rétrogradation en texte clair. Le serveur d'envoi n'a aucun moyen de distinguer « ce serveur ne supporte pas TLS » de « un attaquant a supprimé l'offre TLS ».

MTA-STS résout ce problème en permettant aux propriétaires de domaines de publier une politique — via HTTPS, et non DNS — qui déclare : « Mes serveurs de courrier supportent toujours TLS avec des certificats valides. Si vous ne pouvez pas établir une connexion sécurisée, refusez de livrer. » Parce que la politique est récupérée via HTTPS (qui dispose de sa propre chaîne de confiance de certificats), un attaquant actif ne peut pas la forger ou la supprimer.

Comment cela fonctionne

MTA-STS exige deux choses du domaine récepteur :

  1. Un enregistrement TXT DNS à _mta-sts.example.com qui signale l'existence de la politique et inclut un identifiant de version pour l'invalidation du cache.
  2. Un fichier de politique servi en HTTPS à https://mta-sts.example.com/.well-known/mta-sts.txt qui déclare la politique réelle.

Étape 1 : Enregistrement DNS

Publiez un enregistrement TXT pour annoncer votre politique MTA-STS :

_mta-sts.example.com. IN TXT "v=STSv1; id=20240101T000000Z"

Le champ id est une chaîne opaque. Les serveurs d'envoi mettent en cache la politique et la récupèrent à nouveau lorsque l'id change. Utilisez un timestamp ou un compteur croissant.

Étape 2 : Fichier de politique

Hébergez la politique à https://mta-sts.example.com/.well-known/mta-sts.txt. Le certificat HTTPS doit être valide pour mta-sts.example.com.

version: STSv1
mode: enforce
mx: mail.example.com
mx: backup.example.com
mx: *.example.net
max_age: 604800

Champs de politique

Champ Description
version Doit être STSv1.
mode enforce (rejeter en cas d'échec), testing (livrer mais signaler), ou none (désactiver).
mx Noms d'hôtes MX autorisés. Les caractères génériques sont autorisés pour l'étiquette la plus à gauche uniquement (par exemple, *.example.com).
max_age Durée (en secondes) pendant laquelle les serveurs d'envoi doivent mettre en cache cette politique. Recommandé : 604800 (1 semaine) ou plus.

Ce que fait le serveur d'envoi

  1. Consulte les enregistrements MX pour le domaine du destinataire.
  2. Vérifie une politique MTA-STS mise en cache, ou la récupère si l'enregistrement TXT DNS _mta-sts est nouveau ou modifié.
  3. Se connecte à un hôte MX et initie STARTTLS.
  4. Valide le certificat TLS du serveur MX par rapport aux motifs mx dans la politique.
  5. Si le mode est enforce et que TLS échoue ou que le certificat ne correspond pas : ne pas livrer. Mettez le message en file d'attente et réessayez plus tard.

Détails techniques clés

Pourquoi HTTPS au lieu de DNSSEC ?

Le déploiement de DNSSEC reste limité. HTTPS exploite l'infrastructure PKI Web largement déployée (autorités de certification). Tout domaine pouvant obtenir un certificat web peut utiliser MTA-STS — aucun DNSSEC requis. C'est la différence clé entre MTA-STS et DANE (RFC 7672), qui exige DNSSEC.

Confiance à la première utilisation (TOFU)

MTA-STS suit un modèle TOFU. La première fois qu'un serveur d'envoi rencontre votre politique, il doit faire confiance aux réponses DNS et HTTPS. Après cela, la politique mise en cache protège contre les rétrograadations jusqu'à l'expiration de max_age. Un attaquant devrait compromettre simultanément HTTPS et DNS pendant la récupération initiale — une attaque considérablement plus difficile.

Mode de test

Commencez par mode: testing. Dans ce mode, les serveurs d'envoi livrent le courrier même si la validation TLS échoue, mais génèrent des rapports TLS-RPT (RFC 8460) pour que vous puissiez identifier les problèmes avant de passer à enforce.

Exemple de déploiement

Une configuration MTA-STS complète pour example.com :

Enregistrements DNS

; Signal de politique MTA-STS _mta-sts.example.com. 300 IN TXT "v=STSv1; id=2024061501" ; Point de terminaison de rapport TLS (RFC 8460) _smtp._tls.example.com. 300 IN TXT "v=TLSRPTv1; rua=mailto:tls-reports@example.com" ; Enregistrements MX (doivent correspondre aux lignes de politique mx:) example.com. 300 IN MX 10 mail.example.com. example.com. 300 IN MX 20 backup.example.com.

Fichier de politique

# Servi à https://mta-sts.example.com/.well-known/mta-sts.txt
version: STSv1
mode: testing
mx: mail.example.com
mx: backup.example.com
max_age: 86400

Une fois que les rapports TLS-RPT confirment l'absence de problèmes, changez mode en enforce et augmentez max_age à 604800 ou plus.

Erreurs courantes

Impact sur la livrabilité

MTA-STS n'améliore pas directement le placement en boîte de réception — il protège le courrier de vos destinataires de l'interception. Cependant, il présente des avantages indirects en matière de livrabilité :

Related RFCs