Häufige SPF-Fehler und -Fehlerbehebungen
Beschreibung description
-
Empfehlungen zur Syntax
- Häufige Suchmechanismen
- Allgemeine Modifikatoren
-
Zu viele Mechanismen
-
Zeichenfolge zu lang
-
Null-Datensätze im SPF-Datensatz
-
Sich wiederholende Datensätze im SPF-Datensatz - Void-Suchen
-
Validierungs-Tools
Syntaxempfehlungen
gängige Suchmechanismen
A:
MX:
Einschließen:
IP4:
IP6:
existiert:
PTR:
alle
Allgemeine Modifikatoren
Umleitung=
Ausg=
- Ein A-Eintrag muss IMMER die IP-Adresse enthalten (Host IP zuordnen)
- CNAME (Alias) muss Host-Namen enthalten. Keine IPs hier
- NS- und MX-Einträge müssen Host-Namen enthalten. Keine IPs zulässig.
- MX-Einträge (für Mail-Server) sollte Host-Namen NICHT IPs enthalten.
Zu viele Mechanismen
In Abschnitt 10.1, „Verarbeitungsbeschränkungen“ des SPF RFC 4408 wird Folgendes in Bezug auf DNS-Suchen angegeben:
SPF-Implementierungen MÜSSEN die Anzahl der Mechanismen und Modifikatoren, die DNS-Suchen durchführen, auf höchstens 10 pro SPF-Prüfung beschränken, einschließlich der Suchen, die durch die Verwendung des „include“-Mechanismus oder des „redirect“-Modifikators verursacht werden. Wenn diese Zahl während einer Prüfung überschritten wird, MUSS ein PermError zurückgegeben werden. Die Mechanismen „include“, „a“, „mx“, „ptr“ und „exists“ sowie der „redirect“-Modifikator zählen auch für diese Beschränkung. Die Mechanismen „all“, „ip4“ und „ip6“ erfordern keine DNS-Suchen und werden daher nicht auf diese Beschränkung angerechnet. Der Modifikator „exp“ wird für diese Beschränkung nicht gezählt, da die DNS-Suche zum Abrufen der Erklärungszeichenfolge nach der Auswertung des SPF-Eintrags erfolgt.
Diese Beschränkung dient dazu, zu verhindern, dass SPF-Suchen eine nützliche Möglichkeit für Denial-of-Service-Angriffe darstellen.
Anhand eines beispielhaften SPF-Eintrags als Beispiel wurde veranschaulicht, dass dieser Eintrag mit 12 Suchen fehlschlug:
example.com text = „v=spf1 include:_spf-a.example.com include:_spf-b.example.com include:_spf-c.example.com include:_spf-ssg-a.example.com include:spf-a.anotherexample.com IP4:131.107.115.215 IP4:131.107.115.214 IP4:205.248.106.64 IP4:205.248.106.30 IP4:205.248.106.32 „Alle [ 5 Mechanismen]
_spf-a.example.com Text = „V=SPF1 IP4:216.99.5.67 IP4:216.99.5.68 IP4:202.177.148.100 IP4:203.122.32.250 IP4:202.177.148.110 IP4:213.199.128.139 IP4:213.199.128.145 IP4:207.46.50.72 IP4:207.46.50.82 A:mh.example.m0.net Alle“ [ +1 = 6 Mechanismen]
MH.example.M0.NET A = 209.11.164.116
_spf-b.example.com text = „v=spf1 include:spf.messaging.example.com ip4:207.46.22.35 ip4:207.46.22.98 ip4:207.46.22.101 ip4:131.107.1.27 ip4:131.107.1.17 ip4:131.107.65.22 ip4:131.107.65.131 IP4:131.107.1.101 IP4:131.107.1.102 IP4:217.77.141.52 IP4:217.77.141.59 Alle“ [ ] +1 = 7 Mechanismen
spf.messaging.example.com text = „v=spf1 include:spfa.anotherexample.com include:spfb.anotherexaple.com include:spfc.anotherexample.com -all“ [ +3 = 10 Mechanismen]
pfa.anotherexample.com text = „v=spf1 ip4:157.55.116.128/26 ip4:157.55.133.0/24 ip4:157.55.158.0/23 ip4:157.55.234.0/24 ip4:157.56.112.0/24 ip4:157.56.116.0/25 ip4:157 :207.56.120.0/25 ip4:207.46.100.0/24 ip4:207.46.108.0/25 ip4:134.46.163.0/24 ip4:157.170.140.0/24 56.110.0/23 -all“ [ +0 = 10 Mechanismen]
pfb.anotherexample.com text = „v=spf1 ip4:207.46.51.64/26 ip4:213.199.154.0/24 ip4:213.199.180.128/26 ip4:216.32.180.0/23 ip4:64.4.22.64/26 ip4:65.55.83.128/27 ip4:65.55.169.0/24 ip4:65.55.88.0/24 ip4:94.245.120.64/26 ip4:131.107.0.0/16 ip4:157.56.73.0/24 ip4:134.170.132.0/24 -all“ [ ] +0 = 10 Mechanismen
spec.anotherexample.com text = „v=spf1 ip4:207.46.101.128/26 ip6:2a01:1117c00::/54 ip6:2a01:111fc00::/54 ip4:157.56.87.192/26 ip4:157.55.40.32/27 ip4:157.56.123.0/27 ip4:157 :157.56.91.0/27 ip4:157.55.206.0/24 ip4:157.55.207.0/24 ip4:157.56.206.0/23 56.208.0/22 -all“ [ ] +0 = 10 Mechanismen
_spf-c.example.com Text = „V=SPF1 IP4:203.32.4.25 IP4:213.199.138.181 IP4:213.199.138.191 IP4:207.46.52.71 IP4:207.46.52.79 IP4:131.107.1.18 IP4:131.107.1.19 IP4:131.107.1.20 IP4:131.107.1.48 IP4:131.107.1.56 IP4:86.61.88.25 IP4:131.107.1.44 IP4:131.107.1.37 alle“ [ +0 = 10 Mechanismen]
_spf-ssg-a.example.com text = „v=spf1 include:_spf-ssg-b.example.com include:_spf-ssg-c.example.com all“ [ +2 = 12 Mechanismen]
_spf-ssg-b.example.com text = „v=spf1 ip4:207.68.169.173/30 ip4:207.68.176.1/26 ip4:207.46.132.129/27 ip4:207.68.176.97/27 ip4:65.55.238.129/26 ip4:207.46.222.193/26 ip4:207.46.116.135/29 ip4:65.55.178.129/27 ip4:213.199.161.129/27 ip4:65.55.33.70/28 all“ [ +0 = 12 Mechanismen]
_spf-ssg-c.example.com text = „v=spf1 ip4:65.54.121.123/29 ip4:65.55.81.53/28 ip4:65.55.234.192/26 ip4:207.46.200.0/27 ip4:65.55.52.224/27 ip4:94.245.112.10/31 ip4:94.245.112.0/27 ip4:111.221.26.0/27 ip4:207.46.50.221/26 ip4:207.46.50.224 all“ [ +0 = 12 Mechanismen]
spf-a.secondexample.com Text = „v=spf1 ip4:157.55.0.192/26 ip4:157.55.1.128/26 ip4:157.55.2.0/25 ip4:65.54.190.0/24 ip4:65.54.51.64/26 ip4:65.54.61.64/26 ip4:65.55.111.0/24 ip4:65.55.116.0/25 ip4:65.55.34.0/24 ip4:65.55.90.0/24 ip4:65.54.241.0/24 ip4:207.46.117.0/24 all“ [ ] +0 = 12 Mechanismen
Zeichenfolge zu lang
Beschränkung auf 255 Zeichen in einer einzelnen Zeichenfolge
https://kb.isc.org/article/AA-00356/0/Can-I-have-a-TXT-or-SPF-record-longer-than-255-characters.html
https://www.string-functions.com/length.aspx
You may have more than 255 characters of data in a TXT or SPF record, but not more than 255 characters in a single string.If you attempt to create an SPF or TXT record with a long string (>255 characters) in it, BIND will give an error (e.g. "invalid rdata format: ran out of space".) Strings in SPF and TXT records should be no longer than 255 characters. However to get around this limitation, per RFC 4408 a TXT or SPF record is allowed to contain multiple strings, which should be concatenated together by the reading application. In the case of use for SPF (using either TXT or SPF RRs) the strings are concatenated together without spaces as described below. Reassembly by other applications of multiple strings stored in TXT records might work differently.
3.1.3. Mehrere Zeichenfolgen in einem einzelnen DNS-Eintrag
As defined in [ RFC1035] sections 3.3.14 and 3.3, a single text DNS
record (either TXT or SPF RR types) can be composed of more than one
string. If a published record contains multiple strings, then the
record MUST be treated as if those strings are concatenated together
without adding spaces. For example:
IN TXT "v=spf1 .... first" "second string..."
MUST be treated as equivalent to
IN TXT "v=spf1 .... firstsecond string..."
SPF or TXT records containing multiple strings are useful in
constructing records that would exceed the 255-byte maximum length of
a string within a single TXT or SPF RR record.
BEISPIEL
text = „v=spf1 ip4:199.15.212.0/22 ip4:72.3.185.0/24 ip4:72.32.154.0/24 ip4:72.32.217.0/24 ip4:72.32.243.0/24 ip4:94.236.119.0/26 ip4:37.188.97.188/32 ip4:185.28.196.0/22 all“
text = „V=SPF1 IP4:199.15.212.0/22" " ip4:72.3.185.0/24 ip4:72.32.154.0/24 ip4:72.32.217.0/24" " ip4:72.32.243.0/24 ip4:94.236.119.0/26" " ip4:37.188.97.188/32 ip4:185.28.196.0/22 all“
Null-Datensätze im SPF-Datensatz
Ein Datensatz, der NULL ist oder nicht existiert, bricht einen SPF-Datensatz. Die Syntax innerhalb des Datensatzes ist sehr wichtig. Wenn zusätzliche Leerzeichen zwischen den Mechanismen vorhanden sind, wird sie als NULL gezählt.
BEISPIEL
text = „V=SPF1 IP4:199.15.212.0/22"< - exact
text = „v=spf1 ip4: 199.15.212.0/22"< - NULL (BEACHTEN SIE DAS LEERZEICHEN ZWISCHEN IP4: UND IP)
Wiederholungseinträge im SPF-Eintrag - Leere Suchen
Wenn der SPF-Datensatz zu viele sich wiederholende Mechanismen enthält, einschließlich kaskadierender Datensätze (z. B. bei Verwendung von „include:„), wird der Datensatz beschädigt.
In einem SPF-Datensatz gibt es eine MAX mit 2 Void-Lookups. Mehr als das, und der Rekord wird brechen. Dies verhindert, dass SPF-Datensätze bei Denial-of-Service-ähnlichen Angriffen verwendet werden.
Validierungstools
SPF-Checker, Syntaxvalidator und SPF-Tester
https://www.kitterman.com/spf/validate.html
SPF-Checker
https://vamsoft.com/support/tools/spf-policy-tester
SPF-Validator
https://vamsoft.com/support/tools/spf-syntax-validator
CIDR-Rechner
https://www.subnet-calculator.com/cidr.php
nslookup
https://network-tools.com/nslook/
SPF-Erstellungsassistent
https://www.microsoft.com/mscorp/safety/content/technologies/senderid/wizard/
Häufige SPF-Fehler
https://www.openspf.org/FAQ/Common_mistakes
SPF-Syntaxdefinitionen
Lösung resolution
Für technische Unterstützung wenden Sie sich an den Marketo Engage-Support.