Te veel DNS-lookups in SPF: waarom mail faalt en hoe u het oplost
Het korte antwoord
SPF laat een ontvanger maximaal 10 DNS-lookups doen terwijl hij uw record controleert (RFC 7208, sectie 4.6.4). Elke include-, a-, mx-, ptr- en exists-term telt mee, en redirect ook, inclusief die in de records van uw leveranciers. Bij 11 stopt de controle met een PermError, faalt SPF voor elk bericht, en steunt DMARC dan alleen nog op DKIM.
De berekening, op één record
Een fictief bedrijf, example.com, verstuurt mail via Microsoft 365 en een Freshdesk-helpdesk. Jaren geleden heeft iemand ook SendGrid toegevoegd. Het record heeft vijf termen en ziet er onschuldig uit:
v=spf1 mx include:spf.protection.outlook.com include:email.freshdesk.com include:sendgrid.net -all
| Term | Wat de ontvanger moet opzoeken | Lookups |
|---|---|---|
mx | De mailhosts van het domein. | 1 |
include:spf.protection.outlook.com | Microsoft 365. Het record vermeldt alleen adressen. | 1 |
include:email.freshdesk.com | Freshdesk. Het record bevat een include van SendGrid (2) en vier regionale Freshdesk-records (elk 1). | 7 |
include:sendgrid.net | SendGrid. Het record bevat een include van nog één eigen record. | 2 |
-all | Al het andere laten falen. Geen lookup. | 0 |
| Totaal, tegenover een limiet van 10 | 11: PermError | |
Twee wijzigingen brengen het op 8. De adressen van SendGrid komen al binnen via het record van Freshdesk, dus de aparte include kost 2 lookups en voegt geen adres toe. Vertrekt mail alleen via Microsoft 365, dan voegt de mx-term ook niets toe. 11 − 2 − 1 = 8, met ruimte voor nog één leverancier.
Kosten per leverancier gemeten op 11 november 2026 tegen publieke DNS. Leveranciers wijzigen hun eigen records zonder aankondiging; daarom leest de tool ze live in plaats van uit een lijst.
Wat er misgaat, en wie het merkt
- De ontvanger stopt bij de elfde lookup. Het resultaat is PermError, een permanente fout. Hij leest de rest van uw record niet, dus zelfs uw Microsoft 365-servers worden niet meer herkend. RFC 7208 §4.6.4
- De meeste ontvangers behandelen een PermError als een mislukking. Wat ze ermee doen, is hun keuze: spammap, weigering of een lagere reputatiescore. Geen van hen vertelt het u. RFC 7208 §8.7
- DMARC verliest zijn SPF-helft. DMARC slaagt wanneer SPF of DKIM slaagt en overeenkomt met uw From-domein. Met een kapotte SPF faalt elk bericht dat niet met DKIM voor uw domein is ondertekend voor DMARC, en onder p=quarantine of p=reject wordt het gefilterd of geweigerd. RFC 7489 §3.1
- Het kan breken terwijl u niets wijzigt. De lookups in het record van een leverancier zijn aan de leverancier om te wijzigen. Een record dat vandaag op 9 staat, komt op 11 op de dag dat een leverancier een regio toevoegt.
- U hoort het als laatste. Geen enkele ontvanger mailt u een PermError. Uw geaggregeerde DMARC-rapporten tonen het een dag later, als iemand ze leest.
Tel uw eigen record
De gratis SPF-lookupcontrole tekent uw include-boom met de kosten van elke tak, zodat u ziet welke leverancier uw lookups opgebruikt.
Gratis, zonder account. Wij lezen alleen publieke DNS en wat uw servers laten zien aan iedereen die verbinding maakt.
Zo lost u het op, stap voor stap
Breng in kaart wat werkelijk mail verstuurt als uw domein
Lees uw geaggregeerde DMARC-rapporten, of vraag het elk team: helpdesk, CRM, facturatie, nieuwsbrieven. Een include voor een dienst die niemand meer gebruikt, is een lookup die u gratis terugkrijgt.
Tel elke tak, niet alleen uw eigen termen
Voer de SPF-lookupcontrole uit. Die volgt elke include tot het laatste record en laat zien wat elke include kost. Begin bij de duurste tak.
Verwijder dubbele en dode vermeldingen
Schrap includes voor diensten waarmee u bent gestopt, includes die het record van een andere leverancier al bevat, en mx- of a-termen voor hosts die nooit mail versturen. Verwijder ptr in elk geval: RFC 7208 zegt dat het SHOULD NOT worden gebruikt (§5.5).
Verplaats bulkmail naar een subdomein
Verstuur nieuwsbrieven met een return-path op een subdomein zoals news.example.com, met een eigen SPF-record. Die naam heeft een eigen budget van 10 lookups, en onder de standaard relaxed alignment van DMARC komt hij nog steeds overeen met mail van example.com.
Vermeld uw eigen vaste servers op adres
Een server die u zelf beheert, met een vast adres, kunt u vermelden als ip4: of ip6:. Die termen kosten niets. Kopieer de adressen van een leverancier niet op deze manier: leveranciers wijzigen ze zonder het u te vertellen.
Controleer opnieuw en blijf daarna opletten
Controleer nog eens nadat de DNS-wijziging zich heeft verspreid. Laat SkyQon daarna het domein bewaken: het waarschuwt u bij 9 of 10 lookups, voordat de wijziging van een leverancier u over de limiet duwt.
Veelgemaakte fouten
Alleen de includes tellen die u kunt zien
Vijf termen lijken veilig. De limiet geldt voor de hele boom, en de ene include van Freshdesk kost vandaag op zichzelf al 7.
In het resultaat van SkyQon: elke include toont zijn eigen subtotaal, en de duurste tak is gemarkeerd.
Denken dat een herhaalde include gratis is
Als twee leveranciers hetzelfde record via include opnemen, zoekt de ontvanger het twee keer op en tellen beide mee. RFC 7208 kent geen ontdubbeling.
In het resultaat van SkyQon: een herhaalde include verschijnt in elke tak die hem gebruikt, telkens met zijn kosten.
Adressen van leveranciers naar uw record kopiëren
Het verlaagt de telling vandaag. Wanneer de leverancier een server toevoegt, weet uw kopie dat niet, en faalt hun mail voor uw SPF zonder dat er ergens een fout verschijnt. Een gehoste SPF-dienst die uw record herschrijft, heeft dezelfde zwakte in omgekeerde richting: de include ervan staat in uw record, en als die dienst stopt, stopt ook uw mailauthenticatie.
In het resultaat van SkyQon: ip4- en ip6-termen kosten 0 in de boom. De tool kan niet zien of een gekopieerd bereik nog van de leverancier is; daarom raden wij kopiëren af.
Een tweede SPF-record toevoegen voor een nieuwe leverancier
Twee TXT-records die beginnen met v=spf1 zijn op zichzelf al een PermError, ongeacht de telling (RFC 7208 §3.2). Voeg de nieuwe include toe aan het ene record dat u hebt.
In het resultaat van SkyQon: een bevinding over meerdere records, met beide records getoond.
Wat SkyQon wel en niet doet
Wat het vindt
Uw SPF-record en elk record dat het via include opneemt, met de lookups die elke tak kost. Ook: meer dan één SPF-record, een sjabloonplaatshouder zoals <ip> die in het record is blijven staan, meer dan twee void lookups, en een all die iedereen laat versturen.
Wat u krijgt
De telling tegenover de limiet van 10, de tak die u het eerst moet inkorten, uw record in een vak dat u kunt kopiëren, en op een bewaakt domein een waarschuwing bij 9 of 10 lookups en nog een boven 10.
Wat het niet is
Wij hosten of herschrijven uw SPF-record niet. Uw SPF blijft van u: geen include van SkyQon erin, en niets dat stopt met werken als u bij ons vertrekt.
SPF-lookups: veelgestelde vragen
Welke SPF-termen tellen mee voor de limiet van 10 lookups?
Tellen de lookups binnen een include mee?
Geldt de limiet per record of per bericht?
Wat is een void lookup?
Kost de mx-term meer dan één lookup?
Erft een subdomein mijn SPF-record?
Waarom flattent SkyQon mijn SPF-record niet?
Hoe vaak telt SkyQon opnieuw?
Mijn telling verschilt van die van een andere tool. Welke klopt?
Lost het oplossen van SPF ook DMARC op?
Bronnen
- RFC 7208 §4.6.4: limieten voor DNS-lookups, void lookups, MX-limiet
- RFC 7208 §3.2: één SPF-record per domein
- RFC 7208 §5.5: het ptr-mechanisme hoort niet te worden gebruikt
- RFC 7208 §8.7: wat een PermError betekent voor de ontvanger
- RFC 7489 §3.1: identifier alignment bij DMARC
Gerelateerde pagina's
Hoor het bij 9, niet na 11.
Voeg uw domein toe aan het gratis abonnement. SkyQon telt uw SPF-boom bij elke scan opnieuw en waarschuwt u voordat de wijziging van een leverancier u over de limiet duwt.