Sender Policy Framework (SPF)

Was ist ein SPF-Record?

SPF wurde entwickelt um Spoofing (Verschleierung des Absenders) beim E-Mail-Verkehr entgegenzuwirken. Der empfangende Mailserver macht eine TXT-RR-Abfrage für die Domain der Absender-Identität (wenn das Envelope-MAIL FR OM nicht angegeben ist, wird der HELO/EHLO-Name genommen). Wenn ein SPF-Eintrag besteht wird die IP-Adresse des Absenders mit dem SPF-Eintrag abgeglichen und entsprechend dem Ergebnis wird die Mail akzeptiert, abgelehnt oder markiert.

Um SPF für eine Domain zu aktivieren wird in der entsprechenden DNS-Zone ein TXT-Eintrag erstellt, z. B.:

  • example.com IN TXT "v=spf1 a mx ip4:1.2.3.4 -all"

Wobei example.com folgende DNS-Records hat:

  • example.com A 2.3.4.5
  • mail.example.com A 3.4.5.6
  • example.com MX mail.example.com

Somit sind nur die Server mit den IP-Adressen 1.2.3.4, 2.3.4.5 und 3.4.5.6 berechtigt, als Absender Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein! zu verwenden.

Der Eintrag setzt sich zusammen aus dem String "v=spf1", Qualifikatoren, Mechanismen und Modifizierern.

Qualifikatoren/Ergebnisse

Qualifikator Ergebnis Beschreibung
+ Pass Der Sender ist autorisiert
- Fail Der Sender ist nicht autorisiert
~ SoftFail Sender ist nicht autorisiert, der Fehlschlag soll aber großzügig behandelt werden; für Testzwecke
? Neutral Keine Angabe zur Legitimität, Sender muss akzeptiert werden
None Die Domain hat keinen SPF-Eintrag bzw. der SPF-Eintrag liefert kein Ergebnis, Sender muss aktzeptiert werden
PermError Permanenter Fehler (z.B. falsche Syntax im SPF-Eintrag)
TempError Temporärer Fehler (üblicherweise Problem beim DNS-Lookup)

Wenn kein Qualifikator angegeben ist, wird standardmäßig "+" angenommen. "mx" ist also äquivalent zu "+mx", "a" zu "+a" usw.

Mechanismen

Mechanismus Trifft zu, wenn
a[:] ein A-(oder AAAA-)Record der befragten (oder explizit angegebenen) Domain die IP-Adresse des Senders enthält
mx[:] ein MX-Record der befragten (oder explizit angegebenen) Domain die IP-Adresse des Senders enthält
ip4: die angegebene IPv4-Adresse die IP-Adresse des Senders ist bzw. das angegebene IPv4-Subnetz diese enthält
ip6: die angegebene IPv6-Adresse die IP-Adresse des Senders ist bzw. das angegebene IPv6-Subnetz diese enthält
include: eine zusätzliche SPF-Anfrage zur im Include-Statement angegebenen Domain die IP-Adresse des Senders enthält
ptr[:] der A-(oder AAAA-)Record des Ergebnisses des Reverse-DNS-Lookups die IP-Adresse des Senders enthält
exists: ein A-Record (auch wenn der Absender eine IPv6-Adresse hat) für die befragte Domain besteht
all immer

Wenn die Evaluierung eines "include" Mechanismus nicht zutrifft oder in einem Fehler resultiert, wird der SPF-Check nicht abgebrochen, sondern es wird die Evaluierung des originalen SPF-Eintrags fortgesetzt.

Der "ptr" Mechanismus soll nicht verwendet werden, weil er langsam und eher unzuverlässig ist, muss aber von einem SPF-konformen System unterstützt werden.

Mit "exists" lassen sich in Verbindung mit Makros beliebig komplexe Abfragen spezifizieren.

"all" beendet das SPF-Statement, sollte also immer ganz hinten stehen. Alle Mechanismen, die hinter "all" stehen, werden ignoriert.

Modifizierer

redirect= Der SPF-Check wird umgeleitet zu einer anderen Domain
exp= Hiermit kann eine Erklärung mitgeschickt werden, wenn ein SPF-Check in einem "Fail" resultiert

"redirect" sollte ganz hinten stehen. Gibt es in einem SPF-Eintrag einen "all" Mechanismus und einen "redirect" Modifizierer, so wird "redirect" ignoriert. Wenn das Ziel eines "redirect" keinen SPF-Record hat oder missgebildet ist, so ist das Ergebnis "PermError", ist also schwerwiegender als wenn gar kein SPF-Record (für die ursprüngliche Domain) besteht.

Bei "exp" gibt man eine Domain an, wofür ein TXT-Record existieren muss (z.B. exp=exp.spf.domain.com). In diesem TXT-Record gibt man eine URL oder eine kurze Erklärung an, warum der Sender nicht für den Mailversand autorisiert ist.

DNS Lookup Limit

Für die Evaluation eines SPF-Records dürfen nicht mehr als 10 DNS Lookups nötig sein, andernfalls ist das Ergebnis "PermError". DNS Lookups werden ausgelöst durch "include", "a", "mx", "ptr", "exists" und "redirect". Die Lookups von anderen Domains, die durch "include" und "redirect" eingebunden werden zählen hier auch dazu, man sollte also wenn möglich ip4 bzw. ip6 verwenden.

Am Anfang des SPF-Checks holt sich der empfangende Mailserver alle TXT-Records der Domain. Um auch ältere DNS-Implementierungen zu unterstützen sollten alle TXT-Records zusammen in ein einziges UDP-Paket passen, also nicht größer als 450 Bytes sein. Es ist deshalb sinnvoll für den SPF-Record eine eigene Subdomain zu erstellen (z.B. spf.example.com).

Makros

Mit Makros lassen sich sehr spezifische Bedingungen erstellen und sind nicht sehr verbreitet. Hier gibt es eine genaue Erklärung.

Kritik

  • Bei E-Mail-Weiterleitungen kann es zu Problemen kommen, wenn der weiterleitende Server kein SRS unterstützt
  • Der Absender wird nur während dem SMTP-Verkehr überprüft, im E-Mail-Text kann immer noch ein beliebiger Absender stehen
  • Für Spam-Filterung nur unzureichend geeignet
  • Durch "Zwangsrelay" über die jeweiligen Povider ist ein einfaches Überwachen bzw. Datensammeln möglich

Best Practices

  • Wenn möglich, direkt die IP-Adresse mit "ip4" bzw. "ip6" angeben
  • Nur ausgehende Mailserver angeben
  • Für Domains, die keine Mails schicken sollen, den Record "v=spf1 -all" erstellen
  • Für den HELO/EHLO-Name auch einen SPF-Record erstellen
  • Um die DNS-Last zu verringern sollten "billige" Parameter (die wenig oder keine Lookups benötigen, z.B. "ip4") vorne stehen und "teure" weiter hinten.
  • Als E-Mail-Provider sollte man nicht "-" angeben
   Sie haben noch Fragen? Kein Problem, unser Support-Team hilft Ihnen gerne weiter.
+39 0473 427 481    +39 0474 836 661    Zum Kontaktformular

Diese Webseite verwendet Cookies zur Verbesserung der Funktionalität sowie zur Webanalyse. Dabei kommen auch Drittanbieter-Cookies zum Einsatz. Durch die Nutzung dieser Seite stimmen Sie zu, dass Cookies auf Ihrem Gerät gespeichert werden. Weitere Infos
Kontakt