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

  1. Sie veröffentlichen einen SPF Record im DNS Ihrer Domain: v=spf1 ip4:203.0.113.0/24 include:_spf.google.com ~all
  2. Ein Empfänger erhält eine E-Mail mit Return-Path: user@ihredomain.com
  3. Der Empfänger fragt DNS nach ihredomain.com TXT ab und findet den SPF Record
  4. Der Empfänger prüft, ob die verbindende IP mit einer autorisierten Quelle übereinstimmt
  5. Ergebnis: pass, fail, softfail, neutral, temperror oder permerror

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

MechanismusBeschreibungBeispiel
ip4IPv4-Adresse oder CIDR-Bereich zuordnenip4:203.0.113.0/24
ip6IPv6-Adresse oder -Bereich zuordnenip6:2001:db8::/32
aA Record der Domain zuordnena oder a:mail.example.com
mxMX Records der Domain zuordnenmx oder mx:example.com
includeSPF Record einer anderen Domain einbindeninclude:_spf.google.com
existsPrüfen, ob ein DNS A Record existiertexists:%{i}.spf.example.com
allCatch-all (trifft immer zu)-all (Hard Fail für alles andere)
redirectSPF Record einer anderen Domain vollständig verwendenredirect=_spf.example.com

Qualifier

QualifierBedeutungErgebnisEmpfehlung
+ (Standard)PassAutorisierter AbsenderFür bekannte Absender verwenden
-Hard FailNicht autorisiert, ablehnenMit -all verwenden, wenn sicher
~Soft FailVerdächtig, markieren aber akzeptierenWährend der Einführungsphase verwenden
?NeutralKeine AussageSelten 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?

MechanismusLookupsHinweise
include:1 + verschachteltJedes Include ist 1 Lookup, plus alle Lookups innerhalb des eingebundenen Records
a1DNS A Record Abfrage
mx1 + MX-AnzahlMX Lookup, dann A Lookups für jeden MX-Server
redirect=1Zählt als 1 Lookup
exists:1DNS A Record Existenzprüfung
ip4:0Kein DNS Lookup nötig
ip6:0Kein DNS Lookup nötig

Wie man „Too Many Lookups" löst

  1. Includes flatten: Ersetzen Sie include: durch die tatsächlichen IP-Bereiche. Nutzen Sie SPF Flattening Tools.
  2. Unbenutzte Dienste entfernen: Prüfen Sie, welche Drittanbieter-Sender Sie tatsächlich verwenden.
  3. ip4/ip6 direkt verwenden: Diese zählen nicht zum Limit.
  4. Subdomains verwenden: Senden Sie Marketing-E-Mails von marketing.example.com mit eigenem SPF Record.
  5. mx und a vermeiden: Diese verschwenden oft Lookups; verwenden Sie stattdessen direkt ip4:.
Warnung: SPF Flattening erfordert Wartungsaufwand — wenn ein eingebundener Dienst seine IP-Bereiche ändert, wird Ihr geflatteter Record veraltet. Erwägen Sie automatisierte Flattening-Dienste, die regelmäßig aktualisieren.

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.