geen server-opslag

EN

Uitleg DKIM

Wat is DKIM?

DKIM (DomainKeys Identified Mail) werkt als een lakzegel op een brief. Je mailserver 'verzegelt' elke uitgaande mail met een geheime sleutel. De ontvanger heeft een bijpassende publieke sleutel nodig om te controleren of het zegel klopt. Die publieke sleutel zet jij in je DNS. Klopt het zegel, dan staat vast dat de mail van jouw domein komt én onderweg niet is opengebroken. Zonder DKIM leunt je DMARC alleen op SPF, en SPF sneuvelt zodra iemand je mail doorstuurt.

Hoe werkt het zegel?

Bij het verzenden berekent je mailserver een soort vingerafdruk over de inhoud en een paar belangrijke headers van de mail, en ondertekent die met een geheime privésleutel die alleen jij hebt. Dat resultaat komt als DKIM-Signature-header in de mail te staan, samen met twee aanwijzingen: de selector (s=, een soort sleutelnaam) en het ondertekenende domein (d=).

De ontvanger leest die aanwijzingen, haalt de bijbehorende publieke sleutel op uit jouw DNS (op <selector>._domainkey.<domein>) en controleert of de vingerafdruk klopt. Zo ja, dan is bewezen dat niemand de ondertekende delen heeft veranderd.

Wat staat er in DNS?

De DKIM-sleutel staat als TXT-record op <selector>._domainkey.<domein>. De belangrijkste onderdelen:

  • v=DKIM1: de versie
  • k=rsa: het sleuteltype (rsa of het modernere ed25519)
  • p=...: de publieke sleutel zelf, een lange reeks tekens
  • een lege p= betekent: deze sleutel is ingetrokken en telt niet meer

Meestal hoef je dit niet met de hand te maken: je mailprovider levert het kant-en-klaar aan, vaak als een CNAME die naar de provider verwijst zodat zij het beheer (en de rotatie) voor je doen.

Waarom je dit nodig hebt

DKIM bewijst twee dingen tegelijk: dat de mail écht door jouw domein is verzegeld, en dat de inhoud onderweg niet is aangepast. Een groot voordeel boven SPF: DKIM overleeft meestal forwarding (doorsturen). SPF kijkt naar het verzendende IP-adres, en dat verandert bij doorsturen. Het DKIM-zegel hangt aan het bericht zelf en blijft dus geldig.

Samen met SPF vormt DKIM de basis voor een geslaagde DMARC-controle: minstens één van de twee moet 'kloppen bij je zichtbare afzender'. Daarom wil je DKIM eigenlijk altijd aan hebben staan.

Sleutels en rotatie

Gebruik minstens een 2048-bits RSA-sleutel. 1024 bits is te kort: zo'n sleutel valt te kraken, en wie dat doet kan mail ondertekenen die voor ontvangers niet van de jouwe te onderscheiden is. Ed25519 is moderner en compacter, maar nog niet overal ondersteund. Je kunt eventueel beide naast elkaar publiceren.

Roteer (vervang) je sleutels af en toe, zodat een eventueel gelekte sleutel niet eeuwig bruikbaar blijft. Laat je provider DKIM beheren via een CNAME? Dan roteren zij meestal automatisch en hoef je zelf niets te doen.

Je selector vinden

Je kunt DKIM-selectors niet zomaar uit DNS opvragen. Je moet de naam kennen. Daarom vinden checkers je DKIM soms niet: ze proberen een lijstje bekende selectors, en staat de jouwe daar niet bij, dan lijkt het alsof er niets is.

Zo vind je 'm zelf:

  • Open een mail die jij hebt verstuurd en bekijk de ruwe headers
  • Zoek de DKIM-Signature-header en lees s= (de selector) en d= (je domein)
  • Controleer of <selector>._domainkey.<domein> een geldige p= teruggeeft

In de Mailheaders-tool van DNS Radar wordt de selector automatisch uit een geplakte header gehaald.

Veelgestelde vragen

Wat is een DKIM-selector?

Een naam die bepaalt waar de publieke sleutel staat (<selector>._domainkey.<domein>). Eén domein kan meerdere selectors hebben, bijvoorbeeld per provider of per sleutelrotatie.

Waarom vindt een checker mijn DKIM niet?

Omdat selectors niet opsombaar zijn. Een tool probeert bekende selectors. Staat de jouwe daar niet bij, plak dan een verzonden mailheader of voeg je selector handmatig toe.

Welke sleutellengte moet ik gebruiken?

Minimaal 2048-bits RSA. 1024 bits wordt als te zwak beschouwd. Ed25519 mag ook, mits je ontvangers het ondersteunen.

Hoe vaak moet ik mijn DKIM-sleutel roteren?

Een rotatie eens per half jaar tot jaar is gangbaar. Beheert je provider DKIM via een gedelegeerde CNAME, dan roteert die meestal automatisch en hoef je zelf niets te doen.

Wat betekent een lege p=?

Dat de sleutel is ingetrokken. Een record met p= zonder waarde vertelt ontvangers dat deze selector niet langer geldig is.

Controleer DKIM op je eigen domein