Ein SPF Eintrag ist eine Folge von Tests mit expliziten Ergebnissen. Der Unterschied zwischen einem Doppelpunkt, einem Gleichheitszeichen und einem Qualifikationsmerkmal ist wichtig. Eine syntaktisch gültige Änderung kann auch ändern, wer berechtigt ist, welche DNS Abhängigkeiten erreicht werden oder wo die Verarbeitung stoppt.
Verwenden RFC 7208 §4.6, RFC 7208 §5.2 Und RFC 7208 §6 als Grammatik- und Bewertungsreferenz. Behandeln Sie die folgenden Beispiele als synthetische Vorrichtungen und nicht als Datensätze, die in die Produktion eingefügt werden sollen.
Trennen Sie Mechanismen von Modifikatoren
Ein Mechanismus fragt, ob eine Eingabe übereinstimmt: Beispiele sind „ip4“, „ip6“, „a“, „mx“, „include“, „exists“ und „all“. Ein an einen Matching-Mechanismus angehängter Qualifizierer bestimmt sein Ergebnis: + gibt Pass, - Fail, ~ softfail und ? neutral. Unter RFC 7208 §4.6.2, wenn das Qualifikationsmerkmal weggelassen wird, wird + impliziert.
Modifikatoren verwenden ein Gleichheitszeichen. redirect=policy.example.com delegiert die Auswertung, wenn kein Mechanismus übereinstimmt. exp=explain.example.com identifiziert erläuternden Text für bestimmte Fehlerergebnisse. Es handelt sich hierbei nicht um zusätzliche Matching-Mechanismen. Anerkannte Modifikatoren haben ihre eigenen Regeln; Syntaktisch gültige, nicht erkannte Modifikatoren werden ignoriert, während ein nicht erkannter Mechanismus ein Fehler ist.
Ein Rekord beginnt mit v=spf1 und wird als DNS veröffentlicht TXT Eintrag an der ausgewerteten Identität. Zwei separate SPF Einträge desselben Besitzers sind keine Möglichkeit, Absender zu kombinieren; Die Auswahl SPF -Datensatzes wird zurückgegeben permerror unter RFC 7208 §4.5. Mehrere in Anführungszeichen gesetzte Zeichenfolgen innerhalb eines TXT Datensatzes stellen eine unterschiedliche Darstellung dar und werden ohne eingefügte Leerzeichen darunter verkettet RFC 7208 §3.3.
Verfolgen Sie ein vollständiges Beispiel
Gehen Sie von einer gültigen Syntax, einem SPF -Eintrag für jeden Namen und einem erfolgreichen DNS Abruf aus. Angenommen, die Richtlinie ist v=spf1 ip4:192.0.2.20 include:service.example.net -all. Die enthaltene Richtlinie ist v=spf1 ip4:198.51.100.10 -all.
Für 192.0.2.20 stimmt der erste Mechanismus überein und gibt pass zurück. Das Include ist für diesen Auswertungspfad nicht erforderlich. Für 198.51.100.10 stimmt der erste Mechanismus nicht überein, die eingeschlossene Richtlinie gibt „Pass“ zurück und der äußere Include stimmt mit seinem Standardqualifikationsmerkmal + überein. Für 203.0.113.7 schlagen die enthaltenen Richtlinienrückgaben fehl; Das führt dazu, dass include nicht übereinstimmt und das äußere -all den endgültigen Fehler liefert.
Dieser Trace erklärt, warum include keine Textersetzung ist. Das enthaltene -all weist nicht sofort alle Adressen zurück, die die Richtlinie des Dienstes nicht eingehalten haben. Die übergeordnete Richtlinie wird nach einem nicht übereinstimmenden Einschlussergebnis fortgesetzt.
Verstehen Sie, wo die Verarbeitung aufhört
Ein Matching-Mechanismus beendet die gewöhnliche Mechanismusbewertung. Auch ein Fehler aus einer erreichten Laufzeit kann die Auswertung beenden. Das Umordnen von Begriffen kann daher das Ergebnis oder die Abhängigkeiten verändern, die ein Empfänger abfragen muss.
Der All-Mechanismus stimmt immer überein, sodass nachfolgende Begriffe keine zusätzliche Autorisierung liefern können. A Umleitungsmodifikator wird ignoriert, wenn irgendwo im Datensatz ein All-Mechanismus vorhanden ist. Schreiben -all redirect= policy.example.com schafft keinen Notfall-Fallback.
Unter RFC 7208 §4.7Wenn kein Mechanismus übereinstimmt und keine Umleitung erfolgt, ist das Standardergebnis neutral. Machen Sie das beabsichtigte Ende deutlich, damit ein anderer Administrator nicht schließen muss, ob die Auslassung beabsichtigt war.
Überprüfen Sie den Pfad und den gesamten Datensatz
Überprüfen Sie vor der Veröffentlichung die gesamte Syntax und nicht nur den Teil, der voraussichtlich mit einer bekannten IP übereinstimmt. Eine ungültige Police kann nicht durch die Annahme eines günstigen frühen Matches abgesichert werden. Bewerten Sie dann autorisierte IPv4 und IPv6 Eingaben, eine nicht autorisierte Eingabe und Abhängigkeiten, die fehlschlagen oder keinen SPF Eintrag zurückgeben.
Zu den wichtigsten ausgewerteten DNS Begriffsbegrenzungen gehören die Begriffe a, mx, ptr, exist und redirect, einschließlich Rekursion. Es handelt sich nicht um eine Zählung der zitierten TXT Fragmente. Führen Sie einen Trace, der sowohl das ausgewählte Ergebnis als auch die erreichten DNS Bedingungen anzeigt. Budget für Änderungen der Anbieterabhängigkeit, anstatt eine Richtlinie ohne Spielraum zu entwerfen.
Nehmen Sie eine überprüfbare Änderung vor
Schreiben Sie den vorgeschlagenen Datensatz neben den aktuellen Datensatz und erläutern Sie den beabsichtigten Berechtigungsunterschied in normaler Sprache. Behalten Sie den vorherigen Wert und die TTL bei, überprüfen Sie das Ergebnis im autorisierenden DNS und über einen rekursiven Resolver und testen Sie dann die empfangenen Nachrichten des Vertreters.
Die Akzeptanzbedingung besteht nicht einfach darin, dass ein Parser die Zeichenfolge akzeptiert. Die beabsichtigten Absender sollten als korrekte Identität gelten, unbeabsichtigte Absender sollten keine Erlaubnis einholen und dies erforderlich sein DMARC Ausrichtung sollte intakt bleiben.
Der praktische Imbiss
Lesen Sie jeweils SPF Begriff nach Typ, Qualifikationsmerkmal und Position. Eine klare Auswertungsspur macht die Syntaxüberprüfung zu einer Berechtigungsüberprüfung und nicht zu einer Interpunktionsübung.
Halten Sie die Entscheidung reproduzierbar
In der Zwei-Datensatz-Befestigung wird die lokale Adresse vor dem Einschließen übergeben, die Dienstadresse wird über den untergeordneten Durchgang übergeben und die nicht verwandte Adresse erreicht den endgültigen Fehler des übergeordneten Datensatzes. Wenn das untergeordnete Element stattdessen keinen SPF Eintrag hat, gibt der erreichte Include permerror zurück. Halten Sie diesen Fehlerfall vom untergeordneten Fehler/Nichtübereinstimmung getrennt. Hierbei handelt es sich um analytische Ergebnisse, nicht um einen ausgeführten Parser- oder Verifizierertest.