In een digitaal tijdperk waar alles draait om veiligheid, is het vreemd dat we een e-mail eigenlijk blindelings vertrouwen als die binnenkomt. “Hey, een e-mail van Jan, leuk.” Ja, maar wie zegt dat die ook daadwerkelijk van Jan af komt? En dat er onderweg niet mee geknoeid is, zodat er eigenlijk iets heel anders staat dan wat er daadwerkelijk gestuurd is?

Enter: DKIM. Uitgesproken als ‘dee kim’ of ‘dee-ka-ie-em’, kort voor DomainKeys Identified Mail. In een notendop is de werking ervan eigenlijk heel simpel en, gelukkig, de installatie er van doorgaans ook.

Hoe werkt het?

Stel, Jan typt een e-mail. Deze e-mail bestaat uit verschillende onderdelen, zoals een afzender, een ontvanger, de inhoud, tijdstip van verzending en meer van dat soort karakteristieken. Samen vormen ze een uniek object wat door de digitale postduif wordt verstuurd. Dit versturen gaat via een mailserver, bijvoorbeeld smtp.ziggo.nl of mail.domeinnaam.nl.

Is DKIM geïnstalleerd op de uitgaande mailserver, dan gaat die server met het bericht aan de slag, voordat het naar de ontvanger wordt verstuurd. Voor iedere domeinnaam die op de server bestaat, is er een unieke en geheime private key aanwezig. Met deze sleutel wordt het volledige bericht, inclusief alle karakteristieken, omgetoverd tot een hash. Deze hash wordt meegestuurd met het bericht naar de ontvangende mailserver.

Als de ontvangende kant weet hoe het met DKIM om moet gaan, zal deze merken dat er wat extra’s aan de mail hangt: een gehashte versie van de ontvangen mail, inclusief alle eigenschappen daarvan. Om deze hash te ontcijferen, is er een andere sleutel nodig dan degene die voor het versleutelen werd gebruikt. Deze zogenaamde public key staat openbaar in het DNS van de verzendende domeinnaam opgeslagen als DKIM-record. Met deze publieke sleutel kan de hash vertaald worden naar ‘leesbare’ tekst, welke vervolgens wordt vergeleken met de normale variant van het bericht. Komt het overeen, dan is iedereen blij.

Twee kanttekeningen hierbij:

a. Komt het niet overeen, dan zal het bericht, al naargelang de instellingen van de ontvangende partij, gemarkeerd worden als spam, in een spamfolder geplaatst worden of zelfs gewoon compleet geweigerd worden. Daar heeft u als verzender verder geen invloed op.

b. Weet de ontvangende kant niet hoe DKIM werkt, dan is er geen nood. Het DKIM-gedeelte van de ontvangen e-mail zal dan volledig genegeerd worden.

Openbare sleutel?

Oké, die theorie klinkt logisch. Maar als de public key gewoon te grabbel ligt in het DNS en iedere willekeurige internetter die op kan vragen, is dat dan niet een beveiligingsrisico? Wat let een onderscheppende hacker om het bericht te ontcijferen met de publieke sleutel, aan te passen en weer ‘op slot te doen’ door een nieuwe hash te genereren?

Kijk, en daar komt het mooie van deze techniek naar voren. Het versleutelen zelf kan namelijk alleen met de private key, niet met de public key. Een hacker kan het bericht dus wel onderscheppen en van het slot afhalen en aanpassen, maar zal nooit in staat zijn om het geheel weer in te pakken met een nieuwe kloppende hash, simpelweg omdat daar de private key voor nodig is. En, als het goed is, staat die alleen maar op de verzendende server geïnstalleerd.

Installeren

Het installeren van DKIM is doorgaans niet zo heel moeilijk. Vooral wanneer er van een semi-standaard hosting oplossing gebruikt wordt gemaakt, zoals bijvoorbeeld ons succesnummer CentOS met DirectAdmin en Exim, is het een fluitje van een cent.

Voor de volledige en up-to-date installatieinstructies, kun je terecht bij ons kennisbank-artikel.

In gebruik nemen

Grote kans dat u geen gebruik maakt van de DNS-servers van DirectAdmin, maar van de DNS-functionaliteiten van Flexwebhosting. In dat geval moet u zelf nog handmatig de door DirectAdmin toegevoegde DKIM-sleutel overhevelen naar de DNS-zone in de centrale nameservers. Hiervoor logt u als admin-gebruiker in in DirectAdmin en zoekt u bij DNS Administration de domeinnaam op welke u nodig heeft.

DirectAdmin laat u dan de zonefile zien van die domeinnaam. Het DKIM-record springt er direct uit:

NameTypeValue
x._domainkeyTXT“v=DKIM1; k=rsa; p=MIIBIjA[…heel veel meer letters…]AQAB”

Deze gegevens neemt u ook zo over in de DNS-configuratie van uw domeinnaam in de actieve nameservers, bijvoorbeeld door het record in de klantenpagina toe te voegen.

Tip: Heeft u alle domeinnamen in een keer laten signen door DirectAdmin? Deze staan per domeinnaam opgeslagen in de zone-file van DirectAdmins nameservers. Met een scriptje kunt u ze er dan allemaal uitlepelen en laten verzamelen in één bestand, in plaats van ze allemaal per stuk langs te moeten. Vraag onze technische dienst voor meer informatie!

Conclusie

Het installeren en activeren van DKIM is in de meeste gevallen zo gepiept. Het effect is echter ongemerkt grandioos, want het is bijvoorbeeld een hele grote stap voorwaarts in het beschermen van de vanaf uw server verstuurde e-mails en daarmee een enorm pluspunt voor Microsofts inkomende spamfilters.

Het beste kunt u DKIM direct activeren bij de in gebruik name van een nieuwe server. Heeft u al een server draaien, dan kost het even wat extra werk om voor alle domeinnamen het DNS correct in te stellen. Maar uiteindelijk scheelt het u wel veel soebatten met Outlook.coms Deliverability Support Team over het deblokkeren van een geblacklist IP-adres.

Dit artikel is geplaatst op 06 april 2017. Het kost je ongeveer 6 minuten om het te lezen.