Ein SPF-Eintrag ist ein TXT-Eintrag wie v=spf1 ip4:192.0.2.0/24 include:_spf.example.net mx -all. Mechanismen (ip4, ip6, a, mx, include, exists, ptr, all) werden von links nach rechts ausgewertet, mit den Qualifiern + (pass, der Standard), - (fail), ~ (softfail) und ? (neutral); redirect= übergibt die Auswertung an eine andere Domain. Mögliche Ergebnisse sind pass, fail, softfail, neutral, none, temperror und permerror.
SPF prüft den Envelope-Absender (RFC5321.MailFrom, die Bounce-Adresse), nicht den im Mailprogramm sichtbaren Header From; für sich allein verhindert SPF also kein Spoofing des sichtbaren Absenders. DMARC verlangt, dass die Envelope-Domain zur Domain in From ausgerichtet ist. Eine Weiterleitung bricht SPF, weil die IP des weiterleitenden Servers nicht im Eintrag der ursprünglichen Domain steht, es sei denn, der weiterleitende Server schreibt den Envelope um (SRS).
Die Auswertung darf höchstens 10 Terme mit DNS-Abfragen auslösen (RFC 7208 §4.6.4) – ein Limit, das lange Ketten von include bei SaaS-Absendern oft überschreiten, was zu permerror führt. Eine Domain sollte genau einen SPF-Eintrag veröffentlichen; zwei Einträge ergeben ebenfalls permerror.