SPF neutral, softfail, permerror, temperror : que signifie chaque résultat et que faire

Les 7 résultats SPF expliqués : ce que veut dire neutral, softfail, permerror ou temperror, comment le vérifier avec dig et comment corriger l'enregistrement.

Constantin Boulanger Publié le 7 min de lecture

Sommaire

Un contrôle SPF renvoie l'un des sept résultats définis par la RFC 7208 : none, neutral, pass, fail, softfail, temperror ou permerror. neutral et softfail signifient que le serveur d'envoi n'est pas clairement autorisé par votre enregistrement. permerror signifie que votre SPF est illisible et doit être corrigé, temperror signale un incident DNS temporaire. Le résultat apparaît dans l'en-tête Authentication-Results des emails reçus. Voici ce que veut dire chacun, ses causes habituelles et la correction à appliquer.

Les 7 résultats SPF de la RFC 7208

RésultatCe que dit la normeCause typiqueQue faire
passLe serveur est autorisé à envoyer pour ce domaineConfiguration correcteRien
noneAucun enregistrement SPF trouvé, ou domaine inexploitableSPF jamais publiéPublier un SPF
neutralLe domaine déclare ne pas se prononcer sur ce serveurEnregistrement terminé par ?allLister les serveurs et passer à ~all ou -all
softfailLe serveur n'est probablement pas autoriséServeur absent d'un SPF terminé par ~allAjouter le service s'il est légitime
failLe serveur n'est pas autoriséServeur absent d'un SPF terminé par -allAjouter le service s'il est légitime
temperrorErreur transitoire, généralement DNSServeurs DNS lents ou injoignablesVérifier la disponibilité des DNS
permerrorL'enregistrement ne peut pas être interprétéSyntaxe, doublon, plus de 10 requêtes DNSCorriger l'enregistrement

Le résultat dépend du mécanisme qui correspond en premier, puis du qualificatif final all : +all (tout autoriser, à proscrire), ?all (neutral), ~all (softfail), -all (fail).

SPF neutral : que faire

Un résultat neutral vient presque toujours d'un enregistrement qui se termine par ?all :

"v=spf1 include:_spf.google.com ?all"

La RFC 7208 impose de traiter un neutral exactement comme un none, c'est-à-dire comme si vous n'aviez pas de SPF pour les serveurs non listés. Votre SPF n'apporte alors aucune protection contre l'usurpation.

Correction :

  1. Listez tous les services qui envoient des emails avec votre domaine (messagerie, outil d'emailing, site e-commerce, CRM). Les rapports DMARC aident à n'en oublier aucun.
  2. Ajoutez-les au SPF.
  3. Remplacez ?all par ~all, puis par -all quand vous êtes sûr de la liste.

Le générateur SPF construit l'enregistrement à partir des services que vous cochez.

SPF softfail : grave ou pas ?

~all est un réglage très répandu, proposé par défaut par plusieurs fournisseurs, dont OVHcloud (v=spf1 include:mx.ovh.com ~all). Un softfail sur un email légitime veut dire qu'un de vos services d'envoi manque à l'enregistrement.

Selon la RFC 7208, un récepteur ne devrait pas rejeter un message sur la seule base d'un softfail, mais peut l'examiner de plus près. En pratique, le message est plus exposé au dossier spam, surtout s'il échoue aussi à DKIM et donc à DMARC. Si le softfail concerne un serveur que vous ne connaissez pas, c'est probablement une tentative d'usurpation : votre SPF fait son travail.

SPF permerror : les causes et les corrections

Un permerror est le résultat le plus dangereux, car il invalide tout votre SPF. Pour DMARC, un SPF en permerror ne compte pas comme validé. Avec une politique DMARC restrictive, vos emails légitimes peuvent finir en spam ou être rejetés si DKIM ne compense pas.

Cause 1 : plus de 10 requêtes DNS

La RFC 7208 limite à 10 le nombre de mécanismes qui déclenchent une requête DNS : include, a, mx, ptr, exists et le modificateur redirect. Les include imbriqués comptent aussi. Au-delà, le résultat est permerror. Les mécanismes ip4, ip6 et all ne comptent pas.

Exemple d'enregistrement à risque :

"v=spf1 a mx include:_spf.google.com include:spf.protection.outlook.com include:mx.ovh.com include:servers.mcsv.net include:sendgrid.net include:_spf.salesforce.com ~all"

Chaque include peut en contenir d'autres. Le total réel se calcule en suivant toute la chaîne.

Corrections possibles :

  • supprimez les services que vous n'utilisez plus ;
  • retirez a et mx si ces serveurs n'envoient pas d'emails ;
  • déplacez un flux d'envoi sur un sous-domaine (news.votre-domaine.fr) qui a son propre SPF ;
  • remplacez un include par des plages ip4 fixes, seulement si le fournisseur garantit leur stabilité.

La norme limite aussi à deux les « void lookups », c'est-à-dire les requêtes qui ne renvoient aucune réponse. Un include vers un domaine qui n'a plus de SPF peut donc aussi provoquer un permerror.

Cause 2 : deux enregistrements SPF

Un domaine ne doit publier qu'un seul enregistrement commençant par v=spf1. S'il y en a deux, le résultat est permerror. C'est l'erreur classique après l'ajout d'un nouveau service, quand le prestataire crée son propre SPF au lieu de compléter l'existant. Nous l'avons détaillée dans deux enregistrements SPF : la panne que personne ne voit. Fusionnez-les en un seul :

# Avant (permerror)
"v=spf1 include:mx.ovh.com ~all"
"v=spf1 include:_spf.google.com ~all"

# Après
"v=spf1 include:mx.ovh.com include:_spf.google.com ~all"

Cause 3 : erreur de syntaxe

Fautes courantes :

  • v=spf1 mal écrit (v=spf, v=spf2) ;
  • mécanisme inconnu ou mal orthographié (inlcude:, ipv4: au lieu de ip4:) ;
  • adresse IP ou plage CIDR invalide ;
  • guillemets ajoutés en double par l'interface DNS.

SPF temperror : un problème DNS, pas de syntaxe

Un temperror indique que la vérification n'a pas pu aboutir à cause d'une erreur transitoire, le plus souvent DNS. Une nouvelle tentative plus tard peut réussir. La RFC 7208 prévoit que le serveur de réception puisse répondre par un refus temporaire (code SMTP 4xx) : l'expéditeur réessaie alors plus tard.

Causes à vérifier :

  • serveurs DNS faisant autorité lents ou en panne ;
  • un des domaines inclus (include:) dont les DNS ne répondent pas ;
  • réponse DNS trop volumineuse mal gérée par un pare-feu.

Si le temperror revient régulièrement, testez vos serveurs de noms un par un :

dig +short NS votre-domaine.fr
dig @ns1.exemple-dns.fr TXT votre-domaine.fr

Vérifier votre SPF avec dig

Lisez l'enregistrement publié :

dig +short TXT votre-domaine.fr

Ne retenez que les lignes qui commencent par "v=spf1. S'il y en a deux, vous avez trouvé votre permerror.

Suivez ensuite chaque include pour compter les requêtes :

dig +short TXT _spf.google.com
dig +short TXT mx.ovh.com

Pour savoir quel résultat SPF un email a obtenu, ouvrez ses en-têtes complets et cherchez Received-SPF ou la mention spf= dans Authentication-Results :

Authentication-Results: mx.google.com;
       spf=softfail (google.com: domain of transitioning contact@votre-domaine.fr does not designate 198.51.100.7 as permitted sender) smtp.mailfrom=contact@votre-domaine.fr

L'IP indiquée (198.51.100.7) est celle du serveur qui a envoyé le message. Si c'est l'un de vos services, ajoutez-le. L'outil sécurité email affiche votre SPF, le nombre de requêtes DNS et les erreurs détectées.

SPF ne suffit pas seul

SPF vérifie le domaine de l'enveloppe (MAIL FROM), pas l'adresse affichée au destinataire. Il échoue aussi lors des transferts automatiques. C'est pour cela qu'il faut l'associer à DKIM et DMARC. Une fois votre SPF propre, passez à DMARC avec la méthode pour passer de p=none à reject, et revoyez les bases dans SPF, DKIM, DMARC : protéger ses emails de l'usurpation.

Un SPF correct peut se casser du jour au lendemain, par exemple quand un prestataire ajoute un second enregistrement. Domains Defender surveille la configuration email de vos domaines (SPF, DKIM, DMARC) et vous alerte quand elle se dégrade. Pour contrôler un domaine maintenant, lancez l'audit gratuit.

Questions fréquentes

SPF neutral : que faire ?

Votre enregistrement se termine probablement par ?all. Listez tous vos services d'envoi dans le SPF, puis remplacez ?all par ~all ou -all. Tant qu'il reste en ?all, il ne protège pas contre l'usurpation.

Comment corriger un SPF permerror ?

Vérifiez trois choses dans l'ordre : un seul enregistrement v=spf1 sur le domaine, pas plus de 10 mécanismes qui déclenchent une requête DNS (includes imbriqués compris), et une syntaxe valide. Fusionnez les doublons et supprimez les includes inutiles.

SPF temperror : est-ce que mes emails sont perdus ?

Généralement non. Le serveur de réception peut répondre par un refus temporaire, et le serveur d'envoi réessaie plus tard. Si l'erreur persiste, vos serveurs DNS ou ceux d'un domaine inclus ont un problème de disponibilité.

Faut-il utiliser ~all ou -all ?

~all est plus tolérant pendant que vous recensez vos services d'envoi. -all est plus strict. Avec un DMARC en p=reject, c'est surtout la politique DMARC qui décide du sort des emails non authentifiés.

À lire aussi

Emails 9 min

SPF, DKIM, DMARC : protéger ses emails de l'usurpation

Sans SPF, DKIM et DMARC bien configurés, vos emails finissent en spam et n'importe qui peut envoyer du courrier en se faisant passer pour vous. Ces trois enregistrements DNS demandent moins d'une heure de mise en place et bloquent une catégorie entière d'attaques.

DNS 6 min

DNS A vs CNAME : différence et quand utiliser chacun

Un enregistrement A pointe vers une adresse IP. Un CNAME pointe vers un autre nom de domaine. Cette distinction simple cache des conséquences performances, des contraintes RFC et des choix d'architecture. Voici quand utiliser quoi.

DNS 6 min

Octobre 2021 : autopsie de la panne DNS Facebook qui a duré 6 heures

Le 4 octobre 2021, Facebook, Instagram et WhatsApp ont disparu d'internet pendant près de 6 heures. La cause : une mise à jour BGP qui a propagé la disparition de tous les nameservers Facebook. Voici l'autopsie technique et les leçons à appliquer.