Le Sender Policy Framework (SPF)

Nous mettons cette page à votre disposition pour vous permettre de comprendre le fonctionnement du SPF et de configurer votre entrée SPF sur votre zone DNS en fonction de vos besoins.

Open-spf.org fournit toutes les informations nécessaires pour comprendre et créer un enregistrement SPF. C’est le site officiel du Sender Policy Framework project.


Qu’est-ce que le SPF (Sender Policy Framework) ?

Le SPF est un processus d’authentification permettant d’authentifier les expéditeurs d’emails.

Le serveur d’envoi (SMTP) utilisé lors de l’émission d’un email ne vérifie pas l’identité de son expéditeur. Il est donc facile d’usurper l’identité d’un tiers ou d’en utiliser une fausse en envoyant un email.

Le SPF intervient ici afin d’authentifier l’identité de l’expéditeur, dans le but d’empêcher l’usurpation et de limiter le spam. Toutefois il est nécessaire que le serveur de réception soit configuré pour interpréter les données de l’enregistrement SPF.

Grâce à un simple enregistrement dans la zone DNS d’un domaine, on va indiquer les adresses IP et/ou les domaines autorisés ou bien interdits à envoyer des emails pour le domaine concerné.


Conseils :
Le SPF doit être configuré avec un enregistrement TXT, plutôt qu’un enregistrement SPF.

Pour les domaines qui n’envoient pas de courrier électronique, créez un enregistrement SPF vide pour indiquer que le domaine n’envoie pas de courrier électronique (par exemple, «v=spf1 –all»).

Gardez la longueur de l’enregistrement SPF en-dessous des 255 caractères. La longueur maximale d’un enregistrement DNS TXT est de 255 caractères.

Assurez-vous que l’enregistrement SPF ne contient pas plus de 10 recherches (lookups) DNS (include, a, mx, exists, redirect). Les mécanismes d’inclusion peuvent pointer vers d’autres enregistrements SPF avec des mécanismes d’inclusion qui doivent tous tenir compte du maximum de 10 recherches (lookups) DNS. Les adresses IP ne nécessitent pas de recherche (lookup) DNS. Le dépassement de 10 recherches (lookups) DNS entraînera souvent un échec.

N’utilisez pas le mécanisme PTR selon RFC 7208.

Le qualificatif –all est généralement préféré mais ~ all est acceptable. N’utilisez pas + (tous) ou ? (neutre) car ils rendent l’enregistrement SPF inutile.

Utilisez la notation CIDR pour les plages IP dans l’enregistrement SPF, le cas échéant (par exemple, «v = spf1 ip4: 195.164.0.1/16 –all»; qui autorise toute adresse IP entre 195.164.0.1 et 195.164.255.255).

Gardez l’enregistrement SPF à jour. Pensez à le mettre à jour lorsque vous changez de fournisseur de services et si vous envoyez depuis de nouvelles adresses IP (serveurs de messagerie) sinon cela peut entraîner des enregistrements SPF incomplets.

Si vous avez besoin d’assistance pour la configuration de votre SPF, il existe plusieurs services tiers et outils que vous pouvez utilisez. Consultez la liste ci-dessous pour plus d’informations.

Lorsque vous effectuez vos mises à jour, il est également important d’inclure dans votre enregistrement SPF tous vos fournisseurs de service de messagerie (ESP) et/ou fournisseurs d’accès Internet (FAI).

Évitez de créer plusieurs enregistrements TXT pour votre SPF. Vous pouvez toutefois créer plusieurs valeurs dans le même enregistrement avec une instruction « include ».

Exemple d’enregistrement SPF “générique” :

v=spf1 a mx include:spf.domain.com include:servers.example.net IP4:XXX.XX.XX.XXX -all

Utilisez le type TXT pour créer votre entrée DNS sur le modèle suivant :

domain.com   3600   TXT    v=spf1 a mx ip4:XX.XX.XXX.XXX ip4:XX.XXX.XX.XXX -all

Si vous utilisez les services de messagerie SafeBrands :

domain.com. 3600 TXT v=spf1 a mx include:mailclub.fr include:safebrands.com include:mailout.safebrands.com ip4:XX.XX.XXX.XXX ip4:XX.XXX.XX.XXX -all

Si vous utilisez les services Microsoft Office 365 pour Outlook :

domain.com. 3600 TXT v=spf1 a mx include:spf.protection.outlook.com ip4:XX.XX.XXX.XXX ip4:XX.XXX.XX.XXX -all

Indiquez les adresses IP autorisées à émettre des emails via ce nom de domaine : adresse IP de votre serveur d’hébergement de messagerie, adresse(s) IP de votre FAI, etc.


Outils : Créez, Testez & Vérifiez votre enregistrement SPF


Open-spf.org fournit les informations nécessaires pour comprendre et créer un enregistrement SPF.

↪︎ Pour générer votre enregistrement SPF : https://spfrecord.io/

Pour tester et vérifier après mise en place :

http://www.spfwizard.net/

https://www.fraudmarc.com/spf-record-check/

http://mxtoolbox.com/NetworkTools.aspx

https://www.kitterman.com/spf/validate.html

https://vamsoft.com/support/tools/spf-syntax-validator

https://vamsoft.com/support/tools/spf-policy-tester (Simulateur avec paramètres de test)

Choisissez celui qui vous convient le mieux, ou utilisez les 6, à vous de voir.


Définition : mieux comprendre le SPF

Le SPF qui est l’acronyme de Sender Policy Framework (Règles et politique d’émission) a été initialement mis en place pour réduire le spam. Il s’agit d’une norme de vérification du nom de domaine de l’expéditeur d’un courriel, permettant de savoir si l’envoi d’un message utilise une adresse d’expédition valide ou si celle-ci a été usurpée. Le Simple Mail Transfer Protocol (SMTP) (Protocole de Transfert de Courriel) ne possède pas de mécanisme permettant la vérification de l’expéditeur d’un message. L’objectif avec la mise en place d’un enregistrement SPF est donc d’activer une solution de validation de l’expéditeur d’un courriel. Le SPF, qui a pour avantage de relier l’adresse IP d’un serveur de messageries à son nom de domaine, permet donc de réduire les tentatives d’usurpations d’identité en publiant dans le DNS (Domain Name System ou Système de Noms de Domaine) un enregistrement de type SPF (ou anciennement TXT). Cette technologie possède cependant un problème concernant le forwarding (redirection) d’e-mail : dans ce cas, le serveur émetteur ne sera pas forcément le serveur de messagerie de l’émetteur d’origine de l’e-mail. Vous trouverez ci-dessous un schéma expliquant les mécanismes du SPF :


Pourquoi mettre en place un enregistrement SPF ?

Lorsque des spams sont envoyés sous votre identité, c’est-à-dire en utilisant votre adresse email comme adresse d’expédition, même forgée ou spoofée, cela nuit à votre réputation numérique et vous risquez de vous faire blacklister (https://mxtoolbox.com/blacklists.aspx). Si cela arrive, vous ne pourrez alors plus envoyer d‘emails.


Comment créer un enregistrement SPF ?

1. Le SPF est un enregistrement de type TXT / SPF

2. Il devra toujours commencer par la valeur : v=spf1

3. Il pourra être complété par d’autres enregistrements de type A , MX , IP4 ou IP6

4. Il finira par ALL


Quels peuvent être les effets indésirables du SPF ?

Attention, s’il est mal configuré, il peut occasionner la perte d’emails.

Open-spf.org fournit les informations nécessaires pour comprendre et créer un enregistrement SPF.
Générez votre enregistrement SPF pour votre domaine et vos spécificités avec cet outil https://spfrecord.io/. Testez et vérifiez votre enregistrement avant de le mettre en place avec les outils SPF Wizard, MX Tool Box, et Kitterman.com, ou encore Vamsoft.com.


Le SPF risque-t-il de bloquer les expéditeurs non renseignés dans l’entrée ?

Oui, l’objectif est d’autoriser certains expéditeurs et d’en interdire d’autres pour contrôler les échanges de messagerie. Les expéditeurs sont définis et autorisés par des adresses IP, des noms DNS ou bien des noms de réseaux. Non par des adresses email.


Afin de signer vos emails et d’authentifier tout expéditeur d’email sur votre domaine, vous pouvez utiliser cette entrée SPF “générique” :

votredomaine.extension   TXT   300  v=spf1 a mx ~all

→ Cet enregistrement SPF autorise tous les MX du domaine à envoyer des messages pour le domaine, et interdit tous les autres. Autrement dit : seuls les MX de ce domaine (les serveurs qui reçoivent le courrier) peuvent en émettre, le reste de l’Internet (all) est exclu.


IP4 ou IP6

IP4 spécifie une adresse IP ou une plage d’IPs en IPv4

v=spf1 ip4:195.254.100.212 +all

v=spf1 ip4:195.254.100.0/24 +all

IP6 spécifie une adresse IP ou une plage d’IPs en IPv6

v=spf1 ip6:0:0:0:0:0:ffff:d8d1:9000 +all

v=spf1 ip6:0:0:0:0:0:ffff:d8d1:9000/24 +all


A

L’élément A indique une résolution d’IP :

• Du domaine par défaut :

v=sfp1 a +all

• D’un domaine spécifié :

v=spf1 a:domain.com

• De l’enregistrement DNS :

v=spf1 a:mail.domain.com +all

• Du réseau du domaine spécifié

v=spf1 a/24 +all

v=spf1 a:domain.com/24 +all


MX

L’élément MX permet d’indiquer les serveurs de messagerie autorisés :

• Résolution MX du domaine :

v=spf1 mx +all

• Résolution MX d’un domaine en particulier :

v=spf1 mx:domain.com +all

• Résolution MX de l’enregistrement DNS :

v=spf1 mx:mail.domain.com +all

• Résolution du réseau du domaine spécifié :

v=spf1 mx/24 mx mx:domain.com/24 +all


ALL ‑ Quelle est la différence entre ?all, +all, -all et ~all dans un enregistrement DNS SPF ?

Il est possible d’appliquer une politique plus ou moins restrictive à l’aide des signes Point d’interrogation (?), Plus (+), Tilde (~) et Tiret (-) dans les expressions suivantes :

?all, +all, -all et ~all

Le point d’interrogation est neutre. Le plus accepte tous les messages.

La tilde et le tiret identifient 2 types d’échecs différents.

Considérant un message qui ne correspond pas aux paramètres spécifiés dans l’enregistrement SPF :

  • la Tilde provoque un “softfail”, le message sera accepté et marqué comme ne correspondant pas aux paramètres spécifiés ;
  • le Tiret provoque un “hardfail”, le message sera rejeté.
  • le Point d’interrogation est neutre : le message est accepté.

L’élément ALL vient généralement se placer à la fin :

• Tout est autorisé : +all

v=spf1 ip4:195.254.100.212 +all

• Seule l’IP enregistrée est autorisée à envoyer du courrier : -all

v=spf1 ip4:195.254.100.212 -all

• Le domaine ne peut pas envoyer de courrier du tout :

v=spf1 –all

• Le serveur n’est pas autorisé à envoyer de message, mais il est en transit : ~all

v=spf1 a:domain.com ~all

• Le SPF spécifie explicitement qu’il est neutre : ?all

v=spf1 ?all


Création d’un SPF avec de multiples enregistrements

De multiples enregistrements peuvent engendrer un SPF très long. Pour éviter cela il est préférable de créer des enregistrements avec un seul et même nom, et de faire le SPF avec ce nom.

Exemples

A proscrire

v=spf1 ip4:78.70.64.69 ip4:78.70.64.72 ip4:78.70.64.52 –all


A adopter

v=spf1 spf.DOMAIN.com –all

puis créer les enregistrements suivants :

spf.DOMAIN.com       A          78.70.64.69

spf.DOMAIN.com       A          78.70.64.72

spf.DOMAIN.com       A          78.70.64.52


D’autres options, moins utilisées, sont également disponibles :


PTR

Le ou les noms d’hôte/serveur pour l’adresse IP du client sont recherchés en utilisant des requêtes PTR.

Les noms d’hôte/serveur sont ensuite validés, et au moins un des enregistrements A pour un nom d’hôte/serveur PTR doit correspondre à l’adresse IP du client d’origine.

Les noms d’hôte/serveur non valides sont rejetés.

Si un nom d’hôte/serveur valide termine dans le domaine, cet argument fonctionne.

Si le domaine n’est pas spécifié, le domaine courant est utilisé.

Le domaine qui contrôle directement toutes ses machines permet à tous les serveurs d’envoyer du courrier (gmail, hotmail, yahoo …) :

v=spf1 ptr –all

Tout serveur dont le nom d’hôte se termine en domain.com est autorisé :

v=spf1 ptr:domain.com -all

Attention : si possible, évitez d’utiliser cela dans un enregistrement SPF, car cela se traduira par un plus grand nombre de recherche DNS.


INCLUDE

Le domaine spécifié est recherché pour une correspondance (il prend le même champ SPF que le domaine précisé dans le include).

Si la recherche ne renvoie pas une correspondance ou une erreur, le traitement procède à la prochaine directive.

Si domain.com n’a pas d’enregistrement SPF, il en résultera une erreur « PermError »

v=spf1 include:domain.com –all

On suppose que domain.com possède un enregistrement du type :

v=spf1 a –all

On recherche alors l’enregistrement A pour domain.com :

• S’il y a une correspondance (1.2.3.4 par exemple) alors la requête est acceptée.

• S’il n’y a pas de correspondance, autre que celui du domaine inclus, la requête sera rejetée.

Il s’agit donc d’une relation de confiance entre les domaines inclus dans le SPF.

Attention : Si le domaine n’a pas d’enregistrement SPF valide, il en résultera une erreur permanente !

Vous aurez alors des rejets basés sur une erreur « PermError ».


EXISTS

Effectue une requête sur le résultat fourni. Si un résultat est trouvé, il y a donc correspondance peu importe le résultat.

Lorsqu’on utilise des macros avec ce mécanisme, on peut effectuer des recherches inversées ou mettre en place des exceptions par utilisateur.

v=spf1 exists:domain.com –all

• Si la résolution du domaine domain.com marche, la requête fonctionne.

• Si la résolution du domaine domain.com échoue, la requête échoue.


Les Modificateurs

Les modificateurs sont des arguments facultatifs.

Un modificateur ne peut apparaitre qu’une seule fois par enregistrement.

Les modificateurs inconnus sont simplement ignorés.


REDIRECT

L’enregistrement SPF pour le domaine remplace l’enregistrement en cours.

Le SPF va utiliser le SPF de domain.com

v=spf1 redirect=domain.com

• Si domain.com n’a pas d’enregistrement SPF, c’est une erreur, le résultat est inconnu.

• Si domain.com a un enregistrement du type  v=spf1 a –all, on recherche l’enregistrement A pour domain.com.

• S’il n’y a pas de correspondance, l’argument est ignoré et la valeur suivante est utilisée (ici –all)


EXP

Si un récepteur SMTP rejette un message, il peut y inclure une explication.

Un éditeur SPF peut spécifier une réponse que les expéditeurs peuvent voir.

De cette façon un FAI peut rediriger des utilisateurs non conformes sur une page Web qui fournira de plus amples explications.

Exemple pour le domaine domain.com

v=spf1 mx –all exp=error.domain.com

On ajoute « error » aux enregistrements :

Error    IN        TXT « SPF erreur IP non présente dans le SPF »

Attention : L’enregistrement EXP doit être placé en fin de commande.


Ajout d’un SPF pour un sous-domaine :

Pour mettre en place un enregistrement SPF sur un sous-domaine, ajoutez simplement le sous-domaine au début de l’enregistrement :

mon-sous-domaine IN TXT “v=spf1 ip4:xx.xxx.xxx.xx include: domain.com ~all”

De la même façon, vous pouvez définir un MX distinct, bien que vous n’en ayez pas nécessairement besoin s’il est le même que pour le domaine :

mon-sous-domaine IN MX 1 mail.example.com.
mon-sous-domaine IN MX 10 mail2.example.com


Pour connaître votre adresse ipv4 ou votre adresse ipv6, utilisez l’outil suivant :  http://ip6.nl/


Autres liens utiles :

Configurer votre zone et vos serveurs DNS sur l’espace client SafeBrands

• Configurer SPF dans Office 365 pour empêcher l’usurpation d’identité dans votre messagerie :

https://docs.microsoft.com/fr-fr/microsoft-365/security/office-365-security/set-up-spf-in-office-365-to-help-prevent-spoofing

• Comment Office 365 utilise SPF (Sender Policy Framework) pour éviter l’usurpation :

https://docs.microsoft.com/fr-fr/microsoft-365/security/office-365-security/how-office-365-uses-spf-to-prevent-spoofing

• Pour aller plus loin : RFC 7208: Sender Policy Framework (SPF) for Authorizing Use of Domains in Email, Version 1