Qu’est-ce que le SPF (Sender Policy Framework) ?
SPF est un processus d’authentification permettant de s’assurer que l’email est bien éligible.
Le serveur SMTP utilisé lors du transfert d’un courrier électronique ne vérifie pas l’identité de l’expéditeur. Il est donc aisé d’usurper une identité ou d’en utiliser une factice.
C’est là que le SPF intervient. Il a pour but de limiter le spam, mais faut-il encore que le serveur de réception soit configuré pour interpréter les champs SPF.
Grâce à un simple enregistrement dans le DNS (de type TXT), on va simplement venir renseigner les adresses IP et/ou les domaines autorisées ou interdites à envoyer des emails pour le domaine considéré.
Pourquoi mettre en place un SPF ?
Lorsque des spams sont envoyés sous votre identité, vous risquez de vous faire blacklister. Vous aurez alors bien du mal à envoyer des mails…
Comment créer un SPF ? Quelles options utiliser ?
Le SPF est un enregistrement TXT
Il devra toujours commencer par v=spf1
Il sera suivit des enregistrements A , MX , IP4 ou IP6
Il finira par ALL
Il existe des outils vous aidant dans la création de votre SPF, ils seront indiqués en fin d’article
IP4 ou IP6
IP4 spécifie une IP ou une plage d’IP en IPv4
v=spf1 ip4:212.208.150.151 +all
v=spf1 ip4:212.208.150.0/24 +all
IP6 spécifie une IP ou une plage d’IP en IPv6
v=spf1 ip6:0:0:0:0:0:ffff:d4d0:9697 +all
v=spf1 ip6:0:0:0:0:0:ffff:d4d0:9600/24 +all
A
L’argument A indique une résolution d’IP :
Du domaine par défaut
v=sfp1 a +all
D’un domaine spécifié
v=spf1 a:toto.com
De l’enregistrement DNS
v=spf1 a:mail.toto.com +all
Du réseau du domaine spécifié
v=spf1 a/24 +all
v=spf1 a:toto.com/24 +all
MX
On spécifie ici les serveurs de mails autorisés :
Résolution MX du domaine
v=spf1 mx +all
Résolution MX d’un domaine spécifié
v=spf1 mx:toto.com +all
Résolution MX de l’enregistrement DNS
v=spf1 mx:mail.toto.com +all
Résolution du réseau domaine spécifié
v=spf1 mx/24 mx mx:toto.com/24 +all
ALL
Il vient généralement se placer en fin de commande :
Tout est autorisé : +all
v=spf1 ip4:212.208.150.151 +all
Seule l’IP enregistrée est autorisée à envoyer du courrier :-all
v=spf1 ip4:212.208.150.151 –all
Le domaine ne peut pas envoyer de courrier du tout
v=spf1 –all
L’hôte n’est pas autorisé à envoyer, mais est en transit :~all
v=spf1 a:toto.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 donner lieu à un SPF à rallonge. Afin d’éviter ça, il est préférable de créer des enregistrements avec le même nom, et de faire le SPF avec.
Exemple
A proscrire
v=spf1 ip4:80.74.64.73 ip4:80.76.64.72 ip4:80.74.64.159 –all
A adopter
v=spf1 spf.DOMAIN.fr –all
et créer les enregistrements suivants :
spf.DOMAIN.fr A 80.74.64.73
spf.DOMAIN.fr A 80.76.64.72
spf.DOMAIN.fr A 80.74.64.159
D’autres options peu utilisées sont également disponibles
PTR
Le ou les noms d’hôte pour l’adresse IP du client sont recherchés en utilisant des requêtes PTR.
Les noms d’hôte sont ensuite validées et au moins l’un des enregistrements A pour un nom d’hôte PTR doit correspondre à l’adresse IP du client d’origine.
Les noms d’hôte non valides sont rejetés.
Si un nom d’hôte 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 (hotmail, gmail …)
v=spf1 ptr –all
Tout serveur dont le nom d’hôte se termine en toto.com est autorisé
v=spf1 ptr:toto.com -all
/ ! \ Si possible, évitez d’utiliser ce mécanisme dans un enregistrement SPF, cela se traduira pas 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 toto.com n’a pas d’enregistrement SPF, il en résultera une PermError
v=spf1 include:toto.com –all
On suppose que toto.com a un enregistrement du type
v=spf1 a –all
On recherche alors l’enregistrement A pour toto.com
S’il y a 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
/ ! \ Si le domaine n’a pas un enregistrement SPF valide, il en résultera une erreur permanente !
Vous aurez des rejets basés sur une 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.
Lorsque l’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:toto.com –all
Si la résolution du domaine toto.com marche, la requête fonctionne.
Si la résolution du domaine toto.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 toto.com
v=spf1 redirect=toto.com
Si toto.com n’a pas d’enregistrement SPF, c’est une erreur, le résultat est inconnu.
Si toto.com a un enregistrement du style v=spf1 a –all, on recherche l’enregistrement A pour toto.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 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 toto.com
v=spf1 mx –all exp=error.toto.com
On ajoute « error » aux enregistrements
error IN TXT « SPF erreur ip non presente dans le spf »
/ ! \ L’enregistrement EXP doit venir en fin de commande.
Un outil pour vous aider
http://www.kitterman.com/spf/validate.html
Ce site propose de tester votre SPF
Envie d’en savoir plus ?