SPF, DKIM, DMARC c’est quoi ?

Lorsque l'on doit configurer un serveur de mail (MTA), on rencontre différentes normes et protocoles.
Différentes normes et spécifications ont vu le jour comme SPF (Sender Policy Framework), DKIM (DomainKeys Identified Mail) ou encore DMARC (Domain-based Message Authentication, Reporting and Conformance).

La plupart fonctionnent par une déclaration DNS dans le domaine.
Elles visent à sécuriser le serveur mail et lutter contre le SPAM et usurpation d'identité.
Il est donc essentiel de les mettre en place pour éviter que les mails envoyés par votre MTA ne soit considéré comme du pourriel.

Ce tutoriel vous explique ce qu'est SPF, DKIM, DMARC et donnes quelques exemples de configurations.

SPF, DKIM, DMARC c’est quoi ?

Qu'est-ce que SPF

SPF (Sender Policy Framework) est une norme de mail apparu en 2014
Le protocole  SPF vise à réduire les possibilités d'usurpation en publiant dans le DNS du domaine, un enregistrement de type TXT.
On y déclare les adresses IP autorisées ou interdites à envoyer du courrier pour le domaine considéré.

L'identité testée par SPF est celle indiquée par la commande MAIL FROM dans la session SMTP. C'est donc une information qui appartient à l'enveloppe du courrier, pas à ses en-têtes. Dans certaines conditions, SPF peut aussi utiliser le nom de la machine expéditrice, tel que spécifié dans la commande HELO)

Les deux mécanismes passent donc par des déclarations DNS de votre domaine d'email.
Cela peut aider à détecter les mails de spam.
Par exemple, ci-dessous spamassassin s'appuie sur SPF pour noter un mail de spam.

Spamassassin utilise SPF pour évaluer un mail comme SPAM
Utilisez SPF, DKIM pour évaluer un serveur de mail comme SPAM
RésultatExplicationAction résultante
PassL'enregistrement SPF a désigné l'hôte comme autorisé à envoyerAccepté
FailL'enregistrement SPF a désigné l'hôte comme non autorisé à envoyerRejeté
SoftFailL'enregistrement SPF a désigné l'hôte comme non autorisé à envoyer mais est en cours de transitionAccepté mais relevé
NeutralL'enregistrement SPF a explicitement renvoyé que rien ne pouvait être dit à propos de la validité de la requêteAccepté
NoneLe domaine n'a pas d'enregistrement SPF ou alors l'enregistrement SPF n'évalue pas un résultatAccepté
PermErrorUne erreur permanente a été renvoyée (badly formatted SPF record). (Enregistrement SPF mal formaté)Non spécifié
TempErrorUne erreur passagère (temporaire) est arrivéeAccepté ou rejeté
Les résultats d'une évaluation SPF

Gmail affiche les tests et évaluations dans l'original du mail reçu.

Les évaluations SPF, DMARC et DKIM dans Gmail

Configuration SPF

Voici quelques exemples de configuration SPF dans la zone DNS.
On y déclare donc les domaines ou IP autoriser à envoyer des mails puis un modificateurs ~all, -all pour indiquer l'action à effectuer quand l'évaluation ne passe pas.

Ceci indique que seul le serveur 1.1.1.1 peut envoyer des emails pour ce domaine :

v=spf1 ip4:1.1.1.1 ~all

Il est aussi possible de déclarer un reverse DNS :

v=spf1 ptr:monreverse.mon_domaine.fr ~all

Ceci indique que tous les serveurs ayant un “reverse” se terminant par malekal.com peuvent envoyer les emails de ce domaine:

v=spf1 ptr:malekal.com ~all

Enfin il est possible de déclarer plusieurs entrées SPF avec include.
Par exemple ci-dessous, spf.protonmail.ch, l'IP 54.38.94.97 et les mx sont autorisés à envoyer des mails.

"v=spf1 include:_spf.protonmail.ch ip4:54.38.94.97 mx ~all"
Configuration SPFDescription
v=spf1Cette partie définit l'enregistrement comme SPF. Un enregistrement SPF doit commencer par cette section. Il s'agissait d'une deuxième version de SPF (SenderID) créée par Microsoft, mais celle-ci a été abandonnée.
a :Définissez l'enregistrement DNS A du domaine actuel (ou spécifié) comme source d'envoi valide.
mx :Renseignez ici les serveurs qui réceptionnent vos e-mails (serveurs MX) si ces derniers peuvent également en envoyer. Ils seront ainsi identifiés comme une source d’envoi légitime.
ptr :Renseignez ici des noms d’hôtes dont le reverse est fonctionnel (grâce à un champ PTR dans la zone DNS). Ils seront ainsi identifiés comme une source d’envoi légitime.
ip4 :Indiquez les IP ou les plages d’IP (IPv4) autorisées à envoyer des e-mails avec vos adresses.
ip6 :Indiquez les IP ou les plages d’IP (IPv6) autorisées à envoyer des e-mails avec vos adresses.
include :Renseignez ici des noms de domaine externe. Cela permettra d’utiliser le SPF de ces derniers pour votre propre domaine.
-all est un « hard fail »N’importe quel message qui ne provient pas d’un serveur repris dans le SPF doit être traité comme du spam
~all est un « soft fail », N’importe quel message qui ne provient pas d’un serveur repris dans le SPF est probablement du spam
?all est « neutre », Le serveur de courrier entrant peut lui-même décider si le serveur sortant n’est pas repris dans le SPF, mais si le serveur mail est exclusivement inclus dans le SPF, cela devrait fonctionner
+allAucune limite pour ce domaine
Les déclarations DNS SPF

Qu'est-ce que DKIM

Les spécifications pour DKIM (DomainKeys Identified Mail) sont apparues en 2006.
Le but est ajouter une signature cryptographique à l’en-tête de chaque message envoyé.
Cette signature est propre à votre domaine ce qui permet donc d'associer un message à un domaine.
L'administrateur du domaine génère une paire de clés. La clé publique est ajoutée à votre domaine, dans un enregistrement DNS.
La clé privée sert à ajouter la signature dans l'en-tête du mail.
Plus d'informations sur le fonctionnement de ces clés de chiffrement sur la page : 

Quand un serveur de réception (Gmail, Hotmail, ou n’importe quel serveur d’entreprise par exemple) reçoit votre message, il vérifie la clé publique pour déterminer si votre clé privée à été utilisée pour générer la signature du message. Si cette clé privée n’est pas utilisée, le message peut alors considéré comme une tentative de phishing ou de spam.

Qu'est-ce que DMARC

DMARC, qui vient de l'anglais Domain-based Message Authentication, Reporting and Conformance est un standard qui vient se greffer à SPF et DKIM

DMARC standardise la façon dont les destinataires (au sens des MTA destinataires) réalisent l'authentification des e-mails en utilisant les mécanismes de SPF et DKIM.
Cela signifie que l'expéditeur (au sens d'un MTA expéditeur) recevra les résultats de l'authentification de ses messages par AOL, Gmail, Hotmail, Yahoo! et tout autre destinataire qui implémente DMARC.

Une politique DMARC autorise l'expéditeur à indiquer que ses e-mails sont protégés par SPF et/ou DKIM et dit au destinataire que faire si ces méthodes d'authentification échouent (ex : rejeter tous les emails sans DKIM et prévenir une adresse email).
DMARC supprime les conjectures que le destinataire doit faire à propos de la façon de gérer ces messages en échec, limitant ou supprimant l'exposition de l'utilisateur aux messages potentiellement frauduleux ou dangereux. DMARC fournit également un moyen pour les destinataires de rendre compte à l'émetteur du message qu'il a réussi ou échoué l'évaluation DMARC.

Les politiques DMARC :

  • politique none: Vous recevez un rapport DMARC par mail pour surveiller les résultats de l'authentification DMARC afin de prendre des mesures spécifiques sur tous les emails défaillants
  • politique quarantine: Tous les emails qui échouent sont placés en quarantaine. En général, elles finissent dans le dossier indésirable du destinataire
  • politique reject: Vous pouvez rejeter tous les emails qui échouent aux vérifications DMARC. Les destinataires doivent le faire «au niveau SMTP». Les emails seront rejetés directement dans le processus d’envoi

Le rapport obtenu est sous la forme d'un fichier XML :

Rapport DMARC XML

Configuration DMARC

Voici un exemple de déclaration DNS DMARC :

v=DMARC1; p=none; rua=mailto:[email protected]
Configuration DMARCRequièrentDescription
vObligatoireIndique la version de DMARC.
Ex: v=DMARC1
pObligatoireIndique la politique DMARC.
Ex :
p=quarantine
spOptionnelFonctionne comme p mais pour les sous-domaines
pctOptionnelIndiquer le pourcentage de messages soumis au filtrage (par défaut 100%)
Ex : pct=20
ruaOptionnelIndique l’email, ou les emails séparées par une virgule qui recevront les rapports DMARC.
rufOptionnelComme rua mais fournit un rapport beaucoup plus détaillés
aspfOptionnelMode d'alignement pour SPF
Ex : aspf=r
adkimOptionnelMode d'alignement pour DKIM
Ex : adkim=r
Les entrées et déclarations DNS DMARC

Tags: