Zie je dkim=fail, dkim=none of ‘body hash did not verify’? Lees hoe DKIM werkt, hoe je selector en sleutel controleert en waarom doorsturen DKIM breekt.
DKIM (DomainKeys Identified Mail) zet een digitale handtekening op elke uitgaande mail. De verzendende server ondertekent bepaalde kopregels en de inhoud met een geheime sleutel. De bijbehorende publieke sleutel staat in de DNS van je domein, in een TXT-record op selector._domainkey.voorbeeld.nl. De selector is een naam die de verzender kiest, zodat je meerdere sleutels kunt hebben, bijvoorbeeld één voor je mailprovider en één voor je nieuwsbriefdienst. Welke selector gebruikt is, staat in de kopregel DKIM-Signature achter s=; het domein achter d=.
Bij dkim=none is de mail niet ondertekend: DKIM staat bij die verzender niet aan. Bij dkim=fail of dkim=permerror is er wel een handtekening, maar klopt die niet of kan de ontvanger de sleutel niet vinden of lezen. Oorzaken: het DNS-record ontbreekt, staat op de verkeerde naam, is afgekapt bij het plakken, of hoort bij een oude sleutel die de verzender niet meer gebruikt.
Een aparte oorzaak is dat de mail ná het ondertekenen is veranderd. ‘Body hash did not verify’ betekent dat de inhoud anders is dan bij het ondertekenen. Dat gebeurt als een doorstuurregel, mailinglijst, virusscanner of een server een disclaimer of voettekst toevoegt, of de opmaak van het bericht aanpast.
dkim=fail, dkim=none of dkim=permerror.Menunamen kunnen per versie of toestel iets anders heten. Loop de stappen op volgorde af en stop zodra het werkt.
Open een mail die faalt en zoek de regel DKIM-Signature. Achter d= staat het domein, achter s= de selector. Kijk ook in Authentication-Results wat de ontvanger concludeerde, en of er meerdere handtekeningen zijn; vaak ondertekent een dienst met zijn eigen domein én met dat van jou.
DKIM-Signature: v=1; a=rsa-sha256; d=voorbeeld.nl; s=selector1; ...
Authentication-Results: ...; dkim=fail (body hash did not verify) header.d=voorbeeld.nlVraag het TXT-record op voor de selector die je vond. Je hoort een record te krijgen dat begint met v=DKIM1 en een lange waarde achter p= bevat: de publieke sleutel. Bij sommige diensten, zoals Microsoft 365, is het een CNAME naar een record van die dienst; dig volgt die vanzelf. Krijg je niets terug, dan staat het record niet (of op een andere naam) in je DNS.
dig selector1._domainkey.voorbeeld.nl TXT +short
# Windows
nslookup -type=txt selector1._domainkey.voorbeeld.nlEen DKIM-sleutel is langer dan de 255 tekens die één tekststuk in een TXT-record mag hebben. Daarom wordt hij opgeknipt in meerdere stukken tussen aanhalingstekens, die bij het lezen aan elkaar worden geplakt. Ging er bij het plakken iets mis, zoals een afgekapt einde, een extra spatie of aanhalingsteken midden in de sleutel, of een regelafbreking, dan klopt de sleutel niet. Vergelijk het einde van de waarde achter p= met wat je verzender opgeeft. Een lege p= betekent dat de sleutel is ingetrokken.
; zo ziet een opgeknipte sleutel eruit (ingekort)
selector1._domainkey IN TXT ( "v=DKIM1; k=rsa; "
"p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA..."
"...IDAQAB" )Bij dkim=none ondertekent de verzender niet. Zet DKIM aan in het beheer van je mailprovider en van elke andere dienst die met je domein mailt, zoals nieuwsbrief- en factuurdiensten. Die geven dan een record (TXT of CNAME) dat je in je DNS zet; vaak moet je daarna in hun beheer nog op ‘activeren’ of ‘verifiëren’ klikken. Zonder eigen DKIM ondertekent een dienst soms met zijn eigen domein, wat voor DMARC niet telt als jouw domein.
Ben je van mailprovider gewisseld of heeft je provider een nieuwe sleutel aangemaakt, dan moet het DNS-record de nieuwe sleutel bevatten. Een oud record met een andere sleutel op dezelfde selector geeft dkim=fail. Na een nameserverwissel ontbreekt het DKIM-record vaak helemaal: zie nameservers wijzigen.
Faalt DKIM alleen bij doorgestuurde mail of via een mailinglijst, dan is het bericht na het ondertekenen aangepast. Kijk of je eigen mailserver of een filter achteraf een disclaimer, handtekening of ‘extern’-label toevoegt; laat dat dan vóór het ondertekenen gebeuren, of zet het uit. Bij doorsturen door de ontvanger zelf kun je weinig doen; DMARC kijkt daarom naar SPF óf DKIM, en voor doorgestuurde mail is er een aparte techniek (ARC) bij de ontvangende kant.
Stuur na de wijziging een mail naar een externe mailbox en bekijk de kopregels. Je wilt dkim=pass zien met header.d=voorbeeld.nl. Houd rekening met de TTL van het DNS-record. Controleer daarna met de Mail-DNS-check of SPF en DMARC ook goed staan.
Let op: Verwijder een oude DKIM-sleutel pas als je zeker weet dat geen enkele dienst er nog mee ondertekent. Mail die onderweg is of in een wachtrij staat, kan nog met de oude sleutel ondertekend zijn.
Kom je er met deze stappen niet uit, of wil je het liever niet zelf doen? We kijken online mee of komen langs. Hulp op afstand kost €20 per uur; komen we langs, dan is de prijs op aanvraag. Je weet vooraf waar je aan toe bent.
Schrijf kort wat er misgaat en wat je al hebt geprobeerd. Kies of we bellen, online meekijken of langskomen.
Een naam die de verzender kiest om aan te geven welke sleutel hij gebruikte. Het DNS-record staat dan op selector._domainkey.voorbeeld.nl; de selector zie je in de kopregel achter s=.
De inhoud van de mail is na het ondertekenen veranderd, bijvoorbeeld door een toegevoegde voettekst of disclaimer, of door doorsturen via een mailinglijst.
Bij none is de mail niet ondertekend. Bij fail is er wel een handtekening, maar klopt die niet met de sleutel in de DNS of met de inhoud.
Ja. SPF breekt bij doorsturen, DKIM vaak niet. En voor DMARC en de eisen van grote mailboxdiensten is een goede DKIM-handtekening met je eigen domein belangrijk.
Hulp nodig van een mens? Gratis Mail-DNS-check · Zakelijke e-mail in jouw plaats · Microsoft 365-hulp · Alle oplossingen