レコードは v=spf1 ip4:192.0.2.0/24 include:_spf.example.net mx -all のような TXT エントリーです。メカニズム(ip4、ip6、a、mx、include、exists、ptr、all)は左から右へ評価され、修飾子 +(pass、デフォルト)、-(fail)、~(softfail)、?(neutral)が付きます。redirect= は評価を別のドメインに引き渡します。結果は pass、fail、softfail、neutral、none、temperror、permerror のいずれかです。
SPF が確認するのはエンベロープ送信者(RFC5321.MailFrom、つまりバウンスアドレス)であり、ユーザーに表示される From ヘッダーではありません。そのため SPF だけでは、表示される送信者のなりすましを防げません。DMARC は、エンベロープのドメインが From とアライメントしていることを求めます。転送者の IP は元のドメインのレコードに含まれていないため、転送すると SPF は失敗します。ただし、転送者がエンベロープを書き換える(SRS)場合は別です。
評価で発生させてよい DNS クエリを伴う項目は最大 10 個です(RFC 7208 §4.6.4)。SaaS の送信元による大きな include の連鎖はこの上限をしばしば超え、permerror を引き起こします。ドメインが公開する SPF レコードはちょうど 1 つにすべきで、レコードが 2 つあることも permerror になります。