Wie eine E-Mail Ihren Mailserver findet
Absender
you@gmail.com
MX-Abfrage
wer nimmt Mail an?
Mailserver
Priorität 10 zuerst
Posteingang
zugestellt
Die niedrigste Prioritätszahl gewinnt; höhere Zahlen sind Backups
SPF 10-Lookup-Limit: Was zählt und wie Sie darunter bleiben
Ein empfangender Mailserver prüft SPF, indem er Ihren Record auswertet, und die Auswertung kostet DNS-Abfragen. Damit dieser Aufwand begrenzt bleibt, legt RFC 7208 fest, wie viele abfrageauslösende Terme eine einzelne Prüfung auswerten darf. Wird die Grenze überschritten, lautet das Ergebnis permerror, ein dauerhafter Fehler, der nicht als pass gilt. Prüftools melden ihn häufig als „too many DNS lookups“, und er tritt meist direkt auf, nachdem dem Record ein weiterer Versanddienst hinzugefügt wurde.
Was die Spezifikation zählt
Abschnitt 4.6.4 von RFC 7208 listet die Terme auf, die DNS-Abfragen auslösen: die Mechanismen include, a, mx, ptr und exists sowie den Modifier redirect. Implementierungen müssen die Gesamtzahl dieser Terme bei einer Auswertung auf 10 begrenzen und bei Überschreitung permerror zurückgeben. Die Mechanismen all, ip4 und ip6 brauchen keine Abfrage und werden nicht gezählt, ebenso wenig der Modifier exp, der erst später nach einem Fehlschlag abgerufen wird.
| Term | Zählt zu den 10? | Hinweise |
|---|---|---|
include | Ja | Plus jeder gezählte Term im Record, auf den er verweist |
a | Ja | Ein Lookup für den Namen |
mx | Ja | Zusätzlich auf 10 Adress-Lookups begrenzt; mehr ergibt permerror |
ptr | Ja | Nicht empfohlen: Der RFC sagt, er sollte nicht veröffentlicht werden |
exists | Ja | Eine Abfrage |
redirect | Ja | Zählt, wenn er erreicht wird (nur wenn kein Mechanismus zutraf, und nie, wenn der Record all enthält); das Ziel wird dann mit demselben Budget ausgewertet |
ip4, ip6 | Nein | Die Adresse steht im Record selbst |
all | Nein | Üblicherweise der letzte Mechanismus; alles danach wird ignoriert |
exp | Nein | Wird nur nach einem Fehlschlag für den Erklärungstext abgerufen |
Zwei Details sind wichtig. Erstens kopiert include keinen anderen Record in Ihren: Nur sein Ergebnis wird verwendet, und der RFC räumt ein, dass der Name schlecht gewählt war. Ein -all in einem eingebundenen Record beendet die Gesamtauswertung nicht. Zweitens werden Mechanismen von links nach rechts ausgewertet, und die Verarbeitung endet bei dem ersten, der zutrifft. Das Limit gilt für Terme, die bei einer Prüfung tatsächlich ausgewertet werden, nicht für die Größe des Records auf dem Papier.
Einen Record von Hand zählen
Hier ein hypothetischer Record für ein Unternehmen, das zwei Mailplattformen, ein CRM, einen Helpdesk und einen eigenen Mailserver nutzt:
v=spf1 include:mailer-a.example include:mailer-b.example include:crm.example include:helpdesk.example mx a ~allAngenommen, die eingebundenen Records enthalten die folgenden Terme. Sie sind zur Veranschaulichung erfunden; die Records echter Anbieter sehen anders aus und ändern sich im Lauf der Zeit.
| Ausgewerteter Term | Bisher verbrauchte Lookups |
|---|---|
include:mailer-a.example | 1 |
darin: include:_nets.mailer-a.example | 2 |
include:mailer-b.example | 3 |
darin: a | 4 |
darin: mx | 5 |
include:crm.example | 6 |
darin: include:spf1.crm.example | 7 |
darin: include:spf2.crm.example | 8 |
include:helpdesk.example | 9 |
mx | 10 |
a | 11: Limit überschritten, permerror |
Mail, die über die erste Plattform läuft, trifft früh zu und besteht die Prüfung. Mail von dem Server, den nur das letzte a autorisiert, braucht einen elften Lookup, sodass die Prüfung permerror statt eines Treffers liefert. Diese Asymmetrie ist der Grund, warum der Fehler sporadisch wirkt: Er hängt davon ab, wessen Mail gerade geprüft wird.
Weitere Limits in derselben Spezifikation
- Void Lookups. Eine Abfrage, die keine Records oder einen Namensfehler liefert, ist ein Void Lookup. RFC 7208 empfiehlt, sie auf zwei zu begrenzen; eine Überschreitung führt zu
permerror. Davon getrennt gilt: Eininclude:, dessen Ziel keinen SPF-Record hat, einschließlich eines Namens, der nicht mehr existiert, liefertnone, und der include-Mechanismus macht daraus sofortpermerror, sodass ein veralteter Include einen Record für sich allein kaputt machen kann. - Fan-out. Ein
mx-Mechanismus darf nicht mehr als 10 Adress-Lookups auslösen. Beiptrwerden Namen jenseits der ersten 10 ignoriert. - Nur ein Record. Veröffentlicht eine Domain mehr als einen Record, dessen Version genau
v=spf1lautet, ist das Ergebnispermerror. - Größe. Der RFC rät, den veröffentlichten Record so klein zu halten, dass die Antwort in 512 Oktette passt und damit ohne EDNS(0) in einem einzigen UDP-Paket übertragen wird.
- Record-Typ. SPF muss als TXT-Record veröffentlicht werden. Der eigene SPF-Record-Typ aus der experimentellen Phase wurde eingestellt.
- Zeit. Empfänger sollten die Zeit für eine Auswertung begrenzen, aber mindestens 20 Sekunden zulassen. Wird dieses Zeitlimit überschritten, sollte das Ergebnis
temperrorlauten, ein temporärer Fehler, nichtpermerror.
So kommen Sie wieder unter das Limit
- Löschen Sie, was Sie nicht mehr nutzen. Ein gekündigter Dienst kostet weiterhin einen Lookup, sobald die Auswertung sein
includeerreicht. Tote Includes zu entfernen ist die günstigste Lösung. - Verlagern Sie Absender auf Subdomains. Jeder Name hat seinen eigenen Record und sein eigenes Budget von 10. Mail, deren Envelope-Sender auf
news.example.comliegt, wird gegen den Record dieses Namens geprüft, nicht gegen den der Root-Domain. Bei relaxed Alignment ordnet DMARC die Subdomain weiterhin der Organisationsdomain zu. - Ersetzen Sie
aundmxdurch Literale, wenn die Server Ihnen gehören und sich selten ändern.ip4undip6kosten nichts. - Flattening mit Vorsicht. Flattening ersetzt ein
includedurch die Adressen, in die es sich aktuell auflöst. Das besteht heute und scheitert lautlos, wenn der Anbieter seine Adressbereiche ändert. - Verzichten Sie auf
ptr. Der RFC sagt, er sollte nicht veröffentlicht werden.redirectdurchincludezu ersetzen spart nichts, da beide einen Lookup zählen. - Nach Volumen ordnen, sich aber nicht darauf verlassen. Da die Auswertung beim ersten Treffer endet, verbrauchen die meisten Mails weniger Lookups, wenn Literale und Ihre volumenstärksten Absender zuerst stehen. Das verringert, wie oft das Limit zuschlägt; es macht einen Record über dem Limit nicht gültig und kann den Fehler verbergen, bis ein selten genutzter Absender sendet.
Ein permerror ist nicht nur für SPF selbst von Bedeutung. DMARC (RFC 7489) besteht, wenn SPF oder DKIM für eine übereinstimmende Domain (Alignment) besteht, und permerror ist kein pass, sodass SPF nichts mehr beitragen kann. Fehlt auch DKIM oder stimmt es nicht überein, besteht die Nachricht DMARC nicht. Um Ihre eigene Zählung zu sehen, folgt der SPF-Checker jedem Include und Redirect und zählt die Lookups über den gesamten Baum gegen das Limit von 10. Das ist eine Worst-Case-Zählung der Terme und nicht nur derjenigen, die eine bestimmte Nachricht auslösen würde. Wenn Sie den Record ändern, senken Sie zuvor seine TTL, damit sich ein Fehler schnell zurücknehmen lässt; siehe DNS-TTL erklärt. Das größere Bild finden Sie in SPF, DKIM und DMARC erklärt.
Kernaussage
Zählen Sie Terme, nicht Zeichen: include, a, mx, ptr, exists und redirect kosten je einen Lookup, verschachtelte eingeschlossen, und beim elften liefert die Prüfung permerror.
Quellen und weiterführende Literatur
- RFC 7208: Sender Policy Framework (SPF) for Authorizing Use of Domains in Email, Version 1 (Kitterman, 2014)
- RFC 7489: Domain-based Message Authentication, Reporting, and Conformance (DMARC) (Kucherawy and Zwicky, 2015)
Möchten Sie die öffentlichen DNS-Adressen einer Domain prüfen? Nutzen Sie das Tool Domain IP Lookup.
Kostenlose Tools zu diesem Thema
Häufig gestellte Fragen
Weiterführende Artikel
Die Einträge, die Ihnen in fast jeder Zone begegnen
TXT-Records erklärt: SPF, DKIM und DMARC
Drei TXT-Records stehen zwischen Ihrer E-Mail und dem Spam-Ordner. Was jeder tut, wie Sie die Syntax lesen und in welcher Reihenfolge Sie sie sicher einführen.
Wie eine E-Mail Ihren Mailserver findet
Absender
you@gmail.com
MX-Abfrage
wer nimmt Mail an?
Mailserver
Priorität 10 zuerst
Posteingang
zugestellt
Die niedrigste Prioritätszahl gewinnt; höhere Zahlen sind Backups
E-Mail-DNS-Records: MX, SPF, DKIM und DMARC
Praxisleitfaden zu den DNS-Records für E-Mail: wie Routing und Authentifizierung zusammenspielen und was Sie nach einer Mail-Migration prüfen sollten.
Wie eine E-Mail Ihren Mailserver findet
Absender
you@gmail.com
MX-Abfrage
wer nimmt Mail an?
Mailserver
Priorität 10 zuerst
Posteingang
zugestellt
Die niedrigste Prioritätszahl gewinnt; höhere Zahlen sind Backups
Was sind MX-Records? E-Mail-Routing erklärt
Der Record, der entscheidet, wo Ihre E-Mail landet — wie Prioritätszahlen funktionieren, was Null-MX bedeutet und welche Fehler stillschweigend Nachrichten verlieren.