Zum Hauptinhalt springen

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-Netzwerk
  • ip4:198.51.100.0/24: Backup-Rechenzentrum-Netzwerk
  • include:_spf-servers.example.com: Zusätzliche Serverliste einbinden
  • include:_spf.google.com: Google Workspace verwenden
  • a:outbound.example.com: Spezifischer Ausgangsserver
  • mx: 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.