E-mailauthenticatie · SPF

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
TermWat de ontvanger moet opzoekenLookups
mxDe mailhosts van het domein.1
include:spf.protection.outlook.comMicrosoft 365. Het record vermeldt alleen adressen.1
include:email.freshdesk.comFreshdesk. Het record bevat een include van SendGrid (2) en vier regionale Freshdesk-records (elk 1).7
include:sendgrid.netSendGrid. Het record bevat een include van nog één eigen record.2
-allAl het andere laten falen. Geen lookup.0
Totaal, tegenover een limiet van 1011: 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

  1. 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.

  2. 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.

  3. 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).

  4. 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.

  5. 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.

  6. 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?
include, a, mx, ptr en exists, plus de modifier redirect. ip4, ip6, all en exp kosten niets. De qualifier en een CIDR-suffix veranderen niets: ~include, +a en a/24 kosten elk 1.
Tellen de lookups binnen een include mee?
Ja. De ontvanger volgt elke include naar beneden, en elke lookupterm in elk record dat hij bereikt, telt mee voor hetzelfde budget van 10. Zo kan één include 7 kosten.
Geldt de limiet per record of per bericht?
Per SPF-controle: één evaluatie van uw record voor één bericht, met alles wat het binnenhaalt. Een subdomein met een eigen record begint weer bij 0.
Wat is een void lookup?
Een lookup die geen antwoord oplevert, of een antwoord dat zegt dat de naam niet bestaat. RFC 7208 zegt dat ontvangers er maximaal twee per controle moeten toestaan; meer is een PermError. Een include die verwijst naar een record van een leverancier dat is verwijderd, is de gebruikelijke oorzaak.
Kost de mx-term meer dan één lookup?
Hij kost 1 tegenover de limiet van 10. De adreslookups voor de mailhosts die hij teruggeeft, tellen niet mee voor de 10, maar het mogen er niet meer dan 10 zijn, anders geeft de mx-term zelf een PermError.
Erft een subdomein mijn SPF-record?
Nee. SPF wordt gecontroleerd tegen het exacte domein in de envelope sender, of tegen de HELO-naam van de server. Een subdomein dat mail verstuurt, heeft een eigen record nodig. Een subdomein dat nooit mail verstuurt, moet v=spf1 -all publiceren, zodat niemand anders het kan gebruiken.
Waarom flattent SkyQon mijn SPF-record niet?
Flattening vervangt includes door de huidige adressen van de leverancier. De telling daalt tot de leverancier een adres wijzigt, en dan faalt mail zonder waarschuwing. Gehoste of dynamische SPF vermijdt dat door de include van het hostingbedrijf in uw record te zetten, zodat uw mailauthenticatie van dat bedrijf afhangt. Wij tellen, leggen uit en waarschuwen in plaats daarvan, en het record blijft van u.
Hoe vaak telt SkyQon opnieuw?
Op een bewaakt domein telt elke scan de hele boom opnieuw. Het gratis abonnement bewaakt tot 5 domeinen en waarschuwt u bij 9 of 10 lookups en opnieuw boven 10. De tool op deze pagina is een eenmalige telling die u op elk moment kunt uitvoeren.
Mijn telling verschilt van die van een andere tool. Welke klopt?
Tools verschillen op twee punten: of een herhaalde include elke keer wordt geteld (RFC 7208 telt elke evaluatie, en wij ook), en wat er gebeurt als een tak niet kan worden gelezen. Antwoordt een DNS-server niet, dan markeren wij de telling als onvolledig in plaats van te gokken.
Lost het oplossen van SPF ook DMARC op?
Alleen de SPF-helft. DMARC slaagt wanneer SPF of DKIM slaagt en overeenkomt met uw From-domein. DKIM-ondertekening met uw eigen domein laat mail ook voor DMARC slagen op een dag dat SPF faalt, dus richt beide in.

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.