SPF PermError : le guide complet pour comprendre, diagnostiquer et corriger cette erreur
Par CaptainDNS
Publié le 4 mars 2026

- Un SPF PermError est une erreur permanente qui rend votre enregistrement SPF invalide et provoque le rejet de vos emails
- Les 6 causes : dépassement de 10 DNS lookups, enregistrements SPF multiples, erreurs de syntaxe, void lookups > 2, redirect invalide, includes circulaires
- Le PermError fait échouer DMARC en cascade : si DKIM échoue aussi, vos emails sont rejetés ou mis en spam
- Diagnostic en 6 étapes : vérifier les doublons, la syntaxe, le compteur de lookups, les void lookups, le redirect et les boucles
- Chaque cause a une correction spécifique : fusion, réécriture, flattening, suppression des mécanismes invalides
Votre monitoring DMARC affiche soudainement des centaines de résultats permerror pour votre domaine. Vos emails légitimes sont rejetés par Gmail, Outlook et Yahoo. Pourtant, vous n'avez rien changé récemment à votre configuration SPF.
Le SPF PermError est l'une des erreurs les plus courantes et les plus mal comprises de l'authentification email. Contrairement à un simple échec SPF (fail ou softfail), le PermError signifie que votre enregistrement est structurellement invalide : les serveurs de réception ne peuvent même pas l'évaluer. Et les causes sont multiples, du dépassement de la limite de 10 lookups à une simple erreur de syntaxe.
Ce guide détaille les 6 causes possibles d'un SPF PermError, explique comment identifier précisément laquelle affecte votre domaine et fournit les corrections adaptées à chaque situation.
Qu'est-ce qu'un SPF PermError ?
Définition selon la RFC 7208
La RFC 7208, section 2.6.7 définit le résultat permerror comme une erreur permanente dans l'évaluation SPF. Ce résultat est retourné quand l'enregistrement SPF ne peut pas être correctement interprété par le serveur de réception.
Contrairement aux autres résultats SPF (pass, fail, softfail, neutral), le PermError indique un problème dans la structure de l'enregistrement, pas dans l'autorisation de l'expéditeur. L'enregistrement est cassé et aucune décision d'autorisation ne peut être prise.
Différence entre PermError et TempError
| Résultat | Type | Cause | Action |
|---|---|---|---|
| PermError | Erreur permanente | Enregistrement SPF invalide | Correction obligatoire par l'administrateur |
| TempError | Erreur temporaire | Timeout DNS, serveur indisponible | Résolution automatique, nouvel essai |
fail | Résultat normal | IP non autorisée | Vérifier l'expéditeur |
softfail | Résultat normal | IP non autorisée (mode permissif) | Accepté avec marquage |
Le TempError est transitoire : un serveur DNS momentanément indisponible peut le provoquer. Le PermError, lui, persiste tant que l'enregistrement n'est pas corrigé. Chaque email envoyé depuis votre domaine déclenche la même erreur.
Les 6 causes d'un SPF PermError
Cause 1 : Dépassement de la limite de 10 DNS lookups
C'est la cause la plus fréquente. La RFC 7208 limite à 10 le nombre de requêtes DNS lors de l'évaluation SPF. Les mécanismes include:, a, mx, redirect et exists comptent chacun comme un lookup. Au 11e lookup, le serveur retourne immédiatement permerror.
# Exemple : 12 lookups (permerror)
v=spf1 include:_spf.google.com include:sendgrid.net include:servers.mcsv.net include:spf.brevo.com include:spf.protection.outlook.com mx ~all
Avec Google Workspace (4 lookups), SendGrid (2), Mailchimp (1), Brevo (2), Microsoft 365 (2) et un MX (1), le total atteint 12. Le premier guide de cette série détaille les méthodes pour résoudre ce problème spécifique.
Cause 2 : Plusieurs enregistrements SPF sur le même domaine
La RFC 7208 impose qu'un domaine publie un seul enregistrement TXT commençant par v=spf1. Si votre zone DNS contient deux enregistrements SPF, le résultat est systématiquement permerror.
# INCORRECT : deux enregistrements SPF (permerror)
captaindns.com. TXT "v=spf1 include:_spf.google.com ~all"
captaindns.com. TXT "v=spf1 include:sendgrid.net ~all"
# CORRECT : un seul enregistrement fusionné
captaindns.com. TXT "v=spf1 include:_spf.google.com include:sendgrid.net ~all"
Cette erreur arrive souvent quand un nouveau service est ajouté par copier-coller de l'enregistrement fourni par le provider, sans fusionner avec l'existant.
Cause 3 : Erreurs de syntaxe
Une faute de frappe, un espace en trop ou un mécanisme mal écrit rendent l'enregistrement invalide :
| Erreur | Exemple | Correction |
|---|---|---|
| Préfixe manquant | include:_spf.google.com ~all | Ajouter v=spf1 au début |
| Mécanisme invalide | v=spf1 include _spf.google.com ~all | Remplacer espace par : |
| IP mal formatée | v=spf1 ip4:192.168.1 ~all | Corriger en ip4:192.168.1.0/24 |
Mécanisme ptr | v=spf1 ptr:captaindns.com ~all | Supprimer (déprécié RFC 7208) |
Double all | v=spf1 include:_spf.google.com ~all -all | Garder un seul all |
Cause 4 : Void lookups (limite de 2)
La RFC 7208, section 11.1, impose une seconde limite souvent ignorée : 2 void lookups maximum. Un void lookup se produit quand un mécanisme DNS retourne une réponse vide (NXDOMAIN ou aucun résultat).
# Exemple : includes vers des domaines inexistants
v=spf1 include:ancien-service.captaindns.com include:service-supprime.captaindns.com include:_spf.google.com ~all
Si ancien-service.captaindns.com et service-supprime.captaindns.com retournent NXDOMAIN, vous atteignez 2 void lookups. Un troisième include invalide déclencherait le PermError.
Cause 5 : Redirect vers un domaine sans SPF
Le mécanisme redirect= redirige l'évaluation SPF vers un autre domaine. Si ce domaine n'a pas d'enregistrement SPF, le résultat est permerror.
# INCORRECT : domaine cible sans enregistrement SPF
v=spf1 redirect=_spf.captaindns.com
# (si _spf.captaindns.com n'a pas de TXT v=spf1 → permerror)
# CORRECT : domaine cible avec SPF valide
v=spf1 redirect=_spf.captaindns.com
# (avec _spf.captaindns.com : "v=spf1 ip4:203.0.113.0/24 ~all")
Cause 6 : Includes circulaires ou irrésolvables
Si votre SPF contient une chaîne d'includes qui boucle sur elle-même, l'évaluation échoue :
# Boucle circulaire (permerror)
# captaindns.com → v=spf1 include:_spf.captaindns.com ~all
# _spf.captaindns.com → v=spf1 include:captaindns.com ~all
Ce cas est rare mais se produit lors de reconfigurations DNS mal coordonnées.
Comment diagnostiquer un SPF PermError ?

Suivez ces étapes dans l'ordre pour identifier la cause exacte :
Étape 1 : Vérifier le nombre d'enregistrements SPF
dig +short TXT captaindns.com | grep "v=spf1"
Si la commande retourne plus d'une ligne, c'est la cause 2. Fusionnez les enregistrements.
Étape 2 : Vérifier la syntaxe
Chaque mécanisme doit être correctement formaté : include:domaine, ip4:adresse/masque, mx, a. Les erreurs les plus courantes : espace au lieu de :, préfixe v=spf1 absent, double all.
Étape 3 : Compter les DNS lookups
Résolvez récursivement chaque include:, a, mx, redirect et exists. Le total ne doit pas dépasser 10.
Étape 4 : Vérifier les void lookups
Testez chaque domaine référencé par include: et redirect=. Si plus de 2 retournent NXDOMAIN ou une réponse vide, c'est la cause 4.
Étape 5 : Tester le redirect
Si votre SPF utilise redirect=, vérifiez que le domaine cible possède un enregistrement SPF valide.
Étape 6 : Chercher les boucles
Suivez la chaîne des includes manuellement pour détecter d'éventuels cycles.
Comment corriger chaque type de PermError ?
Enregistrements multiples : fusionner
Récupérez les mécanismes de chaque enregistrement SPF et combinez-les en un seul :
# Avant : 2 enregistrements (permerror)
"v=spf1 include:_spf.google.com ~all"
"v=spf1 include:sendgrid.net ~all"
# Après : 1 seul enregistrement
"v=spf1 include:_spf.google.com include:sendgrid.net ~all"
Créez votre enregistrement fusionné avec notre SPF Generator.
Erreurs de syntaxe : réécrire
Comparez votre enregistrement avec la syntaxe officielle RFC 7208. Les points à vérifier :
- Le préfixe
v=spf1est obligatoire et en première position - Chaque mécanisme est séparé par un espace unique
- Les mécanismes
include:etredirect=sont suivis d'un domaine valide - Un seul mécanisme
allen dernière position - Le mécanisme
ptrest déprécié, supprimez-le
DNS lookups : réduire sous 10
Trois approches pour réduire le nombre de lookups :
- Éliminer les includes inutiles : supprimez les services que vous n'utilisez plus
- Remplacer par des IP directs : pour vos propres serveurs, utilisez
ip4:etip6:à la place deinclude: - SPF flattening : résolvez automatiquement tous les includes en adresses IP avec notre SPF Flattener
Void lookups : nettoyer les références invalides
Supprimez ou corrigez chaque include: qui pointe vers un domaine inexistant. Vérifiez que tous les domaines référencés ont un enregistrement DNS valide.
Redirect invalide : publier le SPF cible
Assurez-vous que le domaine utilisé avec redirect= possède un enregistrement TXT v=spf1 ... valide.
SPF PermError et DMARC : l'effet domino

Un SPF PermError ne reste pas isolé. DMARC vérifie deux mécanismes d'authentification : SPF et DKIM. Quand SPF retourne permerror, DMARC considère l'alignement SPF comme échoué. Si DKIM échoue également (clé expirée, en-tête modifié, signature invalide), les deux piliers de DMARC tombent.
La cascade est directe :
- SPF PermError : DMARC ne peut pas valider l'alignement SPF
- Si DKIM échoue aussi : DMARC échoue totalement
- Avec
p=reject: l'email est rejeté par le serveur de réception - Avec
p=quarantine: l'email est placé en spam
Le problème est particulièrement insidieux avec une policy DMARC p=none : les emails passent mais vos rapports DMARC montrent des taux d'échec croissants. Le jour où vous passez à p=reject, tous les emails dont le SPF est en PermError sont rejetés.
Plan d'action recommandé
- Diagnostiquez la cause exacte : utilisez les 6 étapes de vérification pour identifier le type de PermError
- Appliquez la correction spécifique : chaque cause a sa propre méthode de correction
- Testez avant de publier : validez votre nouvel enregistrement dans un outil de diagnostic avant de modifier votre zone DNS
- Vérifiez l'impact DMARC : après correction, confirmez que vos rapports DMARC ne montrent plus de PermError
- Mettez en place un monitoring : surveillez votre enregistrement SPF mensuellement pour détecter les régressions
FAQ
Qu'est-ce qu'un SPF PermError ?
Un SPF PermError est une erreur permanente retournée quand un enregistrement SPF ne peut pas être correctement évalué par le serveur de réception. Contrairement à un TempError (transitoire), le PermError persiste tant que l'enregistrement n'est pas corrigé par l'administrateur DNS.
Quelles sont les causes les plus fréquentes d'un SPF PermError ?
Les 6 causes principales sont : le dépassement de la limite de 10 DNS lookups, la présence de plusieurs enregistrements SPF sur le même domaine, les erreurs de syntaxe, le dépassement de 2 void lookups, un redirect vers un domaine sans SPF et les includes circulaires.
Un SPF PermError fait-il échouer DMARC ?
Oui. DMARC considère un SPF PermError comme un échec de l'alignement SPF. Si DKIM échoue également, DMARC échoue totalement. Avec une policy p=reject, les emails sont alors rejetés par le serveur de réception.
Comment savoir si mon SPF a un PermError ?
Utilisez un outil de diagnostic SPF qui évalue votre enregistrement en temps réel. Les rapports DMARC agrégés (format RUA) indiquent également les résultats SPF pour chaque source d'envoi, y compris les PermError.
Quelle est la différence entre PermError et TempError ?
Le PermError est une erreur permanente causée par un enregistrement SPF invalide (syntaxe, lookups, structure). Le TempError est une erreur temporaire causée par un problème DNS transitoire (timeout, serveur indisponible). Le TempError se résout généralement de lui-même, le PermError nécessite une intervention manuelle.
Qu'est-ce qu'un void lookup ?
Un void lookup se produit quand un mécanisme DNS dans votre SPF retourne une réponse vide (NXDOMAIN ou aucun résultat). La RFC 7208 limite les void lookups à 2 par évaluation SPF. Au-delà, le résultat est PermError, même si le total des lookups reste inférieur à 10.
Peut-on avoir un PermError avec moins de 10 lookups ?
Oui. Le PermError peut être déclenché par d'autres causes que le dépassement de 10 lookups : enregistrements SPF multiples, erreurs de syntaxe, void lookups supérieurs à 2, redirect invalide ou includes circulaires. Le compteur de lookups n'est qu'une des 6 vérifications nécessaires.
Glossaire
- PermError : erreur permanente retournée quand un enregistrement SPF est structurellement invalide et ne peut pas être évalué par le serveur de réception.
- TempError : erreur temporaire retournée quand un problème DNS transitoire empêche l'évaluation SPF. Se résout généralement automatiquement.
- Void lookup : requête DNS qui retourne une réponse vide (NXDOMAIN ou aucun résultat). Limité à 2 par évaluation SPF selon la RFC 7208.
- DMARC : protocole d'authentification email qui vérifie l'alignement SPF et DKIM pour décider du traitement des messages (accepter, mettre en spam, rejeter).
- RFC 7208 : spécification officielle du protocole SPF (Sender Policy Framework) qui définit les règles d'évaluation, les limites de lookups et les résultats possibles.
Vérifiez votre enregistrement SPF maintenant : utilisez notre SPF Record Check pour diagnostiquer les erreurs et corriger votre SPF avant qu'il n'affecte votre délivrabilité.
📚 Guides SPF connexes
- SPF "Too Many DNS Lookups" : le guide complet pour corriger la limite de 10 lookups
- SPF Flattening vs SPF Macros : quelle approche choisir pour respecter la limite de 10 lookups ?


