Aller au contenu
Réussir mon BTS SIO

Tape une notion, une commande ou le nom d'une épreuve.

Par exemple

Chapitre 1019 minIntermédiaire

Messagerie : SMTP, IMAP, MX, SPF, DKIM et DMARC

Par Josselyn C., prof de BTS SIO. Mis à jour le .

À la fin de ce chapitre, tu sauras

  • suivre le trajet d'un courriel et nommer les agents de messagerie ;
  • associer chaque protocole de messagerie à son port ;
  • écrire les enregistrements SPF, DKIM et DMARC d'un domaine ;
  • évaluer l'alignement DMARC d'un message ;
  • configurer un relais Postfix pour les notifications internes.

4 exercices corrigés1 schéma

La messagerie électronique repose sur deux familles de protocoles : SMTP pour envoyer et transporter les courriels de serveur en serveur, IMAP (ou POP3) pour les lire dans sa boîte. Le DNS y tient un rôle central : l'enregistrement MX dit où livrer les courriels d'un domaine, et trois enregistrements TXT, SPF, DKIM et DMARC, permettent au destinataire de vérifier qu'un courriel vient bien du domaine qu'il affiche. Ce chapitre suit le trajet d'un courriel, détaille ports et protocoles, explique SPF, DKIM et DMARC avec les exigences actuelles des grandes messageries, et configure un relais Postfix pour les notifications internes.

Les acteurs d'un courriel

SigleNomRôleExemple
MUAMail User AgentLe logiciel de l'utilisateur, qui rédige et litOutlook, Thunderbird, un webmail, le client de messagerie du téléphone
MSAMail Submission AgentReçoit les courriels soumis par les utilisateurs authentifiésLe service de soumission du serveur de l'entreprise, port 587 ou 465
MTAMail Transfer AgentTransporte les courriels de serveur en serveurPostfix, Exim, Microsoft Exchange, les serveurs des hébergeurs
MDAMail Delivery AgentRange le courriel dans la boîte du destinataireDovecot, le stockage d'Exchange
Serveur IMAP ou POP3Donne accès à la boîteDovecot, Exchange

Le trajet d'un courriel

Julie Lefèvre, comptable chez Sorbier, écrit à un transporteur partenaire, contact@transporteur.example. La messagerie de Sorbier est hébergée chez un prestataire, sur le serveur mail.sorbier.example (198.51.100.25).

DNSMX, SPF, DKIM, DMARCOutlookde Juliemail.sorbier.examplesoumission, puis envoimx.transporteur.examplereçoit et vérifieBoîteMDALe destinatairelit dans son logiciel15872quel MX pourtransporteur.example ?34SMTP 25STARTTLS5SPF, DKIM et DMARCde sorbier.example67IMAPS 993
Soumission en 587, transport en 25 après une recherche MX, vérifications SPF, DKIM et DMARC, lecture en IMAP 993
  1. Soumission. L'Outlook de Julie (MUA) envoie le message au service de soumission de mail.sorbier.example, sur le port 587 avec STARTTLS (ou 465 en TLS direct), en s'authentifiant avec le compte de Julie.
  2. Recherche du destinataire. Le serveur de Sorbier, devenu MTA, demande au DNS l'enregistrement MX de transporteur.example.
  3. Le DNS répond : mx.transporteur.example, préférence 10.
  4. Transport. Le serveur de Sorbier ouvre une connexion SMTP sur le port 25 du serveur du transporteur, chiffrée par STARTTLS si les deux serveurs le proposent, et lui transmet le message.
  5. Vérifications. Le serveur du transporteur contrôle l'expéditeur : SPF (l'adresse qui lui parle a-t-elle le droit d'envoyer pour sorbier.example ?), DKIM (la signature du message est-elle valide ?), DMARC (que veut le propriétaire du domaine en cas d'échec ?). Il passe aussi le message à l'antispam et à l'antivirus.
  6. Remise. Le MDA range le message dans la boîte du destinataire.
  7. Lecture. Le destinataire le lit en IMAP sur le port 993.

Les protocoles et leurs ports

ProtocolePortUsageChiffrement
SMTP25Transport entre serveursSTARTTLS (le chiffrement se négocie après la connexion)
SMTP, soumission587Envoi par les utilisateurs, authentifiésSTARTTLS
SMTP, soumission en TLS direct465Envoi par les utilisateurs, recommandé par la RFC 8314TLS dès la connexion
IMAP143Lecture, messages laissés sur le serveur, dossiers synchronisésSTARTTLS
IMAPS993Lecture, chiffréeTLS dès la connexion
POP3110Lecture, messages téléchargés puis en général supprimés du serveurSTARTTLS
POP3S995Lecture, chiffréeTLS dès la connexion

IMAP ou POP3 ? IMAP laisse les messages sur le serveur et synchronise les dossiers entre tous les appareils de l'utilisateur : c'est le choix normal aujourd'hui. POP3 télécharge les messages sur un seul appareil ; il ne survit que dans de vieilles configurations. Les messageries d'entreprise hébergées utilisent souvent leurs propres protocoles (Exchange, API web) en plus d'IMAP.

Le dialogue SMTP, l'enveloppe et l'en-tête

SMTP est un protocole texte. Voici un échange entre deux serveurs, simplifié (S: le serveur qui reçoit, C: celui qui envoie) :

text
S: 220 mx.transporteur.example ESMTP
C: EHLO mail.sorbier.example
S: 250-mx.transporteur.example
S: 250-STARTTLS
S: 250 SIZE 52428800
C: STARTTLS
S: 220 Ready to start TLS
   (la suite est chiffrée ; le client renvoie EHLO)
C: MAIL FROM:<julie.lefevre@sorbier.example>
S: 250 OK
C: RCPT TO:<contact@transporteur.example>
S: 250 OK
C: DATA
S: 354 End data with <CR><LF>.<CR><LF>
C: From: Julie Lefèvre <julie.lefevre@sorbier.example>
C: To: contact@transporteur.example
C: Subject: Livraison du 4 novembre
C:
C: Bonjour, ...
C: .
S: 250 OK queued as 4F2A1
C: QUIT

Deux « expéditeurs » apparaissent, et la différence compte pour la sécurité :

  • l'enveloppe (MAIL FROM, appelée aussi Return-Path) sert au transport et aux messages d'erreur ; l'utilisateur ne la voit pas ;
  • l'en-tête From: est l'adresse affichée par le logiciel du destinataire.

Rien, dans SMTP, n'oblige les deux à être cohérents, ni à être vrais : un escroc peut écrire n'importe quel From:. C'est exactement le problème que DMARC résout.

SPF : qui a le droit d'envoyer pour le domaine

SPF (Sender Policy Framework, RFC 7208) est un enregistrement TXT, à l'apex du domaine, qui liste les serveurs autorisés à envoyer des courriels pour ce domaine. Le serveur qui reçoit vérifie si l'adresse IP qui lui parle figure dans la liste du domaine de l'enveloppe (MAIL FROM).

dns
sorbier.example.  IN TXT  "v=spf1 mx include:_spf.emailing.example -all"
ÉlémentSens
v=spf1Version, obligatoire, au début
mxLes serveurs listés dans les MX du domaine sont autorisés
aL'adresse du A du domaine est autorisée
ip4:198.51.100.25Une adresse ou un réseau IPv4 autorisé (ip6: pour IPv6)
include:_spf.emailing.exampleReprendre la liste d'un autre domaine : un prestataire d'envoi de lettres d'information, par exemple
-allTous les autres : échec (fail), rejet recommandé
~allTous les autres : échec léger (softfail), accepté mais suspect
?allNeutre : SPF ne dit rien

Un domaine qui n'envoie jamais de courriel (un domaine racheté pour protéger une marque) se protège avec "v=spf1 -all" : personne n'a le droit d'envoyer pour lui.

DKIM : une signature dans chaque message

DKIM (DomainKeys Identified Mail, RFC 6376) signe chaque message sortant avec une clé privée du serveur d'envoi. La signature, placée dans l'en-tête DKIM-Signature, porte sur le corps et sur les principaux en-têtes (From, Subject, Date…). Le destinataire récupère la clé publique dans le DNS et vérifie la signature : le message vient bien d'un serveur qui détient la clé du domaine, et il n'a pas été modifié en route.

L'en-tête de signature indique où chercher la clé :

text
DKIM-Signature: v=1; a=rsa-sha256; d=sorbier.example; s=2026a; ...

d= est le domaine signataire, s= le sélecteur, un nom libre qui permet d'avoir plusieurs clés (une par prestataire, ou une nouvelle à chaque changement). La clé publique est publiée sous le nom <sélecteur>._domainkey.<domaine> :

dns
2026a._domainkey.sorbier.example.  IN TXT  "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOC..."

(la valeur p= est tronquée ici ; une clé RSA de 2 048 bits fait près de 400 caractères). C'est l'hébergeur de la messagerie qui génère la paire de clés et te donne l'enregistrement à publier. Change de clé régulièrement (une fois par an, par exemple) : publie le nouveau sélecteur, bascule la signature, puis retire l'ancien.

DMARC : la politique du domaine et l'alignement

SPF vérifie l'enveloppe, DKIM le domaine d= de la signature. Aucun des deux ne vérifie l'adresse affichée au destinataire. Un escroc peut donc envoyer depuis son propre domaine (SPF et DKIM valides pour son domaine) tout en affichant From: comptabilite@sorbier.example.

DMARC (Domain-based Message Authentication, Reporting and Conformance, RFC 9989, qui remplace depuis 2026 la RFC 7489) comble ce trou par l'alignement : le message ne passe DMARC que si SPF ou DKIM réussit pour le domaine du From: affiché. Il publie aussi la politique à appliquer en cas d'échec et une adresse pour recevoir des rapports.

dns
_dmarc.sorbier.example.  IN TXT  "v=DMARC1; p=quarantine; rua=mailto:dmarc@sorbier.example; adkim=r; aspf=r"
BaliseSens
p=noneNe rien faire, seulement envoyer des rapports : la phase d'observation
p=quarantineClasser en indésirables les messages qui échouent
p=rejectRejeter les messages qui échouent : la protection complète
rua=mailto:…Adresse qui reçoit les rapports agrégés quotidiens des destinataires
adkim=r / aspf=rAlignement souple (relaxed) : un sous-domaine du From: suffit ; s exige le même domaine exact
t=yMode test : le récepteur applique un niveau de moins que la politique publiée (quarantine au lieu de reject, rien au lieu de quarantine), pour une montée progressive. Il remplace l'ancienne balise pct, retirée par la RFC 9989 ; les récepteurs qui suivent encore l'ancienne norme lisent toujours pct
np=La politique des sous-domaines inexistants (facture.sorbier.example, qu'un escroc inventerait)

La démarche se fait par étapes : publier p=none, lire les rapports pendant quelques semaines pour découvrir tous les services qui envoient au nom du domaine (le logiciel de facturation, l'outil de lettres d'information, le copieur), les autoriser dans SPF ou leur faire signer DKIM, puis passer à quarantine, et enfin à reject.

Les exigences des grandes messageries

Les grands services de messagerie ont transformé ces bonnes pratiques en conditions d'acceptation.

ServiceDepuisExigences pour les expéditeurs de plus de 5 000 messages par jour vers leurs utilisateurs
Gmail, YahooFévrier 2024SPF et DKIM, DMARC publié (au moins p=none) et aligné, désinscription en un clic pour les envois commerciaux, faible taux de plaintes
Outlook.com, Hotmail (comptes grand public de Microsoft)5 mai 2025SPF, DKIM et DMARC (au moins p=none) alignés, sous peine de rejet

Même en dessous de ces seuils, Gmail demande à tous les expéditeurs au moins SPF ou DKIM, un PTR cohérent pour l'adresse d'envoi et des connexions chiffrées. Une PME comme Sorbier n'envoie pas 5 000 messages par jour, mais ses factures et ses notifications doivent arriver : publier les trois enregistrements est aujourd'hui le minimum.

Lire le résultat des vérifications

Le serveur destinataire écrit le résultat de ses contrôles dans l'en-tête Authentication-Results du message. Dans Outlook, il se lit dans les propriétés du message ; dans Gmail, avec Afficher l'original.

text
Authentication-Results: mx.transporteur.example;
    spf=pass smtp.mailfrom=sorbier.example;
    dkim=pass header.d=sorbier.example header.s=2026a;
    dmarc=pass header.from=sorbier.example

Les valeurs possibles : pass, fail, softfail (SPF ~all), neutral, none (pas d'enregistrement), temperror (DNS injoignable), permerror (enregistrement invalide). L'analyse des en-têtes d'un courriel d'hameçonnage, étape par étape, est un exercice classique de l'E7 (cours Réponse à incident).

Le relais des notifications internes avec Postfix

Les applications et les appareils de Sorbier envoient des courriels : les notifications de GLPI, les alertes de la supervision, les copieurs qui numérisent vers une adresse. Ils ne doivent pas parler directement à Internet (le port 25 est bloqué en sortie). Ils déposent leurs messages sur un relais interne, Postfix sur srv-intranet, qui les transmet au serveur de messagerie de l'hébergeur en s'authentifiant sur le port 587.

bash
sudo apt install postfix libsasl2-modules
# À la question du type de configuration, choisir « Système satellite » ; on règle le reste ci-dessous

Dans /etc/postfix/main.cf, les lignes utiles :

ini
myhostname = srv-intranet.ad.sorbier.example
myorigin = sorbier.example
inet_interfaces = all
mydestination =
mynetworks = 127.0.0.0/8, 192.168.10.176/28, 192.168.10.116/30
relayhost = [mail.sorbier.example]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_security_level = encrypt
ParamètreRôle
mydestination = (vide)Ce serveur ne reçoit de courriel pour personne : il ne fait que relayer
mynetworksLes seules machines autorisées à déposer des messages : lui-même, les serveurs (/28) et les quatre copieurs .116 à .119
relayhost = [mail.sorbier.example]:587Tout passe par le serveur de l'hébergeur, en soumission. Les crochets évitent une recherche MX
smtp_sasl_*Authentification auprès de l'hébergeur, avec le compte de service stocké dans sasl_passwd
smtp_tls_security_level = encryptRefuser d'envoyer si la connexion ne peut pas être chiffrée
bash
# Le compte de service, lisible par root seulement
echo "[mail.sorbier.example]:587 notifications@sorbier.example:MotDePasseLong" | sudo tee /etc/postfix/sasl_passwd
sudo chmod 600 /etc/postfix/sasl_passwd
sudo postmap /etc/postfix/sasl_passwd

sudo postfix check                      # vérifier la configuration
sudo systemctl reload postfix
postconf -n                             # les paramètres modifiés
mailq                                   # la file d'attente
journalctl -u postfix@- -f              # les journaux, en direct

Sous Debian 13, les journaux de Postfix sont dans le journal système (journalctl -u postfix@- : l'unité postfix.service ne fait que lancer l'instance postfix@-.service, qui tourne vraiment) ; le fichier /var/log/mail.log n'existe que si rsyslog est installé.

Exercices

Exercice 1 sur 4 Les ports de la messagerie Réussi À revoir

Pour chaque flux, donne le protocole et le port, et dis s'il doit être autorisé par le pare-feu de Sorbier.

  1. Le téléphone d'un commercial, sur un réseau 4G, envoie un courriel par mail.sorbier.example.
  2. Le poste de Karim lit sa boîte avec Thunderbird.
  3. Un poste du VLAN 10 ouvre une connexion directe vers le serveur MX de Gmail.
  4. Le relais srv-intranet transmet à l'hébergeur une notification de l'outil de tickets.
Voir la réponseMasquer la réponse de l'exercice 1
  1. Soumission SMTP, port 587 (STARTTLS) ou 465 (TLS direct), authentifiée. Le flux ne passe pas par le pare-feu de Sorbier (le téléphone est en 4G et le serveur est chez l'hébergeur).
  2. IMAPS, port 993, vers le serveur de l'hébergeur : à autoriser des postes vers 198.51.100.25.
  3. SMTP, port 25 : à refuser. Un poste n'a aucune raison de parler SMTP à un serveur extérieur ; c'est le signe d'un logiciel malveillant qui envoie du spam.
  4. SMTP, port 587, authentifié et chiffré, du relais srv-intranet (192.168.21.10) vers 198.51.100.25 : à autoriser, pour ce seul serveur. Les applications, comme celle de srv-gestion, déposent leurs messages sur le relais en SMTP 25, du VLAN 20 vers le VLAN 21 : un flux interne à autoriser lui aussi.

Tu avais trouvé ?

Exercice 2 sur 4 Évaluer SPF Réussi À revoir

Le domaine sorbier.example publie "v=spf1 mx include:_spf.emailing.example -all". Son MX est mail.sorbier.example (198.51.100.25), et _spf.emailing.example autorise 192.0.2.0/24.

Pour chaque courriel dont l'enveloppe est @sorbier.example, donne le résultat SPF :

  1. Envoyé depuis 198.51.100.25.
  2. Envoyé depuis 192.0.2.80.
  3. Envoyé directement par un poste de Sorbier, depuis l'adresse publique 203.0.113.17.
  4. Le stagiaire ajoute un second enregistrement "v=spf1 ip4:203.0.113.17 -all". Que se passe-t-il pour tous les courriels ?
Voir la réponseMasquer la réponse de l'exercice 2
  1. pass : l'adresse est celle du MX (mécanisme mx).
  2. pass : l'adresse est dans 192.0.2.0/24, autorisée par l'include.
  3. fail : l'adresse ne correspond à aucun mécanisme, et -all dit d'échouer. C'est voulu : les postes ne doivent pas envoyer directement.
  4. Deux enregistrements SPF pour un même domaine : permerror pour tous les courriels, SPF ne protège plus rien et DMARC ne peut plus s'appuyer que sur DKIM. Il fallait ajouter ip4:203.0.113.17 à l'enregistrement existant (et encore : seulement si cette adresse doit vraiment envoyer).

Tu avais trouvé ?

Exercice 3 sur 4 L'alignement DMARC Réussi À revoir

sorbier.example publie p=reject, alignement souple. Pour chaque message reçu par un partenaire, dis s'il passe DMARC.

MessageFrom: affichéEnveloppe (SPF)Signature DKIM
Ajulie.lefevre@sorbier.examplesorbier.example, SPF passd=sorbier.example, pass
Bfactures@sorbier.examplebounce.emailing.example, SPF passd=sorbier.example, pass
Cdirection@sorbier.exampleescroc.example, SPF passd=escroc.example, pass
Dalertes@sorbier.examplesorbier.example, SPF failaucune
Voir la réponseMasquer la réponse de l'exercice 3
  • A : pass. SPF et DKIM réussissent, et tous deux pour le domaine du From:.
  • B : pass. SPF réussit pour un autre domaine (non aligné), mais DKIM réussit pour sorbier.example, aligné avec le From: : un seul des deux suffit.
  • C : fail, donc rejeté. SPF et DKIM réussissent, mais pour escroc.example, qui n'est pas aligné avec le From: affiché. C'est exactement l'usurpation que DMARC arrête.
  • D : fail, donc rejeté. Le service d'alertes envoie depuis un serveur non autorisé et sans signature. Il faut l'autoriser dans SPF ou, mieux, le faire passer par le relais interne et l'hébergeur, qui signe en DKIM.

Tu avais trouvé ?

Exercice 4 sur 4 Le relais ouvert Réussi À revoir

Un audit trouve dans le main.cf d'un relais Postfix, publié sur Internet par une redirection du port 25 : mynetworks = 0.0.0.0/0.

  1. Quel est le risque ?
  2. Quels symptômes l'entreprise risque-t-elle de constater ?
  3. Corrige la configuration et l'architecture.
Voir la réponseMasquer la réponse de l'exercice 4
  1. Le relais accepte et transmet les messages de n'importe quelle adresse : c'est un relais ouvert, que les spammeurs utilisent pour envoyer en masse avec l'adresse de l'entreprise.
  2. File d'attente énorme (mailq), bande passante saturée, adresse publique inscrite sur des listes noires, et courriels légitimes de l'entreprise rejetés ou classés en indésirables par les autres messageries.
  3. Limiter mynetworks aux seules machines internes qui en ont besoin (127.0.0.0/8, 192.168.10.176/28…), supprimer la redirection du port 25 depuis Internet (un relais interne n'a pas à être joignable de l'extérieur), vider la file des messages de spam (postsuper -d ALL après analyse), puis demander le retrait des listes noires.

Tu avais trouvé ?

Chapitre terminé !

Fais les 4 exercices avant de passer à la suite : c'est en t'entraînant que tout se fixe.

chapitres
–
de série
–
du cours
–
Chapitre suivant : Partage de fichiers et d'impression : SMB, NFS, SFTPRevoir le sommaire du cours