SPF · diagnostic
SPF : la limite des dix résolutions DNS
Le RFC 7208 interdit à l’évaluation d’un enregistrement SPF de déclencher plus de dix requêtes DNS. Au-delà, l’évaluation s’arrête sur un permerror et l’enregistrement cesse de protéger le domaine. Les mécanismes include, a, mx, ptr, exists et redirect comptent ; ip4 et ip6 sont gratuits.
Par Tom GernezMis à jour le 5 min de lecture
À retenir
- La limite est de dix résolutions, définie au §4.6.4 du RFC 7208.
- Un
includecompte pour un, plus tout ce que l’enregistrement inclus consomme à son tour. ip4etip6ne coûtent rien : ils ne déclenchent aucune requête.- Le dépassement est silencieux. Aucun message ne rebondit, et le domaine se croit protégé.
- Une seconde limite, moins connue, plafonne à deux les résolutions sans réponse (void lookups).
Ce que dit la norme
Les mécanismes include, a, mx, ptr et exists, ainsi que le modificateur redirect, entraînent des requêtes DNS. Le nombre de ces requêtes DOIT être limité à 10 lors de l’évaluation d’un enregistrement SPF donné.
La raison de cette limite est défensive : sans elle, un enregistrement SPF malicieusement construit pourrait faire exécuter des centaines de requêtes DNS à tout serveur qui l’évalue, ce qui en ferait un amplificateur d’attaque par déni de service.
La conséquence pour vous est franche : au-delà de dix, l’évaluation ne renvoie pas « échec », elle renvoie permerror. Et un permerror n’est pas un fail : la plupart des serveurs destinataires traitent alors le message comme si SPF n’existait pas.
Compter les résolutions
| Mécanisme | Coût | Remarque |
|---|---|---|
ip4: | 0 | Une adresse ou un bloc, écrit en clair. Rien à résoudre. |
ip6: | 0 | Idem. |
a | 1 | Résout l’enregistrement A du domaine. |
mx | 1 (+1 par serveur) | Résout les MX, puis l’adresse de chacun. Coûteux. |
include: | 1 + le coût de l’inclus | Le piège principal : le compte est récursif. |
exists: | 1 | Rare hors macros. |
ptr | 1 (+1 par nom) | Déconseillé par la norme elle-même. À supprimer. |
redirect= | 1 + le coût de la cible | Compte comme un include. |
all | 0 | Le qualificateur final. Aucune requête. |
La récursivité est ce qui fait déborder les enregistrements : un include coûte une résolution pour lui-même, plus tout ce que l’enregistrement inclus consomme à son tour. Un fournisseur qui en imbrique trois en consomme quatre.
v=spf1 include:_spf.google.com include:sendgrid.net
include:_spf.brevo.com include:servers.mcsv.net
include:spf.protection.outlook.com mx a -allCinq services à une résolution chacun, plus a et mx qui en coûte une de plus par serveur listé : on arrive à neuf ou dix. L’enregistrement est syntaxiquement parfait et il tient encore. Le prochain outil ajouté le fait basculer, et personne ne le verra.
La seconde limite : les résolutions sans réponse
Le même RFC plafonne à deux le nombre de void lookups : les requêtes qui reviennent vides, avec NXDOMAIN ou zéro réponse. Au-delà de deux, c’est également un permerror.
C’est la panne des enregistrements qui vieillissent : un include vers un prestataire dont on s’est séparé, et dont le domaine SPF n’existe plus, consomme un void lookup. Trois anciens prestataires suffisent à casser un enregistrement par ailleurs correct.
Repasser sous la limite
- Supprimer ce qui ne sert plus. Le premier passage est presque toujours suffisant : les anciens prestataires, l’outil testé six mois, le
ptrhérité d’un modèle de configuration. C’est gratuit et sans risque. - Retirer mx et a s’ils sont inutiles. Ils sont dans presque tous les enregistrements par habitude. Votre serveur de réception n’est pas forcément votre serveur d’envoi ; s’il ne l’est pas,
mxne sert qu’à consommer des résolutions. - Déléguer par sous-domaine. Faire envoyer chaque famille de services depuis un sous-domaine dédié,
envois.exemple.frpour la newsletter,factures.exemple.frpour la facturation, donne à chacun son propre budget de dix résolutions. C’est la solution propre, et elle améliore aussi la lecture des rapports. - En dernier recours, remplacer un include par ses ip4. Cela fonctionne, et cela crée une dette : voir ci-dessous.
dig +short TXT exemple.fr | grep spf1L’aplatissement, et pourquoi c’est un piège
L’aplatissement (flattening) consiste à remplacer un include par la liste des adresses IP qu’il désigne au moment où on regarde. Le compte de résolutions tombe, l’enregistrement redevient valide, et le problème semble réglé.
Il ne l’est pas : il est déplacé dans le temps. Ces adresses appartiennent à votre prestataire, qui les change quand il veut et sans vous prévenir, c’est précisément la raison pour laquelle il publie un include plutôt qu’une liste. Le jour où il ajoute un bloc, vos messages échouent à SPF sans que rien n’ait changé chez vous.
Ce que SPF ne fait pas, même sous la limite
SPF vérifie l’Envelope-From, une adresse que votre destinataire ne voit jamais. Un enregistrement parfait n’empêche donc personne d’afficher votre domaine dans le champ que l’humain lit : seul DMARC, en exigeant l’alignement des deux, referme cette porte.
SPF ne survit pas non plus aux transferts, puisque l’adresse IP change en route. C’est la raison pour laquelle DKIM n’est pas optionnel : dans un monde où les messages sont transférés, il est le seul des deux contrôles qui tienne.
Questions fréquentes
Sources
Définitions
À lire ensuite
- DMARC : le guide complet
Ce qu’est DMARC, comment l’enregistrement se lit, comment on le publie et comment on le passe en rejet sans casser sa messagerie. Écrit par un consultant qui le déploie, avec les valeurs exactes.
- Passer DMARC en reject sans casser sa messagerie
La montée jusqu’à p=reject, palier par palier, sur deux à trois semaines. Comment lire les rapports, aligner chaque expéditeur légitime, et à quoi reconnaître qu’on peut durcir.
- Ce que DMARC ne protège pas
DMARC bloque l’usurpation exacte de votre domaine, et rien d’autre. Les domaines sosies, le nom affiché trompeur et les boîtes compromises passent au travers. Ce que cela veut dire concrètement.
Vous voulez savoir ce qui est publié sur votre domaine ? La vérification est gratuite, sans inscription, et ne lit que des enregistrements publics. Vérifier votre domaine
Tom Gernez · Consultant indépendant en sécurité informatique. Ruvalin met en place l’authentification des e-mails des PME et des professions libérales françaises.