Kurz erklärt
SPF (Sender Policy Framework) ist ein DNS-Eintrag, der festlegt, welche Mailserver berechtigt sind, E-Mails für eine Domain zu versenden. Empfänger-Mailserver prüfen die IP-Adresse des sendenden Servers gegen den SPF-Record im DNS – stimmt sie nicht überein, wird die E-Mail als verdächtig eingestuft.
Wie funktioniert SPF?
- Sie veröffentlichen einen SPF-Record im DNS Ihrer Domain
- Ein Absender sendet eine E-Mail von Ihrer Domain
- Der empfangende Mailserver prüft die IP-Adresse des Absenders
- Der Empfänger schaut im DNS nach dem SPF-Record
- Steht die IP auf der Liste? → E-Mail wird akzeptiert
- Steht die IP nicht auf der Liste? → E-Mail wird abgelehnt oder als Spam markiert
SPF-Record-Syntax
Ein typischer SPF-Record:
v=spf1 ip4:192.168.1.1 include:_spf.google.com include:amazonses.com -all
Mechanismen:
v=spf1 – SPF-Version (immer v=spf1)
ip4:192.168.1.1 – Bestimmte IPv4-Adresse erlauben
ip6:2001:db8::1 – Bestimmte IPv6-Adresse erlauben
include:domain.com – SPF-Record einer anderen Domain einbeziehen
a – A-Records der Domain erlauben
mx – MX-Records der Domain erlauben
Qualifiers:
+ (Pass) – IP ist autorisiert (Standard, wenn nichts angegeben)
- (Fail) – IP ist nicht autorisiert, E-Mail ablehnen
~ (Softfail) – IP ist nicht autorisiert, aber trotzdem akzeptieren (als Spam markieren)
? (Neutral) – Keine Aussage
All-Mechanismus:
-all – Alle anderen IPs ablehnen (empfohlen)
~all – Alle anderen IPs als Softfail behandeln
+all – Alle IPs erlauben (NIEMALS verwenden!)
Beispiele
Nur Google Workspace:
v=spf1 include:_spf.google.com -all
Google Workspace + eigener Mailserver:
v=spf1 ip4:203.0.113.5 include:_spf.google.com -all
Mehrere Services:
v=spf1 include:_spf.google.com include:spf.protection.outlook.com include:amazonses.com -all
Das 10-DNS-Lookup-Limit
Kritisch: RFC 7208 begrenzt DNS-Lookups auf maximal 10 pro SPF-Prüfung. Jedes include: zählt als Lookup – und die eingebundenen Records können weitere Includes enthalten.
Problem: Moderne Unternehmen mit Google Workspace, Office 365, Mailchimp und weiteren Services erreichen dieses Limit schnell.
Überschreitung führt zu PermError – SPF schlägt permanent fehl, E-Mails werden abgelehnt.
Lösung: SPF-Record optimieren, Subdomains für verschiedene Services nutzen, SPF-Flattening-Tools verwenden.
Das Void-Lookup-Limit (Max. 2)
Neben dem 10-Lookup-Limit gibt es ein zweites, weniger bekanntes Limit: Maximal 2 Void Lookups (RFC 7208 Section 4.6.4).
Was sind Void Lookups? DNS-Abfragen, die NXDOMAIN (Domain existiert nicht) oder leere Antworten zurückgeben – z.B. wenn ein include: auf eine nicht mehr existierende Domain zeigt.
Überschreitung führt ebenfalls zu PermError – SPF schlägt permanent fehl, genau wie beim 10-Lookup-Limit.
Typische Ursachen:
- Alte SPF-Records mit nicht mehr existierenden Service-Domains
- Tippfehler in
include:-Anweisungen (z.B. include:_spf.gogle.com)
- Aufgegebene Dienste, die nie aus dem SPF entfernt wurden
- Übernommene Domains mit verwaisten SPF-Records
Prüfung: Unser E-Mail Security Scanner zeigt beide Limits an – DNS-Lookups (X/10) und Void-Lookups (X/2).
SPF-Limitierungen
Prüft nur Return-Path, nicht From-Adresse: Angreifer können unterschiedliche Adressen setzen.
Versagt bei E-Mail-Weiterleitungen: Weitergeleitete E-Mails kommen von einem anderen Server, SPF schlägt fehl.
Kein Alignment mit sichtbarer From-Adresse: Deshalb ist DMARC zusätzlich erforderlich.
SPF einrichten
1. Autorisierte Absender identifizieren:
- Eigener Mailserver?
- Google Workspace / Office 365?
- Marketing-Tools (Mailchimp, Brevo)?
- Transaktional E-Mail (Amazon SES, Mailgun)?
2. SPF-Record erstellen:
Kombination der Include-Statements der Services.
3. Im DNS veröffentlichen:
TXT-Record für Domain (z.B. example.com):
v=spf1 include:_spf.google.com include:amazonses.com -all
4. Testen:
- MXToolbox SPF Lookup
- Test-E-Mail an Gmail senden, Message Headers prüfen
Received-SPF: Pass im Header bestätigt korrekten SPF
Nächste Schritte
- Alle E-Mail-Sendequellen identifizieren (Webserver, Marketing-Tools, etc.)
- SPF-Record im DNS veröffentlichen
- Mit MXToolbox validieren und beide Limits prüfen (10 DNS-Lookups, 2 Void Lookups)
- DKIM und DMARC zusätzlich implementieren (SPF allein reicht nicht!)
- Bei Lookup-Problemen: Subdomains für verschiedene Services nutzen