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.


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é.


3 outils pour Créer, Tester ET Vérifier votre enregistrement SPF :

http://www.spfwizard.net/

http://mxtoolbox.com/NetworkTools.aspx

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

Choisissez celui qui vous convient le mieux, ou utilisez les 3, à 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 ?

S’il est mal configuré, il peut occasionné la perte d’email. Testez et vérifiez votre enregistrement avant de le mettre en place avec les outils SPF Wizard, MX Tool Box, et Kitterman.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.


Pour vous aider à créer et vérifier votre SPF, des outils vous sont proposés un peu plus bas en fin de page.


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.


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 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 (?), Tilde (~) et Tiret (-) dans les expressions suivantes :

?all, -all et ~all

Le point d’interrogation est neutre.

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, généralement peu 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.


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


Pour Créer, Tester ET Vérifier votre enregistrement SPF :

http://www.spfwizard.net/

http://mxtoolbox.com/NetworkTools.aspx

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

Autres liens utiles :

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