✦ Oplossingen · DNS en domeinnaam

SPF PermError: too many DNS lookups en andere SPF-fouten oplossen

SPF PermError, te veel DNS-lookups of twee SPF-records? Lees hoe SPF werkt, wat de limiet van 10 lookups is en hoe je één correct SPF-record opbouwt.

Zo ziet de foutmelding eruit

  • SPF PermError: too many DNS lookups
  • spf=permerror
  • spf=fail
  • spf=softfail
  • SPF Multiple Records
  • 550 5.7.23 The message was rejected because of Sender Policy Framework violation

Waarom gebeurt dit?

SPF (Sender Policy Framework) is een TXT-record in de DNS van je domein met een lijst van servers die mail namens dat domein mogen versturen. De ontvangende mailserver kijkt bij elk bericht of de verzendende server op die lijst staat. Zo niet, dan wordt de mail vaker als spam gezien of geweigerd. Het record begint altijd met v=spf1 en eindigt meestal met ~all (anderen: verdacht) of -all (anderen: weigeren).

Een veelvoorkomende fout is PermError: too many DNS lookups. Bij het controleren mag een ontvanger maximaal 10 DNS-opzoekingen doen. Elke include:, a, mx, exists:, redirect= en ptr telt mee, en ook de opzoekingen binnen een include van een andere dienst tellen mee. Een paar includes van mailprovider, nieuwsbriefdienst, factuurpakket en webshop zitten daar snel boven. ip4:, ip6: en all tellen niet mee.

Andere fouten zijn: twee SPF-records op hetzelfde domein (dat mag niet en geeft ook een PermError), een tikfout zoals v=spf1 zonder spatie of met include :, een vergeten verzender (je website, je kassasysteem of je nieuwsbriefdienst staat er niet in) of een record dat met -all eindigt voordat alle verzenders erin staan.

Zo herken je dit probleem

  • In de kopregels van een mail of in een DMARC-rapport staat spf=permerror, spf=fail of spf=softfail.
  • Een controletool meldt ‘too many DNS lookups’ of ‘multiple SPF records’.
  • Mail van één dienst (bijvoorbeeld je website of nieuwsbrief) komt in spam, en mail vanuit je gewone mailprogramma niet.
  • Gmail weigert je mail met de melding dat de afzender niet geauthenticeerd is: zie ook 550 5.7.26 Unauthenticated.
  • Komt je mail aan maar in de spammap zonder SPF-fout, kijk dan bij mail komt in spam bij ontvanger.

Zo los je het op, stap voor stap

Menunamen kunnen per versie of toestel iets anders heten. Loop de stappen op volgorde af en stop zodra het werkt.

  1. Bekijk je huidige SPF-record

    Vraag alle TXT-records van je domein op en zoek de regels die met v=spf1 beginnen. Er mag er precies één zijn. Lange records worden soms in meerdere stukjes tussen aanhalingstekens getoond; dat is normaal, die worden aan elkaar geplakt. De Mail-DNS-check laat ook het aantal lookups zien.

    dig voorbeeld.nl TXT +short
    
    # Windows
    nslookup -type=txt voorbeeld.nl
  2. Voeg meerdere SPF-records samen tot één

    Staan er twee records met v=spf1, bijvoorbeeld één van je mailprovider en één van je nieuwsbriefdienst, dan voeg je ze samen. Neem één keer v=spf1, zet alle mechanismen daarachter en sluit één keer af met ~all of -all. Verwijder daarna het tweede record.

    # fout: twee records
    v=spf1 include:spf.mailprovider.example ~all
    v=spf1 include:spf.nieuwsbrief.example ~all
    
    # goed: één record
    v=spf1 include:spf.mailprovider.example include:spf.nieuwsbrief.example ~all
  3. Tel de DNS-lookups

    Tel elke include:, a, mx, exists: en redirect= in je record, en daarna de lookups in elk record dat je include’t. Dat laatste zie je door het opgegeven domein zelf op te vragen. Kom je boven de 10, dan krijg je een PermError, en dan telt je SPF voor veel ontvangers als ongeldig.

    dig spf.mailprovider.example TXT +short
  4. Verminder het aantal lookups

    Haal mechanismen weg die je niet nodig hebt: a en mx zijn overbodig als je webserver en mailserver geen mail versturen of al via een include zijn gedekt. Verwijder includes van diensten die je niet meer gebruikt. Verstuurt een dienst vanaf vaste adressen, dan kun je die als ip4: of ip6: opnemen; dat kost geen lookup, maar je moet het bijwerken als die dienst van adres verandert. Een andere aanpak is een dienst laten versturen vanaf een subdomein met een eigen SPF-record, bijvoorbeeld nieuwsbrief.voorbeeld.nl.

  5. Zorg dat alle echte verzenders erin staan

    Maak een lijst van alles wat mail verstuurt met je domein als afzender: je mailprovider, de website (contactformulier, webshop), je boekhoud- of factuurpakket, de nieuwsbriefdienst, een kassasysteem of CRM. Elke verzender geeft in zijn handleiding op wat je in SPF moet opnemen. Komt mail van je website niet aan, zie dan ook PHP-mail komt niet aan.

  6. Controleer de syntax

    Begin met v=spf1 gevolgd door een spatie, scheid alle onderdelen met één spatie, zet geen spatie na een dubbele punt en zet all altijd als laatste: alles erachter wordt genegeerd. Gebruik het oude recordtype ‘SPF’ niet meer, alleen TXT. Begin met ~all en ga pas naar -all als je zeker weet dat alle verzenders erin staan.

    v=spf1 ip4:203.0.113.25 include:spf.mailprovider.example ~all
  7. Test met een echte mail

    Stuur na de wijziging een mail naar een externe mailbox, bijvoorbeeld een Gmail-account, en bekijk de kopregels (in Gmail via Origineel weergeven). Daar staat spf=pass als het goed is. Doe dat voor elke verzender: je mailprogramma, je website en je nieuwsbrief. Stel daarna ook DKIM en DMARC in: zie DKIM-fout en DMARC instellen.

Let op: Zet -all pas aan als je zeker weet dat alle verzenders in het record staan. Een vergeten verzender, zoals het contactformulier van je website, wordt anders door ontvangers geweigerd.

Wat telt wel en niet als DNS-lookup

De limiet van 10 geldt voor het hele record, inclusief alles wat via includes wordt opgehaald.

  • Telt mee: include:, a, mx, ptr, exists:, redirect=.
  • Telt niet mee: ip4:, ip6:, all.
  • Een include van een dienst die zelf weer drie includes heeft, kost samen vier lookups.
  • Het mechanisme ptr wordt afgeraden; gebruik het niet.

SPF controleert alleen het technische afzenderadres (de ‘envelope from’), niet het adres dat de ontvanger in zijn mailprogramma ziet. Daarvoor is DMARC nodig.

Wanneer schakel je hulp in?

  • Je zit boven de 10 lookups en weet niet welke includes je kunt missen.
  • Mail van je website, webshop of factuurpakket wordt geweigerd terwijl je mailprogramma wel werkt.
  • Je wilt naar -all of een strenge DMARC-instelling, maar weet niet welke diensten allemaal namens je domein mailen.
  • Je hebt geen toegang tot de DNS of weet niet wie het domein beheert.

Lukt het niet? Wij helpen

Kom je er met deze stappen niet uit, of wil je het liever niet zelf doen? We kijken online mee of komen langs. Hulp op afstand kost €20 per uur; komen we langs, dan is de prijs op aanvraag. Je weet vooraf waar je aan toe bent.

Aanvraag

Hulp aanvragen

Schrijf kort wat er misgaat en wat je al hebt geprobeerd. Kies of we bellen, online meekijken of langskomen.

Veelgestelde vragen

Vragen over dit probleem

Mag ik twee SPF-records hebben?

Nee. Bij twee of meer records met v=spf1 geeft de controle een PermError. Voeg ze samen tot één record.

Wat betekent ‘too many DNS lookups’?

Je SPF-record vraagt bij elkaar, inclusief alle includes, meer dan 10 DNS-opzoekingen. Ontvangers stoppen dan met controleren en zien je SPF als ongeldig.

Moet ik ~all of -all gebruiken?

Begin met ~all. Met -all vraag je ontvangers om mail van niet-genoemde servers te weigeren; doe dat pas als alle verzenders in het record staan.

Is SPF genoeg tegen spoofing?

Nee. SPF controleert alleen het technische afzenderadres. Combineer het met DKIM en DMARC om het zichtbare afzenderadres te beschermen.