Für eine SPF-Prüfung muss die sendende IP-Adresse mindestens einen der Mechanismen bestehen. Include-Mechanismen testen die eingehende IP-Adresse mit dem enthaltenen SPF-Datensatz und geben das Ergebnis zurück.
An deinem Beispiel:
a.example.com IN TXT "v=spf1 include:b.example.com +all" b.example.com IN TXT "v=spf1 -all"
Der enthaltene Datensatz wird fehlschlagen, da er nur einen -all
Mechanismus enthält . Der erste Datensatz wird jedoch übergeben, da er über einen +all
Mechanismus verfügt.
An einem detaillierteren Beispiel:
a.example.com IN TXT "v=spf1 ip4:1.2.3.4 mx include:spf.example.org -all" a.example.com IN MX 0 mailserver.example.com mailserver.example.com IN A 1.2.3.5 spf.example.org IN TXT "v=spf1 ip4:4.3.0.0/16 -all"
Ich schreibe das Ergebnis jedes Mechanismus in der Reihenfolge auf, in der sie im Datensatz angegeben sind. Die Ergebnisse werden also als solche formatiert:
- a.example.com:
[ip4] [mx] [include] [-all]
- spf.example.org:
[ip4] [-all]
Mit folgenden Absenderadressen:
1.2.3.4
- spf.example.org ->
fail fail
- a.example.com ->
pass fail fail fail
Das Endergebnis ist pass
, da mindestens eine Prüfung bestanden wurde
1.2.3.5
- spf.example.org ->
fail fail
- a.example.com ->
fail pass fail fail
Das Endergebnis ist pass
, da mindestens eine Prüfung bestanden wurde
4.3.10.20
- spf.example.org ->
pass fail
- a.example.com ->
fail fail pass fail
Das Endergebnis ist pass
, da mindestens eine Prüfung bestanden wurde
TL; DR: Der Include-Mechanismus wird separat ausgewertet und das Ergebnis an die Auswertung des Datensatzes zurückgegeben, in dem es enthalten ist. Datensatzauswertung schlägt fehl, wenn keine Mechanismen übereinstimmen. Da Sie Ihr Beispiel mit beendet haben +all
, wird es immer passen und deshalb passieren.