Signalisiert "~ all" in der Mitte eines SPF-Datensatzes das Ende des Datensatzes, wenn dieser analysiert wird?

9

Das SPF-Aufzeichnungsformat unseres Unternehmens lautet wie folgt:

"v = spf1 include: _spf.google.com ~ all a mx ip4: XX0.0 / 23 include: spf.example.com? all"

Wir haben also ein "~ all" in der Mitte unseres SPF-Rekords. Auf der openspf.com-Website sagen sie dies in Bezug auf den "all" -Mechanismus:

Dieser Mechanismus stimmt immer überein. Es geht normalerweise am Ende des SPF-Datensatzes.

Sie sagen also nicht, dass "alles" am Ende des SPF-Datensatzes stehen muss, sondern dass es normalerweise am Ende steht.

In unserem Unternehmen haben wir in letzter Zeit einige leichte Fehler in E-Mails festgestellt, die von Servern gesendet wurden, die in unserem SPF-Datensatz aufgeführt sind. Unser SPF-Datensatz besteht jedoch alle Validierungstools, die ich bisher gefunden habe.

Ich frage mich, ob dieses "~ all" direkt nach dem Include für Google Apps (_spf.google.com) dazu führt, dass die Analyse gestoppt wird und die verbleibenden Teile des SPF-Datensatzes nicht erkannt werden. Würde das Bestehen im Vergleich zum Soft-Failing davon abhängen, wer es analysiert und wie sie SPF-Datensätze spezifisch implementieren? Gibt es einen Grund für einen "Alle" -Mechanismus, der nicht am Ende eines SPF-Datensatzes steht?

Und ja, ich weiß, wir könnten einfach unseren SPF-Rekord ändern. Bei dieser Frage geht es mehr darum zu klären, wie dies alles funktioniert, und nicht unbedingt darum, unsere spezifische Situation zu lösen.

whelanska
quelle

Antworten:

11

RFC 7208 § 5.1 ist diesbezüglich explizit: Nach dem allErscheinen MUSS alles danach ignoriert werden.

Mechanismen nach "allem" werden niemals getestet. Nach "all" aufgeführte Mechanismen MÜSSEN ignoriert werden. Jeder "Umleitungs" -Modifikator ( Abschnitt 6.1 ) MUSS ignoriert werden, wenn der Datensatz einen "Alle" -Mechanismus enthält, unabhängig von der relativen Reihenfolge der Begriffe.

Der veraltete RFC , RFC 4408 , sagte fast dasselbe; Die neuere Version des RFC verdeutlicht lediglich die Absicht.

Mechanismen nach "allem" werden niemals getestet. Jeder "Umleitungs" -Modifikator ( Abschnitt 6.1 ) hat keine Auswirkung, wenn ein "Alle" -Mechanismus vorhanden ist.

Konforme Implementierungen von SPF ignorieren also alles nach dem ersten vollständig ~all. Dies bedeutet jedoch nicht, dass jede Implementierung der Spezifikation entspricht. Insbesondere wurde dies wahrscheinlich gerade deshalb als klärungswürdig angesehen, weil eine oder mehrere Implementierungen nicht übereinstimmten.

Es ist überhaupt nicht klar, warum ein Online-Validierungstool diese Fehlkonfiguration nicht auffängt. Wenn Sie jedoch beabsichtigen, nach der ersten allVerwendung etwas zu verwenden, sollten Sie den Datensatz korrigieren, da ihn bei ordnungsgemäßen Implementierungen ignoriert wird.

Michael Hampton
quelle
7

"v = spf1 include: _spf.google.com ~ all a mx ip4: XX0.0 / 23 include: spf.example.com? all"

sagt in der Reihenfolge:

"E-Mail-Übergabe des SPF-Datensatzes von _spf.google.comist für unsere Domain gültig"

"Softfail bei allen anderen Absendern für unsere Domain"

"E-Mails aus unseren A-Datensätzen sind für unsere Domain gültig."

"E-Mails aus unseren MX-Datensätzen gelten für unsere Domain."

"E-Mails aus dem IP-Bereich x.x.0.0/23sind für unsere Domain gültig."

"E-Mail-Übergabe des SPF-Datensatzes von spf.example.comist für unsere Domain gültig"

"E-Mails von allen anderen Absendern für unsere Domain können nicht auf die eine oder andere Weise validiert werden."

Gemäß der Record-Syntax:

Mechanismen werden der Reihe nach bewertet. Wenn kein Mechanismus oder Modifikator übereinstimmt, ist das Standardergebnis "Neutral".

Wenn es also für Sie den "Softfail für alle anderen" trifft, sollte es den Rest der von Ihnen angegebenen Mechanismen ignorieren.

Ihr SPF-Eintrag sollte so kurz wie möglich sein. Ich bezweifle sehr, dass Sie ein gesamtes / 23-Netzwerk haben, das E-Mails für Ihre Domain senden sollte, und auch nicht alle Ihre A-Einträge. Vielleicht ja ... aber höchstwahrscheinlich nicht.

Eine schöne, saubere SPF-Aufzeichnung sollte ungefähr so ​​aussehen:

"v = spf1 include: _spf.google.com include: spf.example.com mx -all"

Was im Grunde bedeuten würde, dass _spf.google.com, spf.example.com und Ihre MX-Einträge die einzigen gültigen Absender für Ihre Domain sind ... alles andere sollte als ungültig behandelt werden.

Der Reiniger
quelle
0

Ein ordnungsgemäß implementierter SPF-Prüfer schließt eine Mechanismusübereinstimmung kurz und die Funktion check_host () gibt als Ergebnis den Qualifikationswert zurück. Ich habe keine "realen" Daten, die Sie darüber informieren könnten, ob die meisten E-Mail-Server dem RFC folgen oder nicht.

Quelle: RFC7208 (siehe Seite 17)

pk.
quelle