Te veel DNS-lookups: SPF PermError oplossen voor Google, Microsoft 365 & SendGrid

Gepubliceerd op 11 september 2026 · 6 min. leestijd · spFlat!

"Te veel DNS-lookups" is nog steeds de meest voorkomende reden dat SPF-records tijdens de evaluatie mislukken. De limiet van 10 lookups in RFC 7208 is een hard plafond: de 11e term die een DNS-query veroorzaakt, stopt de evaluatie met een PermError. Dat is niet hetzelfde als een SPF-fail, maar veel ontvangers (waaronder Gmail) behandelen het zo streng dat je bezorgbaarheid een flinke klap krijgt.

De valkuil is het tellen van alleen de include:-tokens die je hebt getypt. Ontvangers tellen de hele keten. Google Workspace en Microsoft 365 hebben hun eigen records onlangs afgevlakt, dus die twee lijken weinig te kosten. Voeg SendGrid, Mailgun of een CRM toe en het totaal gaat over de 10, zonder dat iemand de zichtbare delen van je TXT-record heeft gewijzigd.


Waarom "te veel DNS-lookups" optreedt

Elk include:, a, mx, ptr, exists en redirect= telt als een DNS-lookup. Geneste includes ook. Directe ip4:- en ip6:-mechanismen niet. De initiële lookup van je eigen SPF-TXT-record telt evenmin mee.

Een record met vijf includes kost geen vijf lookups:

v=spf1 include:_spf.google.com include:spf.protection.outlook.com include:sendgrid.net include:mailgun.org include:_spf.salesforce.com ~all

Als je die combinatie vandaag oplost, kom je doorgaans op 11 lookups uit, al boven de limiet:

  • _spf.google.com: Google publiceert nu direct IP-ranges, dus 1 lookup
  • spf.protection.outlook.com: Microsoft 365 is ook een afgevlakte IP-lijst, dus 1 lookup
  • sendgrid.net bevat nog een geneste include:ab.sendgrid.net: 2 lookups
  • mailgun.org waaiert uit via _spf.mailgun.org → _spf1/_spf2 plus het EU-record: 5 lookups
  • _spf.salesforce.com gebruikt exists: bovenop de include: 2 lookups
De aantallen per aanbieder veranderen. Google zat vroeger op vier geneste netblock-includes, maar heeft zijn eigen record inmiddels afgevlakt. "Outlook kost 3 lookups" van vorig jaar klopt dit jaar niet meer. Controleer de live keten; leer geen tabel uit een blog voor altijd uit je hoofd.

Per aanbieder

Google Workspace

Je Google-include is één regel:

v=spf1 include:_spf.google.com ~all

In 2026 is dat record een lijst van ip4:/ip6:-ranges, dus het kost 1 lookup. Vroeger liep het via _netblocks.google.com, _netblocks2 en _netblocks3 (ongeveer 4 lookups). De oude netblock-namen bestaan nog, maar het SPF-record op het hoogste niveau van Google verwijst er niet meer naar. Op zichzelf goedkoop, maar nog steeds 1 van je 10.

Microsoft 365

Exchange Online gebruikt include:spf.protection.outlook.com. Dat record is momenteel ook een afgevlakte IP-lijst: 1 lookup. De valkuil zit in alles wat een Microsoft-omgeving daarna toevoegt: een marketingplatform, Dynamics, een beveiligingsgateway of een include voor een tweede tenant. Dat zijn extra lookups op een budget dat al deels is opgebruikt.

SendGrid

SendGrid bevat nog een geneste include:

include:sendgrid.net

sendgrid.net publiceert een lange IP-lijst én include:ab.sendgrid.net. Volledig opgelost kost dat 2 lookups. Samen met Google, Outlook, Mailgun en een CRM zit je al boven de 10.

Zo herken je het (voordat mail als niet-geauthenticeerd wordt behandeld)

Optie 1: de spFlat!-checker (gratis, geen account)

Ga naar spflat.cloud, voer je domein in en klik op Controleren. spFlat! lost de volledige keten inclusief geneste includes op en toont het aantal lookups dat een ontvanger zou tellen, niet alleen de tokens op het hoogste niveau.

Optie 2: handmatig met dig

dig TXT yourdomain.com +short | grep -o 'include:[^ ]*' | while read inc; do
  dig TXT ${inc#include:} +short
done

Dit geeft een ruwe telling, maar mist geneste includes tenzij je zelf verder de diepte in gaat. Juist daar zitten de extra lookups verstopt.

🔴 Het addertje: sommige DNS-validators stoppen bij 10 lookups en tonen de rest van de boom niet. Je record kan in een dashboard "bijna goed" lijken en bij de ontvanger toch een PermError geven.

Zo los je het op

De moeilijke manier: handmatig afvlakken

  1. Los elk include:, a: en mx: in je record op
  2. Verzamel alle resulterende IP-adressen en CIDR-ranges
  3. Bouw een nieuw record met alleen ip4:- en ip6:-mechanismen
  4. Publiceer het en hoop dat de aanbieders hun ranges niet wijzigen
⚠️ Het probleem: Google, Microsoft en SendGrid wijzigen hun IP-ranges regelmatig. Een handmatig afgevlakt record raakt verouderd, en dat merk je pas wanneer mail begint te bouncen. Alle CIDR-ranges direct op je eigen domein zetten loopt bovendien tegen de DNS-groottelimieten aan; bekijk het probleem van 255 tekens / TXT-grootte.

De slimme manier: spFlat!

spFlat! houdt het record dat een ontvanger evalueert onder de limiet van 10 lookups én actueel:

  1. Controleer je domein en zie direct het echte aantal lookups
  2. Voeg je verzenddiensten toe (Google, Microsoft 365, SendGrid, Mailgun en wat je verder echt gebruikt)
  3. Publiceer één include, meestal v=spf1 include:_yourdomain.spf.spflat.cloud ~all (één lookup). spFlat! bewaakt IP-wijzigingen van aanbieders 24/7 en werkt het afgevlakte record achter dat include bij.

Preventie

  • Voeg nieuwe diensten toe via spFlat! in plaats van het TXT-record rechtstreeks te bewerken
  • Controleer opnieuw na elke wijziging van aanbieder: één nieuw include kan je ongemerkt over de limiet duwen
  • Monitor DMARC-rapporten: een plotselinge daling in SPF-alignment is vaak het eerste teken van een kapotte keten

🔍 Controleer je domein nu

Tien seconden. Gratis. Bekijk precies hoeveel lookups je SPF-record verbruikt, inclusief alle geneste includes. Meer dan 10? Vlak je record af met spFlat! tijdens een gratis proefperiode van 14 dagen.

Controleer je SPF
Of start je gratis proefperiode van 14 dagen →

Veelgestelde vragen

Hoeveel SPF-DNS-lookups gebruiken Google Workspace en Microsoft 365?

In 2026 kosten beide afzonderlijk doorgaans 1 lookup: _spf.google.com en spf.protection.outlook.com publiceren afgevlakte IP-lijsten. Vroeger bevatten ze meer geneste includes, dus oudere tabellen in blogs zijn achterhaald. Elk verbruikt nog steeds 1 van je 10 lookups voordat je marketing- of CRM-platforms toevoegt.

Waarom gaan Google, Microsoft 365 en SendGrid samen over de SPF-limiet van 10 lookups?

Ontvangers tellen de volledige geneste keten, niet de include-tokens die je hebt getypt. Google en Outlook kosten elk misschien 1 lookup, maar SendGrid bevat nog een geneste include (ongeveer 2 lookups) en Mailgun of Salesforce kunnen er nog meer bij doen. Een gangbare combinatie van Google, Outlook, SendGrid, Mailgun en een CRM zit rond de 11 lookups en geeft al een PermError.

Hoe los ik te veel DNS-lookups op voor Google, Microsoft 365 en SendGrid?

Stop met het stapelen van includes van elke aanbieder op je domein. Vlak je record af tot alleen ip4:/ip6: als je het zelf actueel houdt, of publiceer één include naar een geautomatiseerde flatteningdienst die IP-wijzigingen van aanbieders bewaakt. Controleer opnieuw na elke nieuwe afzender: het aantal lookups per aanbieder verandert in de loop van de tijd.