Uitleg SPF
Wat is SPF?
SPF (Sender Policy Framework) is een korte tekstregel die je in het DNS van je domein zet. Zie het als een gastenlijst bij de deur: alleen de mailservers die op de lijst staan, mogen namens jouw domein e-mail versturen. Krijgt een ontvangende server een bericht dat zogenaamd van jou komt, dan checkt die de lijst. Staat de verzendende server er niet op, dan is dat een sterk teken van misbruik. SPF beoordeelt alleen de verzendende server. Dat het bericht onderweg niet is aangepast bewijst DKIM, en of het zichtbare afzenderadres klopt regelt DMARC.
Wat doet SPF precies?
Je domein heeft DNS: een soort telefoonboek dat vertelt waar je website en mail staan. In dat DNS zet je één klein TXT-record (gewoon een stukje tekst) dat begint met v=spf1. Daarachter zet je welke mailservers namens jou mogen versturen, en helemaal achteraan wat er moet gebeuren met de rest.
Krijgt iemand een mail van 'jouw' domein, dan doet de ontvangende mailserver automatisch een controle: hij kijkt naar het IP-adres (het 'huisnummer' op internet) van de verzendende server en vergelijkt dat met jouw lijst. Staat de server erop → pass. Staat-ie er niet op, dan komt de afsluitende regel in actie: meestal 'verdacht' (softfail) of 'weigeren' (fail).
Let op: SPF kijkt naar het verborgen 'envelope'-afzenderadres (technisch: MAIL FROM), niet naar het afzenderadres dat de ontvanger in zijn mailprogramma ziet. Dat verschil is precies waarom je SPF, DKIM én DMARC samen nodig hebt.
Hoe ziet een SPF-record eruit?
Een typisch record: v=spf1 include:_spf.google.com ~all. Stukje voor stukje:
v=spf1: vertelt dat dit een SPF-record is (verplicht aan het begin)include:_spf.google.com: 'neem ook de servers van Google over'. Zo voeg je een hele provider in één keer toe~all: de afsluiting, al het overige is softfail (verdacht)
De bouwstenen die je kunt gebruiken:
aenmx: de servers achter de A- en MX-records van je domeinip4:enip6:: losse IP-adressen of hele reeksen, bijv.ip4:192.0.2.0/24include:: verwijst naar het SPF-record van een provider- het teken vóór
allbepaalt de strengheid:-all(hard weigeren),~all(softfail),?all(neutraal),+all(alles toestaan, doe dit nooit)
De 10-lookup-limiet
Er zit een belangrijke limiet aan SPF: tijdens het controleren mag het maximaal 10 DNS-opvragingen veroorzaken. Elke include:, a, mx, ptr, exists en redirect= telt mee, en een include kan zelf weer includes bevatten, dus het loopt sneller op dan je denkt.
Kom je boven de 10, dan stopt de controle met een permerror (permanente fout). Ontvangers behandelen je mail vanaf dat moment alsof je helemaal geen SPF hebt, ook al klopt je lijst inhoudelijk. Gebruik je bijvoorbeeld Google, Microsoft 365 én een nieuwsbrieftool, dan zit je er zo overheen.
Oplossingen: includes die je niet meer gebruikt weghalen, of het record 'platslaan' (flattening) door includes te vervangen door de onderliggende ip4:/ip6:-reeksen. Nadeel: die reeksen kunnen bij de provider veranderen, dus dan moet je het zelf bijhouden.
Waarom je dit nodig hebt
Zonder SPF kan iedereen mail versturen die zogenaamd van jouw domein komt, en ontvangers hebben geen enkele manier om dat tegen te houden. Oplichters gebruiken dat voor phishing en spam onder jouw naam.
SPF is bovendien de basis waarop DMARC leunt: zonder een geslaagde SPF- of DKIM-controle kan DMARC niet slagen. Een kloppend record verkleint de kans dat je eigen mail als spam wordt weggezet, en het is de opstap naar een streng DMARC-beleid. Sinds 2024 accepteren Gmail en Yahoo bovendien alleen nog mail van domeinen met minstens SPF of DKIM.
Veelgemaakte fouten
- Meer dan één SPF-record publiceren: dat geeft een
permerror. Alles hoort in één record - Boven de 10 DNS-lookups uitkomen (zie hierboven)
- Afsluiten met
+all: daarmee mag iedereen namens je verzenden. Eigenlijk net zo erg als geen SPF - Een verzender vergeten (nieuwsbrieftool, CRM, boekhoudpakket), waardoor echte mail ineens faalt
ptrgebruiken: verouderd, traag en onbetrouwbaar. Vermijd het
Stap voor stap instellen
- Maak een lijst van élke dienst die namens jouw domein mailt: je mailprovider, nieuwsbrieftool, CRM, webshop, factuursysteem
- Zoek per dienst op welke
include:ofip4:/ip6:ze voorschrijven (staat in hun handleiding) - Zet alles samen in één record, bijv.
v=spf1 include:_spf.google.com include:servers.mcsv.net ~all - Sluit af met
~allzolang je twijfelt, en met-allzodra je zeker weet dat de lijst compleet is - Publiceer het als TXT-record op je hoofddomein en wacht even op verwerking (kan tot een paar uur duren)
- Controleer het resultaat met de scan van DNS Radar: die telt ook de lookups voor je
Veelgestelde vragen
Wat betekent ~all versus -all?
-all zegt: alles wat niet in het record staat is fout (hardfail). ~all is een softfail: verdacht, maar niet hard weigeren. -all is strakker. Gebruik het als je alle verzenders kent.
Is SPF genoeg om spoofing te stoppen?
Nee. SPF controleert het envelope-afzenderdomein, niet het zichtbare From. Je hebt SPF, DKIM én DMARC samen nodig om spoofing van je zichtbare adres te blokkeren.
Mag ik meerdere SPF-records hebben?
Nee. Eén domein hoort precies één SPF-record te hebben. Meerdere v=spf1-records geven een permerror. Voeg alle verzenders samen in dat ene record.
Heb ik SPF nodig als mijn domein geen mail verstuurt?
Ja. Publiceer dan v=spf1 -all. Daarmee verklaar je expliciet dat geen enkele server namens dit domein mag versturen. Dat voorkomt dat oplichters het misbruiken.
Mijn SPF heeft te veel lookups. Wat nu?
Verwijder includes die je niet meer gebruikt, vervang includes door hun ip4:/ip6:-reeksen (flattening), of geef aparte verzendstromen een eigen subdomein met een eigen SPF-record.