SPF, DKIM, DMARC c’est quoi ?

Pour la bonne délivrabilité de vos emails, vous devez toujours penser à configurer correctement vos SPF, DKIM et DMARC. Nous allons voir ce qui se cache derrière.

SPF :

SPF c’est quoi ?

Une protection pour ne pas envoyer des emails au nom d’une autre personne.
Ex : envoyer un email au nom de contact@monConcurrent.com
Le protocole SMTP ne prévoyant pas de système d’authentification, vous pouvez très bien expédier un email ainsi.

Oui mais non, car il fallait bien trouver une solution et trouver une parade à un con qui utiliserait votre email (pour ceux qui souhaite en savoir plus sur ces individus, une petite vidéo s’impose).

SPF existe depuis 2006 (suite à des discussions commencées en 2000.
Le but du SPF va être, une configuration qui va vous permettre d’indiquer qu’elles sont les domaines et/ou IPs autorisées à expédier des emails en votre nom.

Ex :
Une entrée de type TXT indique ceci.
v=spf1 a mx ip4:xxx.xxx.xxx.xxx include:spf.mailjet.com ~all
Ce qui signifie que l’IP (de type v4) nommée xxx.xxx.xxx.xxx (pour l’exemple) est autorisée à expédier des emails en votre nom. Ainsi que l’IP derrière votre champ A, MX et que le prestataire MailJet aussi.

Voir l’infographie sur le SPF (cliquez-ici)

Configuration SPF :

Vous devez réaliser la configuration du SPF sur votre zone DNS, depuis le prestataire en charge de la gestion de votre nom de domaine. Pour cela ajouter une entrée de type TXT, puis indiquer la valeur concernant les prestataire que vous utilisez pour l’expédition de vos emails.

Exemple, j’utilise OVH et MailJet, alors vous pourriez indiquer ceci :
v=spf1 include:mx.ovh.com include:spf.mailjet.com ~all
On autorise ovh (avec mx.ovh.com) et mailjet (avec spf.mailjet.com).

Exemple, j’utilise ionos (anciennement 1and1) et MailChimp :
v=spf1 a mx include:_spf.perfora.net include:_spf. kundenserver.de include:servers.mcsv.net ~all
On autorise ionos (avec _spf.perfora.net et _spf.kundenserver.de) et mailchimp (avec servers.mcsv.net).

a :
Renseignez ici des noms de domaine. Cela légitimera les serveurs hébergeant les sites de ces derniers à envoyer des e-mails avec vos adresses.
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. Cela permettra d’utiliser le SPF de ces derniers pour votre propre domaine. Par exemple, OVH utilise cette méthode dans sa configuration SPF : « v=spf1 include:mx.ovh.com ~all », ce qui permet à OVH de gérer le SPF de mx.ovh.com et de permettre à ses clients de l’utiliser.

-all est un « hard fail », ce qui signifie que 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 », ce qui signifie que n’importe quel message qui ne provient pas d’un serveur repris dans le SPF est probablement du spam

?all est « neutre », ce qui signifie que 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

+all signifie qu’il n’y a aucune limite pour ce domaine

Ex : v=spf1 +a +mx -all

NB : Une seule entrée SPF doit exister sur votre configuration.

Vérifier votre configuration sur : mxtoolbox.com, kitterman.com.
Un peu de doc : OpenSPF.org.


DKIM :

DKIM c’est quoi ?

DKIM existe depuis 2007 de la fusion de 2 technologies.
La 1er développée par Yahoo (DomainKeys) et la 2nd par Cisco (Identified Internet Mail). DKIM va essayer de matcher entre un « nom de domaine » et un « message », en y ajoutant une « signature ». Le clef cryptée est située dans un enregistrement DNS. Ce faisant, DKIM permet de vérifier si un message a été modifié lors de son transport (entre les différents serveurs SMTP) et de garantir que le contenu arrivera intact jusqu’au destinataire.

Plusieurs entrées DKIM peuvent exister sur votre configuration.

Vérifier votre configuration sur : dkimcore.org.


DMARC :

DMARC c’est quoi ?

C’est un protocole d’authentification pour les emails.
Son but : réduire les emails frauduleux (ex : spams, phishing).
Il se base sur d’autres protocoles (SPF / DKIM).
DMARC apporte du reporting, permettant (au serveur émetteurs et récepteurs) d’améliorer (et surveiller) la protection des emails frauduleux.

Configuration DMARC :

Valeur possible (cf dmarc.org) :

  • v = DMARC1
    Indique la version.
  • p = none
    Indique la politique à appliquer pour le domaine.
    Vous pouvez utiliser : none, quarantine, reject.

    politique none: Vous voulez juste surveiller les résultats DMARC et vous ne voulez pas prendre des mesures spécifiques sur tous les emails défaillants. Vous pouvez utiliser la politique «none» pour commencer avec DMARC et rassembler tous les rapports DMARC et commencer à analyser ces données.

    politique quarantine: Vous mettez les emails qui échouent aux vérifications, en quarantaine. La plupart de ces emails se retrouveront dans le dossier de courrier 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.
  • sp = idem “p”, mais pour vos sous-domaines.
  • pct = pourcentage de message soumis au filtrage (valeur par défaut = 100%)
    ex : pct=20 pour 20%.
  • rua = mailto:postmaster@tld.com
    ou pour plusieurs mailto:postmaster@tld.com,mailto:postmaster@lorem.com
    Indique l’email, ou les emails séparées par une virgule, de réception des rapports cumulés).
  • ruf = mailto:bbb@tld.com
    Idem rua, rapports d’investigation numérique, plus délicat à interpréter en raison du volume considérable de données qu’ils contiennent.
  • aspf = r
    (ou s) r=mode souple/relâché, et s=mode strict.
  • adkim = r
    (ou s) r=mode souple/relâché, et s=mode strict.

L’entrée devra toujours commencer par la balise « v » (=version).
La balise « v » et « p » sont obligatoires.

Exemple, créer une entrée sur votre zone DNS avec :

Type : TXT
Nom : _dmarc.eewee.fr.
TTL : 14400
Données TXT : v=DMARC1; p=none; rua=mailto:dmarc@eewee.fr

1/ L’email dmarc@eewee.fr va recevoir un rapport quotidien concernant les messages reçus (ayant passés le contrôle de la politique ou pas) :

v=DMARC1; p=none; rua=mailto:dmarc@eewee.fr

2/ Demander le placement en quarantaine des messages ne passant pas le contrôle de la politique (ici pct=100 pour indiquer que 100% des messages doivent être traité de cette manière) :

v=DMARC1; p=quarantine; pct=100;

3/ Demander un rejet de la moitié du volume de message ne passant pas le contrôle de la politique (le reste sera placé en quarantaine) :

v=DMARC1; p=reject; pct=50;

Vous pouvez ajuster doucement, en monitorant les résultats ainsi obtenu, passant successivement de :

  • Surveillez tous.
  • Quarantine 1%.
  • Quarantine 5%.
  • Quarantine 10%.
  • Quarantine 25%.
  • Quarantine 50%.
  • Quarantine all.
  • Reject 1%.
  • Reject 5%.
  • Reject 10%.
  • Reject 25%.
  • Reject 50%.
  • Reject all.

Exemple de rapport :

<record>
    <row>
        <source_ip>207.126.144.129</source_ip>
        <count>1</count>
        <policy_evaluated>
            <disposition>none</disposition>
        </policy_evaluated>
    </row>
    <identities>
        <header_from>stefanomail.com</header_from>
    </identities>
    <auth_results>
        <dkim>
            <domain>stefanomail.com</domain>
            <result>pass</result>
            <human_result></human_result>
        </dkim>
        <spf>
            <domain>stefanomail.com</domain>
            <result>pass</result>
        </spf>
    </auth_results>
</record>

<record>
    <row>
        <source_ip>207.126.144.131</source_ip>
        <count>1</count>
        <policy_evaluated>
            <disposition>none</disposition>
            <reason>
                <type>forwarded</type>
                <comment></comment>
            </reason>
        </policy_evaluated>
    </row>
    <identities>
        <header_from>stefanomail.com</header_from>
    </identities>
    <auth_results>
        <dkim>
            <domain>stefanomail.com</domain>
            <result>pass</result>
            <human_result></human_result>
        </dkim>
        <spf>
            <domain>stefanomail.com</domain>
            <result>pass</result>
        </spf>
    </auth_results>
</record>

Comment vérifier votre DMARC ?

1er solution (via votre terminal avec nslookup) :

nslookup
>set type=TXT
>_dmarc.eewee.fr

Ce qui donnera :
_dmarc.eewee.fr text = « v=DMARC1;p=none;rua=mailto:dmarc@eewee.fr »

2ème solution (via votre terminal avec dig) :

dig +short txt _dmarc.eewee.fr

Ce qui donnera :
v=DMARC1\; p=none\; rua=mailto:mailto:dmarc@eewee.fr

3ème solution : via le site MxToolbox :

https://mxtoolbox.com/DMARC.aspx
Indiquer l’url de votre domaine, puis validez.

Ce qui donnera :

Configurer DMARC sur mon fournisseur :

Qui peu m’aider ?

Monitorer DMARC et vous permettre de savoir qui essai d’usurper votre identité :

Voir aussi : mail-tester.com

La solution (payante) 250ok.com, vous permet aussi de :

  • Monitorer votre réputation (listes noires, Microsoft, Signal-Spam, systèmes d’authentification)
  • Réaliser des tests de seedlist (FAI/Webmails, test du contenu du message, …)
  • Tester l’affichage de votre e-mail (via Email On Acid),
  • Analyser votre audience (mieux connaître les comportements des abonnés).

Lexique SPF, DKIM, DMARC :

SPF = Sender Policy Framework.
DKIM = DomainKeys Identified Mail.
DMARC = Domain-based Message Authentication, Reporting and Conformance.

SPF, DKIM et DMARC ne sont pas des solutions ultimes permettant de ne plus arriver en spam. Il s’agit juste de bonne pratique à mettre en place pour être vu comme légitime par les serveurs réceptionnant vos emails.

Source : returnPath.com, dmarcAnalyzer.com,  Gmail, zonemaster.fr, Wikipedia, Octopuce.fr.

A lire aussi :

Michael

Développeur / intégrateur, travaillant en agence web depuis 2005, je viens à présent vous proposer de venir découvrir mes créations personnelles de plugins / themes pour le CMS Wordpress & Prestashop, quelques solutions en mode SAAS & un peu d'actualité web ( / Twitter).

Vous aimerez aussi...