Un enregistrement SPF commence par v=spf1, suivi de mécanismes : ip4 et ip6 pour des plages d'adresses, a et mx pour les hôtes du domaine lui-même, et include pour reprendre la liste d'un fournisseur qui envoie des e-mails pour vous. Il se termine par une règle générale : -all (rejeter tout le reste), ~all (échec souple : accepter, mais avec méfiance) ou ?all (aucune position).
Le serveur destinataire compare l'adresse IP qui se connecte à l'enregistrement SPF du domaine de l'expéditeur de l'enveloppe (le Return-Path), et non à l'adresse From que voit l'utilisateur. C'est cet écart que DMARC comble, en exigeant que le domaine SPF soit aligné sur le domaine From visible.
Deux limites causent la plupart des échecs SPF. Un domaine ne peut publier qu'un seul enregistrement v=spf1 ; deux enregistrements produisent une erreur permanente. Et l'évaluation peut déclencher au plus dix requêtes DNS, en comptant include, a, mx, exists et redirect, y compris imbriqués ; dépasser cette limite est aussi une erreur permanente. SPF casse également lorsque les e-mails sont transférés, car l'adresse IP du serveur qui transfère ne figure pas dans votre enregistrement : une raison de signer aussi les e-mails avec DKIM.
Exemple
example.com. 3600 IN TXT "v=spf1 ip4:192.0.2.0/24 include:_spf.mailer.example -all"