Module 4 · 4.4
DKIM: de handtekening onder je mail
Bekijk het in een korte film
Module 4: Records voor e-mail · Leestijd: 8 minuten
Leerdoel: Na deze les kun je uitleggen hoe DKIM werkt, een DKIM-record vinden en controleren, en een DKIM-record van een externe dienst (als TXT of als CNAME) correct plaatsen.
Kernbegrippen: DKIM, digitale handtekening, privésleutel en publieke sleutel, selector, _domainkey, d= en s=, v=DKIM1; k=rsa; p=, DKIM via CNAME, sleutelrotatie
Een zegel op elke mail
SPF (les 4.3) kijkt van welke server een mail komt. DKIM (DomainKeys Identified Mail, RFC 6376) werkt anders: het zet een digitale handtekening op de mail zelf.
Zo werkt het:
- De verzendende mailserver heeft een geheime privésleutel. Daarmee maakt hij voor elke mail een handtekening over de belangrijkste delen: de afzender, het onderwerp, de datum en de inhoud.
- Die handtekening gaat mee in een kopregel van de mail:
DKIM-Signature. - De bijbehorende publieke sleutel staat in de DNS van het domein, in een TXT-record.
- De ontvanger haalt die publieke sleutel op en controleert de handtekening. Klopt die, dan weet hij twee dingen: de mail is echt ondertekend door iemand die de DNS van dat domein beheert, en de mail is onderweg niet veranderd.
Het mooie: DKIM blijft werken als een mail wordt doorgestuurd, zolang de inhoud niet wordt aangepast. Daar heeft SPF moeite mee.
Waar staat de sleutel? De selector
Een domein kan meerdere DKIM-sleutels hebben: één van je eigen mailserver, één van Microsoft 365, één van je nieuwsbriefdienst. Om ze uit elkaar te houden heeft elke sleutel een naam, de selector.
In de handtekening staan twee belangrijke velden:
DKIM-Signature: v=1; a=rsa-sha256; d=example.com; s=mail2026; ...d=example.com: het domein dat tekent.s=mail2026: de selector.
De ontvanger zoekt de sleutel dan op deze naam op:
<selector>._domainkey.<domein>
mail2026._domainkey.example.comHet deel _domainkey is vast. Het record ziet er bijvoorbeeld zo uit:
mail2026._domainkey.example.com. 3600 IN TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOC..."| Onderdeel | Betekenis |
|---|---|
v=DKIM1 | Dit is een DKIM-sleutel. |
k=rsa | Het soort sleutel. RSA is gebruikelijk; ed25519 bestaat ook (RFC 8463). |
p=... | De publieke sleutel zelf, een lange reeks letters en cijfers. Is p= leeg, dan is de sleutel ingetrokken. |
Een RSA-sleutel van 2048 bits is de gangbare keuze; 1024 bits is het minimum (RFC 8301). Zo'n sleutel is langer dan 255 tekens, dus het record bestaat uit meerdere tekststukken (les 4.2). De meeste panelen regelen dat zelf.
Je eigen DKIM, en die van diensten
Je hostingpakket of mailserver. Op veel servers staat DKIM standaard aan en zet het paneel het record zelf in de DNS. Je ziet dan een TXT-record met een naam als x._domainkey of default._domainkey.
Staat de DNS van je domein bij een andere partij (bijvoorbeeld Cloudflare of je registrar), dan kan je mailserver het record daar niet zelf zetten. Dan kopieer je de naam en de volledige waarde uit je hostingpaneel en maak je bij je DNS-partij een TXT-record met precies die naam en waarde. Dat vergeten mensen vaak bij het wisselen van nameservers: de mail gaat dan opeens vaker naar de spam.
Externe diensten. Microsoft 365, Google Workspace en nieuwsbriefdiensten tekenen met hun eigen sleutel. Je krijgt van hen één of meer records:
- Als TXT, bijvoorbeeld Google Workspace: naam
google._domainkey, waardev=DKIM1; k=rsa; p=.... - Als CNAME, bijvoorbeeld Microsoft 365 (
selector1._domainkeyenselector2._domainkey) of Mailchimp (k2._domainkeyenk3._domainkey). Een CNAME wijst naar een sleutel die de dienst zelf beheert. Voordeel: de dienst kan zijn sleutel vervangen zonder dat jij iets hoeft te doen.
Al die records hebben een eigen selector en zitten elkaar dus niet in de weg. Haal het DKIM-record van je eigen mailserver niet weg als je een dienst toevoegt.
Waarom twee selectors?
Diensten als Microsoft 365 vragen om twee CNAME-records, selector1 en selector2. Ze tekenen met één sleutel tegelijk en wisselen op gezette tijden naar de andere (sleutelrotatie). Zet je alleen selector1, dan werkt het tot de eerste wissel, en daarna faalt DKIM in één klap. Zet dus altijd alle records die de dienst opgeeft.
Veelgemaakte fouten
- Dubbele domeinnaam. Je typt
k2._domainkey.example.comin een paneel dat de domeinnaam er zelf achter zet. Resultaat:k2._domainkey.example.com.example.com. Typ alleenk2._domainkey. - TXT in plaats van CNAME (of andersom). Neem precies het type over dat de dienst opgeeft.
- Geen punt aan het eind van een CNAME-doel. In panelen die dat vragen:
dkim2.mcsv.net.met punt. - Sleutel afgekapt. Bij het kopiëren mist het laatste stuk van
p=. Vergelijk het begin en eind met het origineel. - DKIM aangezet in het paneel van de dienst, maar records niet gezet, of andersom. Bij de meeste diensten moet je eerst de records zetten en daarna in hun beheerscherm DKIM inschakelen.
Controleren of DKIM werkt
Stuur een mail naar een adres bij een grote provider (bijvoorbeeld Gmail) en bekijk het origineel (Origineel weergeven of Bron weergeven). Zoek naar dkim=pass en kijk welk domein erbij staat. Of stuur een mail naar een testdienst zoals mail-tester.com. Je kunt het record ook zelf opvragen met een DNS-tool: vraag het TXT-record op van <selector>._domainkey.<domein>.
In de praktijk: zo ziet het eruit in een paneel
In dit voorbeeld gebruiken we DirectAdmin. In DNS Beheer staat een TXT-record met de naam x._domainkey; de waarde begint met v=DKIM1; k=rsa; p=. Onder E-mail Beheer, E-mail Accounts staat een knop om DKIM aan of uit te zetten. Een CNAME van een dienst maak je via Record toevoegen, type CNAME, naam k2._domainkey, waarde met een punt aan het eind.
In andere panelen staat DKIM soms onder "E-mailauthenticatie" of "E-mailbeveiliging", maar het record in de DNS is overal hetzelfde.
Samenvatting
- DKIM zet een digitale handtekening op elke mail; de publieke sleutel staat in de DNS.
- De sleutel staat op
<selector>._domainkey.<domein>. De selector staat in de handtekening (s=), het domein ook (d=). - Elke dienst heeft een eigen selector; records van verschillende diensten staan naast elkaar.
- Diensten gebruiken vaak CNAME-records en meerdere selectors. Zet ze allemaal, met precies het opgegeven type.
- Staat je DNS bij een andere partij, dan moet je de DKIM-sleutel van je eigen mailserver daar zelf zetten.
Quiz
Opdracht
Opzoeken (Z4.4): Open een mail die je van een bedrijf of organisatie hebt ontvangen en bekijk het origineel. Zoek in de kopregel DKIM-Signature het domein (d=) en de selector (s=). Vul beide in. De controle zoekt de bijbehorende sleutel op.
Zelf instellen (O4.4): In de oefenzone gebruik je een nepdienst; bij je echte domein neem je de echte sleutel of CNAME over van je mailserver of dienst. Je krijgt bij de opdracht een oefensleutel (de waarde na p=). Die sleutel is lang: plak hem in zijn geheel, zonder iets weg te laten. Maak in je oefenzone :<code>.dnspractice.eu
- een TXT-record op
cursus._domainkeymet de waardev=DKIM1; k=rsa; p=<oefensleutel>; - een CNAME-record op
k2._domainkeydat naardkim.newsletter-demo.dnspractice.eu.wijst (met de punt aan het eind als je paneel daarom vraagt).4 en O4.4.
Verder lezen
De stappen in deze artikelen gelden voor de panelen van WebOké; in andere panelen werkt het vergelijkbaar.
- DirectAdmin handleiding 5.8: DKIM aanzetten en controleren
- DKIM instellen als de DNS bij een andere partij staat
- DirectAdmin handleiding 5.4: CNAME-records en de punt aan het eind
- WebOké handleiding 6.7: De kaart E-mail instellen (MX, SPF, DKIM, DMARC)
- RFC 6376 (DKIM), RFC 8301 (sleutellengte), RFC 8463 (Ed25519)
