Un vérificateur SPF analyse l'enregistrement Sender Policy Framework d'un domaine, suit sa chaîne d'inclusions et repère les erreurs de syntaxe et les dépassements de la limite de recherches DNS qui bloquent les emails légitimes.
Ce que fait réellement SPF
Le Sender Policy Framework (RFC 7208) est un enregistrement DNS TXT qui liste les serveurs autorisés à envoyer des emails au nom d'un domaine. Quand un serveur de messagerie reçoit un message, il vérifie le domaine de l'expéditeur d'enveloppe, récupère son enregistrement SPF, puis évalue l'adresse IP du serveur émetteur par rapport aux mécanismes qu'il contient.
SPF seul n'empêche pas l'usurpation : il indique seulement au destinataire si le serveur émetteur était autorisé. Il devient réellement efficace contre le spoofing une fois combiné avec DMARC, qui décide du sort des emails qui échouent au contrôle.
- Un domaine publie un seul enregistrement SPF, toujours un TXT commençant par v=spf1
- Les mécanismes sont évalués de gauche à droite ; le premier qui correspond détermine le résultat
- L'enregistrement n'a aucun effet sur les emails entrants - il autorise uniquement les expéditeurs sortants pour ce domaine
Anatomie d'un enregistrement SPF
Un enregistrement type ressemble à ceci : v=spf1 ip4:203.0.113.10 include:_spf.google.com include:sendgrid.net -all
Chaque terme après v=spf1 est un mécanisme. Les plus courants : ip4 et ip6 autorisent des adresses ou plages précises directement, a et mx autorisent les hôtes résolus par les propres enregistrements A/MX du domaine, include importe l'enregistrement SPF d'un autre domaine (généralement celui d'un prestataire de messagerie), et all est le mécanisme fourre-tout qui capte tout ce qui n'a pas encore trouvé de correspondance.
Un qualificateur peut préfixer chaque mécanisme : + (pass, valeur par défaut si omis), - (fail), ~ (softfail), ? (neutral). Le qualificateur du mécanisme all est ce que la plupart des guides désignent quand ils parlent de "rigueur SPF".
~all ou -all : softfail et hardfail
-all (hardfail) demande aux serveurs destinataires de rejeter les emails provenant de tout serveur non listé explicitement. ~all (softfail) leur demande de les accepter mais de les marquer comme suspects, en général en ajustant un score anti-spam plutôt qu'en rejetant directement.
La plupart des déploiements SPF démarrent en ~all le temps de cartographier toute l'infrastructure d'envoi, puis passent en -all une fois que chaque source légitime - outil CRM, plateforme de facturation, scripts internes - est confirmée dans l'enregistrement. Un enregistrement sans mécanisme all, ou utilisant +all, n'apporte aucun contrôle réel : +all autorise n'importe quel serveur sur internet à envoyer des emails au nom du domaine, exactement ce que SPF est censé empêcher.
| Qualificateur | Nom | Comportement du destinataire |
|---|---|---|
| +all | Pass (défaut) | Accepte les emails de n'importe quel serveur - annule toute protection SPF |
| ~all | Softfail | Accepte mais marque comme suspect, souvent orienté vers un score de spam |
| -all | Hardfail | Rejette directement les emails des serveurs non listés |
| ?all | Neutral | Traité comme l'absence d'enregistrement SPF |
La limite de 10 recherches DNS
La RFC 7208 plafonne l'évaluation SPF à 10 recherches DNS par contrôle. Les mécanismes qui comptent dans cette limite sont include, a, mx, ptr et exists - chacun déclenche au moins une requête DNS supplémentaire lors de l'évaluation. ip4 et ip6 ne comptent pas, puisqu'ils ne nécessitent aucune résolution.
L'imbrication est la cause habituelle d'un dépassement : un include: pointant vers l'enregistrement SPF d'un prestataire hérite des propres recherches de ce prestataire, et une chaîne de trois ou quatre prestataires (plateforme d'emailing, support client, CRM, emails transactionnels), chacun apportant ses propres include et mécanismes a/mx, atteint vite la limite. Au-delà de 10, la RFC 7208 impose aux évaluateurs de renvoyer un permerror, et la plupart des serveurs destinataires traitent alors l'enregistrement comme un échec - l'inverse de ce que visait le propriétaire du domaine.
Aplatir la chaîne - remplacer les include par les plages ip4/ip6 littérales qu'ils résolvent - supprime le coût en recherches mais oblige à ré-aplatir dès que le prestataire change ses IP d'envoi, ce qui échange un problème de conformité contre un problème de maintenance.
Lire les résultats du vérificateur
Le vérificateur regroupe ses constats sous une catégorie SPF, aux côtés des résultats DMARC, DKIM, MX et listes noires. "SPF Record Found" confirme la présence d'un enregistrement TXT v=spf1 et affiche la chaîne brute. "SPF Syntax" passe quand l'enregistrement commence correctement par v=spf1. "SPF All Mechanism" indique quel qualificateur utilise le mécanisme all et le traduit en pass, warning ou fail selon qu'il s'agit de -all, ~all ou +all/absent. "SPF Mechanisms" signale si l'enregistrement autorise réellement des serveurs d'envoi. "SPF DNS Lookups" compte les mécanismes consommant des recherches et bascule en avertissement au-delà de 7, puis en échec au-delà de la limite de 10.
Si aucun enregistrement v=spf1 n'est trouvé, ou si le domaine en publie plusieurs, le vérificateur remonte un seul résultat en échec plutôt que de parcourir chaque sous-contrôle - un domaine ne peut pas avoir une posture SPF valide avec zéro ou plusieurs enregistrements, le reste de l'analyse serait sans objet.
Questions fréquentes
Un domaine peut-il avoir deux enregistrements SPF ?
Non. La RFC 7208 impose exactement un enregistrement SPF TXT par domaine. Deux enregistrements, même valides individuellement, font échouer le contrôle SPF car les évaluateurs ne peuvent pas déterminer lequel s'applique.
Un sous-domaine hérite-t-il de l'enregistrement SPF du domaine parent ?
Non. SPF s'évalue par nom d'hôte exact. mail.exemple.fr a besoin de son propre enregistrement TXT v=spf1 s'il envoie des emails directement ; il n'utilise pas automatiquement celui publié sur exemple.fr.
Dépasser la limite de 10 recherches fait-il échouer SPF silencieusement ?
Cela renvoie un permerror selon la RFC 7208, et la plupart des serveurs destinataires traitent alors l'ensemble du contrôle SPF comme échoué pour chaque message, que l'IP d'envoi réelle ait été autorisée ou non dans les premiers mécanismes évalués.
Pourquoi SPF laisse-t-il encore passer des adresses "From" usurpées ?
SPF valide l'expéditeur d'enveloppe (le MAIL FROM utilisé en SMTP), pas l'en-tête From: visible que le destinataire voit dans sa boîte de réception. Un message peut passer SPF tout en affichant un nom d'expéditeur falsifié - c'est l'alignement DMARC qui relie les deux.
Faut-il utiliser ip4 ou include pour un prestataire de messagerie hébergé ?
Utilisez include si le prestataire publie son propre enregistrement SPF (c'est le cas de la plupart, comme _spf.google.com) - il reste à jour automatiquement quand ils changent d'IP. Réservez ip4/ip6 aux serveurs que vous contrôlez directement, puisque ces adresses ne changent pas sans votre intervention.
Un modificateur redirect= compte-t-il dans la limite de recherches ?
Oui. redirect= remplace l'évaluation de l'enregistrement courant par celui du domaine cible et consomme une recherche DNS pour le récupérer, au même titre qu'un mécanisme include.
Outils liés
- Voir comment les résultats SPF alimentent l'alignement et l'application DMARC
- Vérifier le second mécanisme d'authentification sur lequel DMARC s'appuie avec SPF
- Confirmer quels serveurs reçoivent réellement les emails avant d'auditer ceux qui peuvent en envoyer
- Inspecter l'ensemble brut des enregistrements TXT publiés par un domaine, y compris SPF et autres chaînes de vérification