SPF, DKIM en DMARC: zo bewijst je domein dat de mail echt van jou is
E-mail is in de basis gebouwd op vertrouwen: iedereen kan een bericht versturen met elk willekeurig afzenderadres. Phishing en CEO-fraude leunen daar volledig op. SPF, DKIM en DMARC zijn de drie DNS-records die dat gat dichten. Ze zijn gratis, je zet ze in een middag goed, en toch zie ik nog vaak domeinen waar er minstens één ontbreekt of niet afdwingt.
SPF: wie mag er namens mij mailen?
Met SPF (Sender Policy Framework) publiceer je een lijst van servers die mail voor jouw domein mogen versturen. De ontvangende server kijkt van welk IP-adres de mail komt en controleert of dat op jouw lijst staat.
example.nl. TXT "v=spf1 include:spf.protection.outlook.com -all"
include:voegt de servers van een dienst toe, hier Microsoft 365.-allbetekent: alles wat niet op de lijst staat, is niet van ons. Met~all(softfail) vraag je ontvangers om verdacht te doen, maar niet te weigeren.
Valkuilen:
- Eén SPF-record per domein. Twee losse
v=spf1-records maken SPF ongeldig. Voeg nieuwe diensten toe aan het bestaande record. - Maximaal tien DNS-lookups. Elke
include:telt mee, en includes binnen includes ook. Met een paar marketingtools erbij zit je daar sneller aan dan je denkt. - SPF breekt bij doorsturen. Stuurt iemand jouw mail automatisch door, dan komt die van een server die niet op je lijst staat. Daarom is SPF alleen niet genoeg.
DKIM: een digitale handtekening op elk bericht
DKIM (DomainKeys Identified Mail) zet een cryptografische handtekening in de header van elke mail. De publieke sleutel staat in je DNS. De ontvanger controleert de handtekening en weet daarmee twee dingen: de mail komt echt van jouw domein, en hij is onderweg niet aangepast.
Bij Microsoft 365 zijn dat twee CNAME-records die naar sleutels bij Microsoft wijzen:
selector1._domainkey.example.nl. CNAME selector1-example-nl._domainkey.<tenant>.onmicrosoft.com.
selector2._domainkey.example.nl. CNAME selector2-example-nl._domainkey.<tenant>.onmicrosoft.com.
Twee selectors zodat Microsoft de sleutels kan roteren zonder dat er een moment zonder geldige handtekening is. Let op: alleen de records publiceren is niet genoeg. Je moet DKIM daarna ook aanzetten voor het domein in de Microsoft Defender-portal, anders ondertekent M365 nog steeds met het standaard onmicrosoft.com-domein.
Het voordeel ten opzichte van SPF: de handtekening reist mee met het bericht, dus DKIM overleeft doorsturen meestal wel.
DMARC: het beleid dat alles samenbrengt
SPF en DKIM controleren elk iets, maar zeggen niet wat een ontvanger moet doen als een controle faalt. Dat regelt DMARC. Het voegt ook een belangrijke extra eis toe: alignment. Het domein dat de gebruiker in het Van-veld ziet, moet overeenkomen met het domein dat door SPF of DKIM is gecontroleerd. Zonder die eis kan een aanvaller SPF laten slagen voor zijn eigen domein en toch jouw adres in het Van-veld zetten.
_dmarc.example.nl. TXT "v=DMARC1; p=reject; rua=mailto:dmarc@example.nl; adkim=s; aspf=s"
p=is het beleid:none(alleen rapporteren),quarantine(naar spam) ofreject(weigeren).rua=is het adres waar ontvangers dagelijks een rapport heen sturen met wie er namens jouw domein mailt.adkim=senaspf=smaken de alignment strikt: het domein moet exact overeenkomen, niet alleen het hoofddomein.
Een bericht slaagt voor DMARC als SPF of DKIM slaagt én aligned is. Je hoeft dus niet beide perfect te hebben, maar wel minstens één.
Stap voor stap aanscherpen
Direct op p=reject gaan is vragen om problemen: een vergeten nieuwsbriefdienst of factuursysteem raakt dan ineens al zijn mail kwijt. Deze volgorde werkt:
- Inventariseer welke systemen namens je domein mailen: mailserver, CRM, nieuwsbrief, ticketsysteem, scanners, de website.
- Zet SPF en DKIM goed voor al die systemen.
- Publiceer DMARC met
p=noneen eenrua-adres. Lees een paar weken de rapporten. Een gratis DMARC-analyzer maakt de XML-rapporten leesbaar. - Ga naar
p=quarantinezodra je alleen nog legitieme bronnen ziet die slagen. Begin eventueel metpct=25om het geleidelijk in te voeren. - Eindig op
p=reject. Pas dan kan niemand meer ongestraft jouw domein misbruiken.
Blijf niet hangen op stap 3. p=none beschermt niemand: het geeft je inzicht, maar een vervalste mail komt gewoon aan.
Vergeet je andere domeinen niet
Domeinen die nooit mailen, zoals een oude merknaam of een tikfout-domein dat je hebt vastgelegd, zijn favoriet bij phishers. Zet ze in één keer dicht:
example-oud.nl. TXT "v=spf1 -all"
_dmarc.example-oud.nl. TXT "v=DMARC1; p=reject;"
example-oud.nl. MX 0 .
Het laatste record is een null MX: het domein ontvangt ook geen mail.
Controleren of het werkt
- Stuur een mail naar een extern adres, bijvoorbeeld Gmail, en bekijk de headers (“Origineel bekijken”). Bij SPF, DKIM en DMARC moet
PASSstaan. - Tools als MXToolbox en internet.nl testen je domein in één keer en geven aan wat er ontbreekt.
- Google, Yahoo en Microsoft eisen inmiddels SPF, DKIM en DMARC van partijen die grote volumes mailen. Ook als je dat niet doet, is het de beste reden om het nu op orde te brengen: je mail komt beter aan en je domein is lastiger te misbruiken.