SPF, DKIM et DMARC
Comprendre SPF, DKIM et DMARC pour sécuriser l'envoi d'emails contre le spoofing.

Notions théoriques
Pourquoi sécuriser les emails ?
L'email est l'un des moyens de communication les plus utilisés sur Internet.
Pourtant, il repose sur un protocole très ancien, le SMTP, qui ne possède pas de mécanisme de sécurité natif pour vérifier l'identité de l'expéditeur.
Cela rend les emails vulnérables à une attaque appelée spoofing, où un expéditeur malveillant falsifie l'adresse d’expédition pour faire croire qu’un message provient d'une source de confiance.
Pour contrer cela, trois technologies ont été mises en place :
- SPF (Sender Policy Framework)
- DKIM (DomainKeys Identified Mail)
- DMARC (Domain-based Message Authentication, Reporting & Conformance)
SPF : Vérifier que l’expéditeur est autorisé
SPF permet à un domaine d’indiquer quelles adresses IP sont autorisées à envoyer des emails en son nom. Cela se fait via un enregistrement DNS de type TXT.
Quand un serveur de messagerie reçoit un email, il peut consulter l’enregistrement SPF du domaine de l’expéditeur pour vérifier si l’adresse IP de l’expéditeur figure dans la liste autorisée.
Exemple d’enregistrement SPF :
v=spf1 ip4:192.0.2.0/24 include:_spf.google.com -all
v=spf1: indique qu’il s’agit d’un enregistrement SPF de version 1.ip4:192.0.2.0/24: autorise cette plage d’adresses IP.include:_spf.google.com: autorise les IP listées par Google.-all: rejeter tout ce qui n’est pas listé.
DKIM : Signer les emails
DKIM ajoute une signature cryptographique dans l’en-tête des emails. Cette signature est générée par le serveur d’envoi à l’aide d’une clé privée. Le domaine publie la clé publique correspondante dans un enregistrement DNS.
Le serveur de réception peut alors vérifier que le contenu du message n’a pas été modifié et qu’il a bien été signé par un serveur autorisé.
Exemple d’enregistrement DKIM :
Nom DNS : default._domainkey.exemple.com
Valeur :
v=DKIM1; k=rsa; p=MIGfMA0GCSqGSI...AB
v=DKIM1: version du protocole DKIM.k=rsa: type de chiffrement utilisé.p=...: clé publique.
DMARC : Coordonner SPF et DKIM
DMARC est une politique que le propriétaire d’un domaine peut publier pour indiquer comment les serveurs de réception doivent traiter les emails qui échouent aux vérifications SPF et/ou DKIM.
Il permet également de recevoir des rapports sur les tentatives de spoofing.
Exemple d’enregistrement DMARC :
Nom DNS : _dmarc.exemple.com
Valeur :
v=DMARC1; p=reject; rua=mailto:dmarc@exemple.com; adkim=s; aspf=s
v=DMARC1: version du protocole.p=reject: rejeter les messages non conformes.rua=...: adresse pour recevoir les rapports.adkim=s: politique stricte pour DKIM.aspf=s: politique stricte pour SPF.
Comment ces technologies fonctionnent ensemble

- SPF vérifie l’adresse IP de l’expéditeur.
- DKIM vérifie la signature du message.
- DMARC vérifie que SPF et DKIM sont valides et que le domaine correspond à celui de l’expéditeur visible (le From).
Utiliser SPF, DKIM et DMARC ensemble permet de maximiser la sécurité des emails et de réduire les risques de phishing.
Un mauvais paramétrage peut entraîner le rejet d’emails légitimes. Toujours tester les enregistrements DNS avant de les appliquer en production.
Explication en vidéo
Voici une vidéo d'IT-Connect - Florian qui explique très bien les concepts de SPF, DKIM et DMARC.
Exemple pratique
Il est possible de configurer SPF, DKIM et DMARC sur un nom de domaine personnalisé utilisé pour envoyer des emails via un service SMTP (comme Mailgun, Sendinblue ou Postfix).
Étapes
-
Accéder à la gestion DNS du domaine
- Utiliser l’interface de votre registrar (OVH, Gandi, Cloudflare, etc.)
-
Ajouter un enregistrement SPF
- Type : TXT
- Nom :
@ou vide - Valeur :
v=spf1 include:_spf.mailgun.org -all
-
Générer une paire de clés DKIM
- Utiliser
openssl:openssl genrsa -out private.key 1024
openssl rsa -in private.key -pubout -out public.key
- Utiliser
-
Publier la clé publique DKIM
- Type : TXT
- Nom :
mail._domainkey.votredomaine.com - Valeur :
v=DKIM1; k=rsa; p=...(clé publique)
-
Configurer le serveur SMTP pour signer les emails
- Exemple avec Postfix + OpenDKIM :
- Modifier
/etc/opendkim.conf - Ajouter le domaine et la clé
- Modifier
- Exemple avec Postfix + OpenDKIM :
-
Ajouter un enregistrement DMARC
- Type : TXT
- Nom :
_dmarc.votredomaine.com - Valeur :
v=DMARC1; p=quarantine; rua=mailto:dmarc@votredomaine.com
-
Tester la configuration
- Envoyer un email à
check-auth@verifier.port25.com - Lire le rapport de test
- Envoyer un email à
Il existe des outils en ligne pour vérifier les enregistrements DNS concernant SPF, DKIM et DMARC :
Test de mémorisation/compréhension
TP pour réfléchir et résoudre des problèmes
-
Accéder à la gestion DNS du domaine via l’interface du registrar.
-
Ajouter un enregistrement SPF :
- Type : TXT
- Nom :
@ - Valeur :
v=spf1 include:_spf.mailgun.org -all
-
Générer une paire de clés DKIM avec
openssl:openssl genrsa -out private.key 1024
openssl rsa -in private.key -pubout -out public.key -
Publier la clé publique dans un enregistrement DNS :
- Type : TXT
- Nom :
mail._domainkey.votredomaine.com - Valeur :
v=DKIM1; k=rsa; p=...(clé publique)
-
Configurer OpenDKIM sur le serveur mail :
- Modifier
/etc/opendkim.conf - Lier le domaine et la clé
- Modifier
-
Ajouter un enregistrement DMARC :
- Type : TXT
- Nom :
_dmarc.votredomaine.com - Valeur :
v=DMARC1; p=reject; rua=mailto:dmarc@votredomaine.com
-
Envoyer un email test à
check-auth@verifier.port25.com -
Vérifier les résultats sur https://www.mail-tester.com ou https://mxtoolbox.com/
Exemples de création d'une entrée DNS de type DMARC chez OVH
Vous devez être connecté pour voir le contenu.
Exemples de création d'une entrée DNS de type DMARC chez Infomaniak
Vous devez être connecté pour voir le contenu.