SPF (Sender Policy Framework)
Vollständiger Leitfaden zu SPF: Record-Syntax, Mechanismen, Qualifier, das 10-Lookup-Limit und häufige Fehler.
Was ist SPF?
SPF (Sender Policy Framework) ist ein E-Mail-Authentifizierungsprotokoll, definiert in RFC 7208. Es ermöglicht Domain-Inhabern festzulegen, welche Mailserver berechtigt sind, E-Mails im Namen ihrer Domain zu versenden.
SPF funktioniert durch die Veröffentlichung eines DNS TXT Records, der die IP-Adressen, Hostnamen und Drittanbieterdienste auflistet, die zum E-Mail-Versand für die Domain autorisiert sind. Wenn ein empfangender Mailserver eine E-Mail erhält, prüft er die IP des Absenders gegen den SPF Record der Domain im Envelope Sender (MAIL FROM / Return-Path).
Wie SPF funktioniert
- Sie veröffentlichen einen SPF Record im DNS Ihrer Domain:
v=spf1 ip4:203.0.113.0/24 include:_spf.google.com ~all - Ein Empfänger erhält eine E-Mail mit Return-Path:
user@ihredomain.com - Der Empfänger fragt DNS nach
ihredomain.com TXTab und findet den SPF Record - Der Empfänger prüft, ob die verbindende IP mit einer autorisierten Quelle übereinstimmt
- Ergebnis:
pass,fail,softfail,neutral,temperroroderpermerror
SPF Record Syntax
Ein SPF Record beginnt immer mit v=spf1 und enthält einen oder mehrere Mechanismen, denen jeweils optional ein Qualifier vorangestellt ist.
Mechanismen
| Mechanismus | Beschreibung | Beispiel |
|---|---|---|
ip4 | IPv4-Adresse oder CIDR-Bereich zuordnen | ip4:203.0.113.0/24 |
ip6 | IPv6-Adresse oder -Bereich zuordnen | ip6:2001:db8::/32 |
a | A Record der Domain zuordnen | a oder a:mail.example.com |
mx | MX Records der Domain zuordnen | mx oder mx:example.com |
include | SPF Record einer anderen Domain einbinden | include:_spf.google.com |
exists | Prüfen, ob ein DNS A Record existiert | exists:%{i}.spf.example.com |
all | Catch-all (trifft immer zu) | -all (Hard Fail für alles andere) |
redirect | SPF Record einer anderen Domain vollständig verwenden | redirect=_spf.example.com |
Qualifier
| Qualifier | Bedeutung | Ergebnis | Empfehlung |
|---|---|---|---|
+ (Standard) | Pass | Autorisierter Absender | Für bekannte Absender verwenden |
- | Hard Fail | Nicht autorisiert, ablehnen | Mit -all verwenden, wenn sicher |
~ | Soft Fail | Verdächtig, markieren aber akzeptieren | Während der Einführungsphase verwenden |
? | Neutral | Keine Aussage | Selten verwendet |
Praxisbeispiele
# Einfach: Nur Google Workspace
v=spf1 include:_spf.google.com -all
# Mehrere Dienste: Google + Mailchimp + eigener Server
v=spf1 ip4:198.51.100.10 include:_spf.google.com include:servers.mcsv.net -all
# Soft Fail während des Rollouts (Monitoring-Phase)
v=spf1 include:_spf.google.com include:amazonses.com ~all
Das 10 DNS Lookup Limit
Eines der häufigsten und kritischsten SPF-Probleme ist das 10 DNS Lookup Limit. RFC 7208 legt fest, dass die SPF-Auswertung nicht mehr als 10 DNS Lookups erfordern darf. Wenn Ihr SPF Record dieses Limit überschreitet, ist das Ergebnis permerror — und viele Empfänger werten dies als Fehler.
Was zählt als Lookup?
| Mechanismus | Lookups | Hinweise |
|---|---|---|
include: | 1 + verschachtelt | Jedes Include ist 1 Lookup, plus alle Lookups innerhalb des eingebundenen Records |
a | 1 | DNS A Record Abfrage |
mx | 1 + MX-Anzahl | MX Lookup, dann A Lookups für jeden MX-Server |
redirect= | 1 | Zählt als 1 Lookup |
exists: | 1 | DNS A Record Existenzprüfung |
ip4: | 0 | Kein DNS Lookup nötig |
ip6: | 0 | Kein DNS Lookup nötig |
Wie man „Too Many Lookups" löst
- Includes flatten: Ersetzen Sie
include:durch die tatsächlichen IP-Bereiche. Nutzen Sie SPF Flattening Tools. - Unbenutzte Dienste entfernen: Prüfen Sie, welche Drittanbieter-Sender Sie tatsächlich verwenden.
- ip4/ip6 direkt verwenden: Diese zählen nicht zum Limit.
- Subdomains verwenden: Senden Sie Marketing-E-Mails von
marketing.example.commit eigenem SPF Record. mxundavermeiden: Diese verschwenden oft Lookups; verwenden Sie stattdessen direktip4:.
Häufige SPF-Probleme & Lösungen
Problem 1: Mehrere SPF Records
Eine Domain darf genau einen SPF Record haben. Zwei oder mehr SPF TXT Records führen zu einem permerror.
# FALSCH: Zwei separate Records
v=spf1 include:_spf.google.com -all
v=spf1 include:amazonses.com -all
# RICHTIG: In einem kombiniert
v=spf1 include:_spf.google.com include:amazonses.com -all
Problem 2: Überschreitung des 255-Zeichen-String-Limits
DNS TXT Records haben ein 255-Byte-String-Limit. Für längere SPF Records teilen Sie den Inhalt in mehrere Strings innerhalb desselben Records auf (DNS verkettet automatisch).
Problem 3: Verwendung von +all
Verwenden Sie niemals +all — das autorisiert das gesamte Internet, E-Mails als Ihre Domain zu versenden. Verwenden Sie immer -all oder ~all.
Problem 4: Drittanbieter-Sender vergessen
Häufige Drittanbieterdienste, die in Ihrem SPF Record enthalten sein müssen:
- Google Workspace:
include:_spf.google.com - Microsoft 365:
include:spf.protection.outlook.com - Amazon SES:
include:amazonses.com - Mailchimp:
include:servers.mcsv.net - SendGrid:
include:sendgrid.net - Zendesk:
include:mail.zendesk.com - Salesforce:
include:_spf.salesforce.com - HubSpot:
include:_spf.hubspot.net
Problem 5: SPF bestanden, aber DMARC fehlgeschlagen
SPF prüft den Envelope Sender (Return-Path), nicht den sichtbaren Absender (From:). Wenn diese nicht übereinstimmen, besteht SPF, aber das DMARC Alignment schlägt fehl. Dies ist häufig bei Drittanbieter-Sendern, die ihre eigene Return-Path-Domain verwenden.