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.