Zum Inhalt springen
Toolbox

SPF-Check

Der SPF-Check löst den SPF-Record samt Includes auf, zählt die DNS-Lookups gegen das Limit von 10 und zeigt alle erlaubten IP-Bereiche.

SPF (Sender Policy Framework) legt fest, welche Server Mail im Namen deiner Domain verschicken dürfen. Der Eintrag steht als TXT-Record direkt an der Domain und beginnt mit v=spf1. Der SPF-Check in der Kategorie Mail liest diesen Record, löst alle include- und redirect-Verweise rekursiv auf und prüft ihn gegen RFC 7208. Er braucht eine Lizenz.

So prüfst du

Gib die Domain ein, etwa beispiel.de, und klick Prüfen. Die App zeigt drei Tabellen:

Tabelle Inhalt
SPF-Record der gefundene Record, bei mehreren alle
SPF-Baum jeder Eintrag mit Qualifier, Lookup-Nummer und Hinweis, eingerückt nach Include-Tiefe
IP-Bereiche alle ip4- und ip6-Bereiche mit Qualifier und der Domain, aus der sie stammen

Im SPF-Baum siehst du in der Spalte Lookup, welcher Eintrag welche der zehn erlaubten DNS-Abfragen verbraucht. So erkennst du schnell, welcher Dienstleister die meisten Lookups kostet.

Das Lookup-Limit

Empfänger dürfen beim Auswerten höchstens 10 DNS-Lookups machen. Jeder include, a, mx, ptr, exists und redirect zählt, auch innerhalb von Includes. Wird die Grenze überschritten, gilt der ganze Record als ungültig (PermError), und SPF schlägt für jede Mail fehl.

Lookups Befund
bis 7 In Ordnung
8 bis 10 Warnung: knapp am Limit, ein zusätzlicher Include beim Dienstleister kann den Record brechen
über 10 Fehler: Limit überschritten

Abhilfe: Includes von Diensten entfernen, die du nicht mehr nutzt, ptr, a und mx durch feste ip4/ip6-Bereiche ersetzen oder SPF-Flattening nutzen.

Außerdem zählt die App leere Lookups (void lookups): Einträge, deren Ziel nicht existiert oder nichts liefert. Mehr als zwei davon sind ebenfalls ein Fehler.

Das „all“ am Ende

Der Qualifier vor all bestimmt, was mit Mail von allen anderen Servern passiert:

Eintrag Befund Bedeutung
-all In Ordnung fremde Server werden abgelehnt
~all In Ordnung fremde Server werden als SoftFail markiert; mit DMARC p=reject üblich
?all Warnung schützt nicht
+all Fehler erlaubt jedem Server, im Namen der Domain zu senden
fehlt Warnung ohne all gilt für fremde Server „Neutral“

Steht das all erst in einem per redirect eingebundenen Record, wertet die App dieses aus.

Weitere Befunde

Befund Was zu tun ist
Kein SPF-Record Record anlegen. Verschickt die Domain keine Mail, reicht v=spf1 -all.
2 SPF-Records (oder mehr) Mehrere v=spf1-Records führen zu PermError. Zu einem zusammenfassen.
Syntaxfehler Der Record enthält einen unbekannten Mechanismus, eine ungültige IP oder Präfixlänge. Empfänger werten ihn als PermError.
Langer Record Über 450 Zeichen kann die DNS-Antwort über UDP abgeschnitten werden. Includes oder Bereiche zusammenfassen.
Schleife Ein Include zeigt auf einen Record weiter oben in der Kette.
include „…“: kein SPF-Record Ein eingebundener Dienst hat keinen SPF-Record (mehr). Include entfernen oder korrigieren.
„ptr“ ist veraltet RFC 7208 rät davon ab. Durch ip4/ip6 ersetzen.
… steht nach „all“ Einträge nach all werden nie ausgewertet.
Makros werden nicht aufgelöst Makros wie %{i} hängen vom Absender ab. Die App zeigt sie nur an.

Die Auflösung stoppt nach 60 Abfragen, damit ein kaputter Record die App nicht endlos beschäftigt. Dann erscheint ein entsprechender Hinweis.

Zusammenspiel mit DMARC

SPF allein schützt nur den technischen Absender (Envelope-From). Was Empfänger mit Mails tun, die SPF und DKIM nicht bestehen, regelt DMARC. Den Gesamtüberblick bekommst du im Mail-Domain-Bericht.