Guide SPF : déclarer qui envoie vos e-mails

SPF liste les serveurs autorisés à envoyer des e-mails au nom de votre domaine. Voici comment l'écrire, le configurer pour Microsoft 365 ou Google Workspace, et éviter les erreurs qui le rendent invalide.

À quoi sert SPF

Rien n'empêche techniquement un serveur quelconque d'envoyer un e-mail qui se présente comme venant de exemple.nc. SPF (Sender Policy Framework, RFC 7208) permet au propriétaire du domaine de publier, dans un enregistrement TXT, la liste des serveurs autorisés à envoyer pour lui.

Le serveur qui reçoit un e-mail compare l'adresse IP de l'expéditeur à cette liste. Si elle n'y figure pas, le dernier terme de l'enregistrement, all, dit quoi faire : rejeter, marquer comme suspect ou ne rien conclure.

SPF vérifie l'adresse technique d'expédition (le « Return-Path »), pas l'adresse affichée au destinataire. C'est DMARC qui relie les deux et protège réellement contre l'usurpation de votre adresse.

Un enregistrement SPF commenté

Un domaine qui envoie ses e-mails avec Microsoft 365, ses lettres d'information avec Brevo, et les alertes d'un serveur interne depuis une adresse fixe :

exemple.nc.  TXT  "v=spf1 include:spf.protection.outlook.com include:spf.brevo.com ip4:203.0.113.25 -all"
TermeSignification
v=spf1Début obligatoire de tout enregistrement SPF.
include:spf.protection.outlook.comAutorise les serveurs listés par le SPF de Microsoft 365. Coûte une requête DNS, plus celles de l'enregistrement inclus.
include:spf.brevo.comAutorise les serveurs de Brevo.
ip4:203.0.113.25Autorise une adresse IPv4 précise (ou une plage, avec un masque comme /28). Ne coûte aucune requête DNS.
-allTout autre serveur est refusé.

Les autres mécanismes sont a (les adresses du domaine), mx (celles de ses serveurs MX), exists, ip6 et ptr, déconseillé. Le modificateur redirect= délègue toute la politique à un autre domaine.

Les quatre terminaisons

  • -all (échec) : les serveurs non listés sont refusés. C'est la terminaison recommandée.
  • ~all (échec léger) : les e-mails sont acceptés mais marqués comme suspects. Suffisant si DMARC est en p=reject.
  • ?all (neutre) : aucune conclusion. Le SPF ne protège rien.
  • +all : tout serveur au monde est autorisé. À ne jamais utiliser.

Configurer SPF pour Microsoft 365

  1. Listez tous les services qui envoient des e-mails avec votre domaine : Microsoft 365, mais aussi votre logiciel de lettres d'information, votre CRM, votre site web, vos copieurs ou votre logiciel métier.
  2. Chez l'hébergeur DNS de votre domaine, créez ou modifiez l'enregistrement TXT du domaine lui-même (nom @, ou laissé vide selon l'interface) :
    v=spf1 include:spf.protection.outlook.com -all
  3. Ajoutez avant -all un include ou une adresse ip4 pour chacun des autres services. Il ne doit rester qu'un seul enregistrement v=spf1.
  4. Si votre DNS est géré par Microsoft 365, l'enregistrement se modifie dans le Centre d'administration Microsoft 365, rubrique Paramètres, puis Domaines.
  5. Relancez Domain Check une fois la modification visible.

Documentation Microsoft : configurer SPF pour Microsoft 365 (nouvel onglet).

Configurer SPF pour Google Workspace

  1. Chez l'hébergeur DNS de votre domaine, créez un enregistrement TXT sur le domaine lui-même :
    v=spf1 include:_spf.google.com ~all
  2. C'est la valeur que donne Google. Une fois tous vos services d'envoi listés, vous pouvez la terminer par -all ; avec un DMARC en p=reject, ~all obtient de toute façon la note maximale dans Domain Check.
  3. Ajoutez avant all les include de vos autres services d'envoi, dans le même enregistrement.

Documentation Google : configurer SPF (nouvel onglet).

Configurer SPF chez un autre fournisseur

Chaque service d'envoi publie la valeur à inclure dans sa documentation. Quelques valeurs courantes, à confirmer auprès du service :

ServiceTerme à ajouter
OVHcloudinclude:mx.ovh.com
Gandiinclude:_mailcust.gandi.net
Infomaniakinclude:spf.infomaniak.ch
Brevoinclude:spf.brevo.com
Mailjetinclude:spf.mailjet.com
SendGridinclude:sendgrid.net
Amazon SESinclude:amazonses.com
Serveur à adresse fixeip4: suivi de l'adresse publique du serveur

Assemblez-les en un seul enregistrement, par exemple v=spf1 include:mx.ovh.com include:spf.brevo.com -all. Si une valeur dépasse 255 caractères, l'enregistrement est découpé en plusieurs chaînes entre guillemets, que les serveurs recollent sans espace : "v=spf1 include:… " "include:… -all". La plupart des interfaces DNS le font pour vous.

La limite des 10 requêtes DNS

Pour vérifier un SPF, le destinataire ne fait pas plus de 10 requêtes DNS. Chaque include, a, mx, ptr, exists et redirect en coûte une, y compris dans les enregistrements inclus. Au-delà, le SPF est invalide et tous vos e-mails échouent au contrôle. Les termes ip4, ip6 et all ne coûtent rien. Domain Check compte ces requêtes et affiche l'arbre des inclusions.

Pour rester sous la limite : retirez les services que vous n'utilisez plus, remplacez a et mx par des adresses ip4 quand c'est possible, ou faites envoyer vos campagnes depuis un sous-domaine qui a son propre SPF.

Les erreurs fréquentes

  • Deux enregistrements SPF. Ajouter un second v=spf1 pour un nouveau service, au lieu de compléter le premier, rend les deux invalides.
  • Un service oublié. Le logiciel de facturation ou le formulaire du site qui envoie au nom du domaine voit ses e-mails refusés dès le passage en -all.
  • Plus de 10 requêtes DNS. Fréquent quand on cumule Microsoft 365, un CRM, une plateforme de lettres d'information et un outil de support.
  • Un include vers un nom qui n'existe plus. Service résilié ou faute de frappe : le SPF entier devient invalide.
  • La terminaison +all ou ?all. Le SPF existe mais ne protège rien. Avec +all, Domain Check plafonne la note globale à 49.
  • Le mécanisme ptr. Lent, peu fiable et déconseillé par la norme.
  • Les domaines qui n'envoient rien. Ils doivent publier v=spf1 -all, sans quoi ils restent utilisables pour usurper votre nom.

Vérifiez votre SPF. Domain Check lit votre enregistrement, suit chaque inclusion, compte les requêtes DNS et vous propose un enregistrement corrigé, prêt à copier. Tester mon domaine