Meines Wissens nach gibt die SPF-Spezifikation an, dass ein E-Mail-Empfänger nicht mehr als 10 DNS-Lookups durchführen muss, um alle zulässigen IP-Adressen für einen Absender zu erfassen. Wenn also ein SPF-Datensatz include:foo.com include:bar.com include:baz.com
über SPF-Datensätze verfügt und diese drei Domänen jeweils über SPF-Datensätze mit 3 include
Einträgen verfügen , sind jetzt bis zu 3 + 3 + 3 + 3 = 12 DNS-Suchvorgänge möglich.
ist mein Verständnis oben richtig?
Ich benutze nur 2 oder 3 Dienste für meine Domain und bin bereits weit über diesem Limit. Wird dieses Limit normalerweise (oder jemals) von großen / kleinen E-Mail-Anbietern durchgesetzt?
Antworten:
Sowohl
libspf2
(C) als auchMail::SPF::Query
(Perl, in sendmail-spf-milter verwendet ) implementieren ein Limit von 10 DNS-verursachenden Mechanismen , wobei letzteres die MX- oder PTR-Limits nicht anwendet (AFAICT).libspf2
begrenzt jeden von mx und ptr auch auf 10.Mail::SPF
(Perl) hat ein Limit von 10 DNS-verursachenden Mechanismen und ein Limit von 10 Suchvorgängen pro Mechanismus, pro MX und pro PTR. (Die beiden Perl-Pakete werden normalerweise , jedoch nicht standardmäßig, in MIMEDefang verwendet .)pyspf
Begrenzung auf 10 für "Lookups", MX, PTR, CNAME; aber es ausdrücklich vervielfacht MAX_LOOKUPS von 4 während des Betriebs. Sofern nicht im "strengen" Modus, werden MAX_MX und MAX_PTR mit 4 multipliziert.Ich kann keine kommerziellen / proprietären Implementierungen kommentieren, aber die obigen (außer
pyspf
) implementieren eindeutig eine Obergrenze von 10 DNS-Triggermechanismen (mehr dazu unten), geben oder nehmen, obwohl sie in den meisten Fällen beim Ausführen außer Kraft gesetzt werden können. Zeit.In Ihrem speziellen Fall , dass Sie richtig sind, ist es 12 enthält und dass überschreitet die Grenze von 10 würde ich die meisten SPF Software zurückzukehren „PermError“, erwarten jedoch , werden Ausfälle wirken sich nur auf die letzte „enthalten“ Anbieter (n) , weil die Zählung wird als laufende Summe berechnet: SPF- Mechanismen werden von links nach rechts ausgewertet, und Überprüfungen werden bei einem Durchlauf vorzeitig beendet. Dies hängt also davon ab, wo in der Reihenfolge der sendende Server angezeigt wird.
Der Weg dahin besteht darin, Mechanismen zu verwenden, die keine DNS-Lookups auslösen, z. B.
ip4
undip6
, und dann,mx
wenn möglich, bis zu 10 weitere Namen zu verwenden, von denen jeder mehr als eine IP haben kann.Da SPF zu willkürlichen DNS-Anforderungen mit potenziell exponentieller Skalierung führt, kann es leicht für DOS / Amplification-Angriffe ausgenutzt werden. Es gibt bewusst niedrige Grenzwerte, um dies zu verhindern: Es skaliert nicht so, wie Sie es möchten.
10 Mechanismen (ausschließlich Mechanismen + der "Redirect" -Modifikator), die DNS-Lookups verursachen, sind jedoch nicht genau dasselbe wie 10 DNS-Lookups. Selbst "DNS-Lookups" können interpretiert werden. Sie wissen nicht im Voraus, wie viele diskrete Lookups erforderlich sind, und Sie wissen nicht, wie viele diskrete Lookups Ihr rekursiver Resolver möglicherweise ausführen muss (siehe unten).
RFC 4408 §10.1 :
Sie können also bis zu 10 Mechanismen / Modifikatoren verwenden, die DNS-Lookups auslösen. (Der Wortlaut hier ist schlecht: Es scheint nur die Obergrenze der Grenze anzugeben, eine bestätigende Implementierung könnte eine Grenze von 2 haben.)
§5.4 für den mx- Mechanismus und §5.5 für den ptr- Mechanismus haben jeweils ein Limit von 10 Lookups dieser Art von Namen, und das gilt nur für die Verarbeitung dieses Mechanismus, z.
Das heißt, Sie verfügen möglicherweise über 10-mx-Mechanismen mit bis zu 10 MX-Namen, sodass jeder dieser Mechanismen 20 DNS-Vorgänge (jeweils 10 MX + 10 A-DNS-Suchvorgänge) für insgesamt 200 auslösen kann. Ähnliches gilt für ptr oder % {p} , Sie 10 ptr- Mechanismen nachschlagen können , daher 10x10 PTRs, jeder PTR erfordert auch einen A-Lookup, wiederum insgesamt 200.
Dies ist genau das, was die 2009.10-Testsuite überprüft (siehe " Verarbeitungsgrenzen " -Tests).
Es gibt keine klar festgelegte Obergrenze für die Gesamtzahl der DNS-Suchvorgänge für Clients pro SPF-Prüfung. Ich berechne sie als implizit 210, Geben oder Nehmen. Es gibt auch einen Vorschlag, das Volumen der DNS-Daten pro SPF-Prüfung zu begrenzen. Es wird jedoch kein tatsächliches Limit vorgeschlagen. Sie können eine grobe Schätzung erhalten, da SPF-Datensätze auf 450 Byte begrenzt sind (was leider mit allen anderen TXT-Datensätzen geteilt wird), aber die Gesamtsumme kann 100 KB überschreiten, wenn Sie großzügig sind. Beide Werte sind eindeutig offen für potenziellen Missbrauch als Verstärkungsangriff, und genau das ist, was Sie laut §10.1 vermeiden müssen.
Empirische Daten legen nahe , dass in Datensätzen insgesamt 10 Suchmechanismen implementiert sind (überprüfen Sie den SPF für microsoft.com, der anscheinend einige Anstrengungen unternommen hat, um ihn auf genau 10 zu beschränken). Es ist schwierig, Beweise für einen Fehler bei zu vielen Suchvorgängen zu sammeln, da der vorgeschriebene Fehlercode einfach "PermError" ist, der alle Arten von Problemen abdeckt ( DMARC- Berichte könnten dabei jedoch hilfreich sein).
Die OpenSPF-FAQ beschränkt sich auf insgesamt 10 DNS-Lookups und nicht auf die genaueren 10 DNS-Verursachungsmechanismen oder -Umleitungen. Diese FAQ ist wohl falsch, da sie tatsächlich sagt:
Dies steht im Widerspruch zum RFC, der die Grenzen einer "SPF-Prüfung" auferlegt, die DNS-Suchvorgänge auf diese Weise nicht einschränkt und eindeutig angibt, dass ein SPF-Eintrag ein einzelner DNS-Text-RR ist. Die FAQ implizieren, dass Sie die Zählung neu starten, wenn Sie ein "Include" verarbeiten, da dies ein neuer SPF-Datensatz ist. Was für ein Chaos.
DNS-Lookups
Was ist eigentlich eine DNS-Suche? Als Benutzer . Ich würde "
ping www.microsoft.com
" in Betracht ziehen , eine einzelne DNS - Suche durchzuführen: Es gibt einen Namen, von dem ich erwarte, dass er zu einer IP wird. Einfach? Leider nicht.Als Administrator weiß ich, dass www.microsoft.com möglicherweise kein einfacher A-Eintrag mit einer einzelnen IP-Adresse ist, sondern ein CNAME, der wiederum eine andere diskrete Suche benötigt, um einen A-Eintrag zu erhalten eher als der Resolver auf meinem Desktop. Heute ist www.microsoft.com für mich eine Kette von 3 CNAMEs, die schließlich als A-Eintrag auf akamaiedge.net enden. Das sind (mindestens) 4 DNS-Abfragevorgänge für jemanden. SPF kann CNAMEs mit dem "ptr" -Mechanismus sehen, ein MX-Eintrag sollte jedoch kein CNAME sein.
Als DNS-Administrator weiß ich schließlich, dass die Beantwortung (fast) jeder Frage viele diskrete DNS-Vorgänge, einzelne Fragen und Antworttransaktionen (UDP-Datagramme) umfasst - vorausgesetzt, ein rekursiver Resolver startet beim DNS-Stamm und arbeitet sich auf seine Weise vor down:
.
→com
→microsoft.com
→www.microsoft.com
nach bestimmten Datensatztypen (NS, A usw.) fragen und mit CNAMEs umgehen. Sie können dies in Aktion mit sehendig +trace www.microsoft.com
, obwohl Sie wahrscheinlich aufgrund von Geolocation-Tricks nicht genau die gleiche Antwort erhalten (Beispiel hier ). (Diese Komplexität ist noch ein bisschen komplexer, da SPF-Huckepacks für TXT-Datensätze und veraltete Grenzwerte von 512 Byte für DNS-Antworten möglicherweise dazu führen, dass Abfragen über TCP wiederholt werden.)Was betrachtet SPF als Lookup? Es ist dem Administrator- Standpunkt wirklich am nächsten , es muss die Besonderheiten jedes DNS-Abfragetyps kennen (aber nicht den Punkt, an dem einzelne DNS-Datagramme oder -Verbindungen gezählt werden müssen).
quelle
RFC4408 s10.1 schränkt , wie Sie bereits bemerkt haben, die DNS-Aktivität ein. Speziell:
und darüber hinaus
Beachten Sie, dass Ersteres eine Beschränkung der Anzahl der Mechanismen darstellt , nicht der Anzahl der durchgeführten Suchvorgänge. aber es ist immer noch eine Grenze.
Soweit ich das beurteilen kann, werden diese Grenzwerte ziemlich streng durchgesetzt. Sie sollen verhindern, dass Benutzer willkürlich komplexe SPF-Datensätze erstellen und diese für DoS-Server verwenden, die ihre Datensätze überprüfen, indem sie in einer riesigen Kette von DNS-Suchvorgängen angehalten werden. Das ist also im besten Interesse aller, die einen SPF-Prüfer für SPF implementieren ehre sie.
Sie haben Recht zu bemerken, dass verschachtelte Includes wahrscheinlich das größte Problem mit diesen Limits verursachen. Wenn Sie sich dazu entschließen, mehrere Domains einzuschließen, von denen jede stark von Includes Gebrauch macht, können Sie diese relativ schnell durchgehen. Es ist nicht allzu schwer, Beispiele für Menschen zu finden , für die dies konkrete Probleme verursacht hat .
Das Ergebnis scheint zu sein, dass im Allgemeinen Probleme auftreten, wenn sich die Benutzer dazu entschließen, sowohl SPF als auch mehrere verschiedene und unterschiedliche Unternehmen für die Bearbeitung ihrer ausgehenden E-Mails zu verwenden. Ich schließe aus Ihrer Frage, dass Sie in diese Kategorie passen. SPF scheint nicht dazu gedacht zu sein, Menschen zu dienen, die sich dafür entscheiden . Wenn Sie tun dies darauf bestehen, werden Sie wahrscheinlich eine Art von cron - Job auf Ihrem DNS - Server haben müssen , dass ständig alle die SPF - Einträge auswertet Sie einschließen gewünscht hätte, drückt sie als eine Reihe von
ip4:
undip6:
Mechanismen (auf die Anzahl davon Es gibt keine Beschränkung) und veröffentlicht das Ergebnis erneut als SPF-Datensatz.Vergessen Sie nicht, mit einem zu beenden
-all
, oder die ganze Übung war sinnlos.quelle
spf-tools github
), ich bin einer der Autoren, es ist freie Software, die der Community etwas zurückgeben soll, von der ich so viel mitgenommen habe , und ich würde mich freuen, wenn sie jemand anderem hilft. Eigenwerbung nennen sie es. Und kein Raum für Diskussionen.