Appendix A. Extended Examples (Erweiterte Beispiele)
Appendix A. Extended Examples (Erweiterte Beispiele)
Dieser Anhang bietet erweiterte Beispiele für SPF-Einträge, die verschiedene Konfigurationsszenarien und Best Practices demonstrieren.
A.1 Simple Examples (Einfache Beispiele)
A.1.1 Nur eine einzelne IP-Adresse erlauben
example.com. IN TXT "v=spf1 ip4:192.0.2.1 -all"
Erklärung: Nur die IP-Adresse 192.0.2.1 darf E-Mails im Namen von example.com senden. Alle anderen IP-Adressen führen zu einem "fail"-Ergebnis.
A.1.2 Verwendung von MX-Einträgen
example.com. IN TXT "v=spf1 mx -all"
Erklärung: Erlaubt den in den MX-Einträgen von example.com aufgeführten Mailservern, E-Mails zu senden. Dies ist eine gängige Konfiguration, da sie sich automatisch an Änderungen der MX-Einträge anpasst.
A.1.3 Verwendung von A-Einträgen
example.com. IN TXT "v=spf1 a -all"
Erklärung: Erlaubt den IP-Adressen im A-Eintrag (oder AAAA-Eintrag für IPv6) von example.com, E-Mails zu senden.
A.1.4 Kombination mehrerer Mechanismen
example.com. IN TXT "v=spf1 mx a:mail.example.com ip4:192.0.2.0/24 -all"
Erklärung: Erlaubt E-Mails von folgenden Quellen:
- MX-Server von example.com
- A-Eintrag von mail.example.com
- Jede IP im Netzwerk 192.0.2.0/24
A.1.5 Soft-Fail-Richtlinie
example.com. IN TXT "v=spf1 mx a ~all"
Erklärung: Verwendet Soft-Fail (~all) anstelle von Hard-Fail (-all). Dies ist nützlich während der Test- oder Migrationsphase. Empfänger können E-Mails akzeptieren, sie jedoch als verdächtig markieren.
A.2 Multiple Domain Example (Mehrfach-Domain-Beispiel)
Für Organisationen mit mehreren Domains, die dieselbe Mail-Infrastruktur verwenden:
example.com. IN TXT "v=spf1 mx -all"
example.org. IN TXT "v=spf1 redirect=_spf.example.com"
example.net. IN TXT "v=spf1 redirect=_spf.example.com"
_spf.example.com. IN TXT "v=spf1 mx:example.com -all"
Erklärung:
- example.com hat seinen eigenen SPF-Eintrag
- example.org und example.net leiten zum gemeinsamen SPF-Eintrag um
- _spf.example.com enthält die tatsächliche Richtlinie
Vorteile:
- Zentralisierte Verwaltung der Mailserver-Konfiguration
- Einmalige Aktualisierung betrifft mehrere Domains
- Reduzierter DNS-Wartungsaufwand
A.3 DNS Blacklist (DNSBL) Style Example (DNS-Blacklist-Stil-Beispiel)
Verwendung des exists-Mechanismus zur Implementierung DNSBL-ähnlicher Funktionalität:
example.com. IN TXT "v=spf1 exists:%\{ir}.%\{l1r+-}._spf.%\{d} -all"
Erklärung:
%\{ir}: Umgekehrte IP-Adresse (z.B. wird 192.0.2.1 zu 1.2.0.192)%\{l1r+-}: Erster Teil des local-part des Absenders, umgekehrt, "." und "+" durch "-" ersetzt%\{d}: Domainname
Beispiel-Erweiterung:
Wenn der Absender [email protected] von 192.0.2.1 sendet:
- Makro erweitert zu:
1.2.0.192.user._spf.example.com
Dann wird dieser Domainname nach A-Einträgen abgefragt. Wenn vorhanden, besteht die SPF-Prüfung.
Anwendungsfälle:
- Benutzerbasierte feinkörnige Kontrolle
- Integration mit Datenbank oder benutzerdefinierten Systemen
- Dynamische Autorisierungsentscheidungen
A.4 Multiple Requirements Example (Beispiel für mehrere Anforderungen)
Komplexe Konfiguration, die mehrere Mechanismen und Modifikatoren kombiniert:
example.com. IN TXT "v=spf1 ip4:192.0.2.0/24 ip4:198.51.100.0/24 include:_spf-servers.example.com include:_spf.google.com a:outbound.example.com mx ~all"
Erklärung:
ip4:192.0.2.0/24: Internes Mailserver-Netzwerkip4:198.51.100.0/24: Backup-Rechenzentrum-Netzwerkinclude:_spf-servers.example.com: Zusätzliche Serverliste einbindeninclude:_spf.google.com: Google Workspace verwendena:outbound.example.com: Spezifischer Ausgangsservermx: MX-Eintrags-Server einbeziehen~all: Soft-Fail für alle anderen Fälle
Hierarchisches Design:
_spf-servers.example.com. IN TXT "v=spf1 ip4:203.0.113.0/24 ip4:198.51.100.128/25 -all"
Dies ermöglicht die Aufteilung großer SPF-Einträge in leichter verwaltbare Teile.
A.5 Subdomain-Konfigurationsbeispiele
A.5.1 Subdomains mit unterschiedlichen Richtlinien
example.com. IN TXT "v=spf1 mx -all"
mail.example.com. IN TXT "v=spf1 a -all"
shop.example.com. IN TXT "v=spf1 include:shopify.com -all"
Erklärung:
- Hauptdomain verwendet MX-Einträge
- mail-Subdomain verwendet nur ihren A-Eintrag
- shop-Subdomain verwendet Drittanbieterdienst (Shopify)
A.5.2 Subdomains, die keine E-Mails senden
noreply.example.com. IN TXT "v=spf1 -all"
static.example.com. IN TXT "v=spf1 -all"
Erklärung: Erklärt explizit, dass diese Subdomains keine E-Mails senden, um Fälschungen zu verhindern.
A.6 Beispiele für Drittanbieter-Dienst-Integration
A.6.1 Verwendung mehrerer E-Mail-Dienstanbieter
example.com. IN TXT "v=spf1 include:_spf.google.com include:spf.protection.outlook.com include:sendgrid.net -all"
Erklärung:
- Google Workspace für Mitarbeiter-E-Mails
- Microsoft 365 für Partner
- SendGrid für Marketing-E-Mails
A.6.2 Prüfung der DNS-Abfragelimits
Das obige Beispiel verwendet 3 include-Direktiven, von denen jede zusätzliche Abfragen auslösen kann. Es muss sichergestellt werden, dass die Gesamtzahl der Abfragen 10 nicht überschreitet.
Verifizierungsmethode:
# Überprüfung des Google SPF
dig _spf.google.com TXT
# Überprüfung des Microsoft SPF
dig spf.protection.outlook.com TXT
# Überprüfung des SendGrid SPF
dig sendgrid.net TXT
Berechnen Sie die Anzahl der Mechanismen in jedem include, um sicherzustellen, dass die Gesamtzahl ≤ 10 ist.
A.7 Fehlkonfigurationsbeispiele (zu vermeiden)
A.7.1 ❌ Mehrere SPF-Einträge (Fehler)
example.com. IN TXT "v=spf1 mx -all"
example.com. IN TXT "v=spf1 a -all"
Problem: Dies führt zu "permerror". Eine Domain kann nur einen SPF-Eintrag haben.
Richtige Methode:
example.com. IN TXT "v=spf1 mx a -all"
A.7.2 ❌ Fehlendes -all (unsicher)
example.com. IN TXT "v=spf1 mx"
Problem: Keine explizite Standardrichtlinie, entspricht ?all (neutral), keine IP wird fehlschlagen.
Richtige Methode:
example.com. IN TXT "v=spf1 mx -all"
A.7.3 ❌ Überschreitung des DNS-Abfragelimits
example.com. IN TXT "v=spf1 include:a include:b include:c include:d include:e include:f include:g include:h include:i include:j include:k -all"
Problem: 11 include-Direktiven überschreiten das 10-Abfragen-Limit, was zu "permerror" führt.
Lösung: SPF-Flattening verwenden oder direkt ip4-Mechanismen nutzen.
A.8 IPv6-Konfigurationsbeispiel
example.com. IN TXT "v=spf1 ip6:2001:db8::/32 ip4:192.0.2.0/24 mx -all"
Erklärung: Unterstützt sowohl IPv6- als auch IPv4-Netzwerke.
A.9 Erklärungsstring-Beispiel
example.com. IN TXT "v=spf1 mx -all exp=explain._spf.%\{d}"
explain._spf.example.com. IN TXT "E-Mail von %\{i}, aber diese IP ist nicht von %\{d} autorisiert. Bitte kontaktieren Sie postmaster@%\{d}."
Erklärung: Wenn die SPF-Prüfung fehlschlägt, kann der Empfänger den Erklärungsstring abfragen und dem Benutzer anzeigen.
Nach Makroerweiterung (angenommen von 192.0.2.99 gesendet):
"E-Mail von 192.0.2.99, aber diese IP ist nicht von example.com autorisiert. Bitte kontaktieren Sie [email protected]."
A.10 Test- und Übergangsstrategie
Phase 1: Überwachungsmodus (2-4 Wochen)
example.com. IN TXT "v=spf1 ?all"
Phase 2: Tatsächliche Sendequellen erfassen (2-4 Wochen)
example.com. IN TXT "v=spf1 ip4:192.0.2.0/24 include:provider.com ?all"
Phase 3: Soft-Fail (4-8 Wochen)
example.com. IN TXT "v=spf1 ip4:192.0.2.0/24 include:provider.com ~all"
Phase 4: Strikter Modus (Produktionsumgebung)
example.com. IN TXT "v=spf1 ip4:192.0.2.0/24 include:provider.com -all"
Empfehlung: In jeder Phase SPF-Prüfergebnisse überwachen, um sicherzustellen, dass keine legitimen E-Mails blockiert werden.