DKIM instellen binnen DNS

DKIM instellen binnen DNS

We moeten DKIM binnen DNS instellen omdat anders vervalste adressen en inhoud gemakkelijk kunnen worden gemaakt. Veel vervalste adressen zie ik terug in spam, phishing en andere e-mailfraude. Bijvoorbeeld, een fraudeur kan een bericht sturen dat beweert afkomstig te zijn van sender@example.com. Het doel is dan de ontvanger te overtuigen de e-mail te accepteren en te lezen. Het is echter moeilijk voor ontvangers om te bepalen of ze dit bericht kunnen vertrouwen. Systeembeheerders moeten ook omgaan met klachten over kwaadaardige e-mails. Die e-mails lijken te zijn verzonden vanaf hun systemen, maar dat niet zijn.

DKIM biedt de mogelijkheid om een bericht te ondertekenen en stelt de bijvoorbeeld de ondertekenaar (de auteursorganisatie) in staat te communiceren welke e-mail zij als legitiem beschouwt. Het voorkomt of onthult echter niet direct misbruik.

Bovendien biedt DKIM een proces voor het verifiëren van een ondertekend bericht. Verificatiemodules handelen meestal namens de ontvangende organisatie, mogelijk bij elke stap.

Dit alles is onafhankelijk van de Simple Mail Transfer Protocol (SMTP) routeringsaspecten, omdat het werkt op het RFC 5322-bericht – de header en body van de getransporteerde e-mail – en niet op de SMTP “envelop” gedefinieerd in RFC 5321. Daarom overleven DKIM-handtekeningen basisdoorgifte via meerdere berichtoverdrachtsagenten.

Technische details en werking DKIM instellen binnen DNS

Wanneer een ontvangende SMTP-server wil verifiëren, gebruikt hij de domeinnaam en de selector om een DNS-lookup uit te voeren. Bijvoorbeeld, de d-tag geeft het auteursdomein aan dat de server kan verifiëren, zoals example.net. De s-tag geeft de selector, bijvoorbeeld brisbane.

Een voorbeeld van een DKIM-signature vind je onderstaand.

DKIM-Signature: v=1; a=rsa-sha256; d=example.net; s=brisbane;
     c=relaxed/simple; q=dns/txt; i=foo@eng.example.net;
     t=1117574938; x=1118006938; l=200;
     h=from:to:subject:date:keywords:keywords;
     z=From:foo@eng.example.net|To:joe@example.com|
       Subject:demo=20run|Date:July=205,=202005=203:44:08=20PM=20-0700;
     bh=MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI=;
     b=dzdVyOfAKCdLXdJOc9G2q8LoXSlEniSbav+yuU4zGeeruD00lszZ
              VoG4ZHRNiYzR

Gebruikte tags voor DKIM-signature

v (vereist), versie

a (vereist), ondertekeningsalgoritme

d (vereist), Signing Domain Identifier (SDID)

s (vereist), selector

c (optioneel), canonicalisatie-algoritme(s) voor header en body

q (optioneel), standaard querymethode

i (optioneel), Agent of User Identifier (AUID)

t (aanbevolen), ondertekeningstijdstempel

x (aanbevolen), vervaltijd

l (optioneel), lichaamslengte

h (vereist), headervelden – lijst van die welke zijn ondertekend

z (optioneel), headervelden – kopie van geselecteerde headervelden en waarden

bh (vereist), body hash

b (vereist), ondertekening van headers en body

De string _domainkey is een vast onderdeel van de specificatie. Dit betekent dat het TXT-resource record moet worden opgezocht als brisbane._domainkey.example.net. Het is belangrijk op te merken dat de selector en de domeinnaam UTF-8 kunnen zijn in geïnternationaliseerde e-mail. In dat geval moet het systeem de label coderen volgens IDNA voordat het wordt opgezocht. De gegevens die het systeem retourneert uit de query van dit record zijn ook een lijst van tag-value paren. Deze lijst bevat de openbare sleutel van het domein, samen met andere sleutelgebruik tokens en vlaggen. Bijvoorbeeld, vanaf een commandoregel: nslookup -q=TXT brisbane._domainkey.example.net.

"k=rsa; t=s; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDDmzRmJRQxLEuyYiyMg4suA2Sy
MwR5MGHpP9diNT1hRiwUd/mZp1ro7kIDTKS8ttkI6z6eTRW9e9dDOxzSxNuXmume60Cjbu08gOyhPG3
GfWdg7QkdN6kR4V75MFlw624VY35DaXBvnlTJTgRg/EW72O1DiYVThkyCgpSYS8nmEQIDAQAB"

Beschikbare tags zijn onder andere

  • v (aanbevolen), versie (standaard DKIM1, moet de eerste tag zijn indien aanwezig)
  • h (optioneel), acceptabele hash-algoritmen (standaard allemaal)
  • k (optioneel), sleuteltype (standaard rsa)
  • n (optioneel), leesbare opmerkingen van de beheerder
  • p (vereist), openbare sleutelgegevens (base64 gecodeerd, of leeg als de openbare sleutel is ingetrokken)
  • s (optioneel), servicetype (standaard *, anders e-mail)
  • t (optioneel), toggle flags (lijst gescheiden door dubbele punten, standaard geen, kan y bevatten voor het testen van DKIM zonder mislukte handtekeningverificaties af te wijzen, en/of s wat wordt aanbevolen voor subdomein striktheid zoals uitgelegd in de RFC)

Een CNAME-record kan ook worden gebruikt om naar een ander TXT-record te verwijzen, bijvoorbeeld wanneer een organisatie e-mail verzendt namens een andere.

Op deze manier zorgt DKIM ervoor dat de e-mailverificatie nauwkeurig en betrouwbaar is, door gebruik te maken van specifieke tags en methoden om de integriteit van het bericht te waarborgen.

Stappen voor het instellen van DKIM binnen DNS

Voorbereiding

  1. Controleer je e-mailserver: Zorg ervoor dat je e-mailserver DKIM ondersteunt. De meeste moderne e-mailservers, zoals Postfix en Exim, hebben ingebouwde ondersteuning voor DKIM.
  2. Genereer een DKIM-sleutel: Gebruik een tool zoals openssl om een publieke en private sleutel te genereren. De publieke sleutel wordt toegevoegd aan je DNS-records, terwijl de private sleutel wordt gebruikt door je e-mailserver om e-mails te ondertekenen.

DNS-records configureren

  1. Maak een TXT-record: Voeg een TXT-record toe aan je DNS-zone voor je domein. Dit record bevat de publieke sleutel die je hebt gegenereerd.
  1. Publiceer het record: Zorg ervoor dat het TXT-record correct is gepubliceerd en toegankelijk is voor e-mailontvangers.

E-mailserver configureren

  1. Installeer DKIM-software: Installeer een DKIM-milter (mail filter) zoals opendkim op je e-mailserver.
  2. Configureer de DKIM-milter: Voeg de configuratie toe aan je e-mailserver om DKIM-handtekeningen toe te voegen aan uitgaande e-mails.

Test de configuratie

  1. Verstuur een test-e-mail en controleer of de DKIM-handtekening correct is toegevoegd.

DKIM instellen voor Office 365

Voorbereiding

  1. Log in op het Microsoft 365-beheercentrum: Ga naar admin.microsoft.com en log in met je beheerdersaccount.
  2. Ga naar de Exchange-beheerder: Navigeer naar Admin centers > Exchange.

DKIM-sleutels genereren

  1. Open de DKIM-pagina: Ga naar Mail flow > DKIM.
  2. Selecteer je domein: Kies het domein waarvoor je DKIM wilt inschakelen.
  3. Genereer de DKIM-sleutels: Klik op Enable om de DKIM-sleutels te genereren.

DNS-records toevoegen

  1. Log in bij je DNS-hostingprovider: Dit kan bijvoorbeeld Cloudflare, GoDaddy of een andere provider zijn.
  2. Voeg CNAME-records toe: Voeg de volgende CNAME-records toe aan je DNS-instellingen:
    • Naamselector1._domainkey Waardeselector1-<domein>._domainkey.<domein>.onmicrosoft.com
    • Naamselector2._domainkey Waardeselector2-<domein>._domainkey.<domein>.onmicrosoft.com
  3. Publiceer de records: Zorg ervoor dat de DNS-records correct zijn gepubliceerd.

DKIM inschakelen

Schakel DKIM in: Klik op Enable voor het domein waarvoor je de CNAME-records hebt toegevoegd.

Ga terug naar de DKIM-pagina: In het Exchange-beheercentrum.

Nu de praktijk

Op bijvoorbeeld internet vind ik heel veel postings van mensen die inmiddels redelijk gefrustreerd zijn geraakt. Microsoft support lost het in hun ogen ook niet op. Wat zijn zoal de dingen waar deze mensen (en ik zelf) tegenaan (zijn ge)lopen.

Meer informatie over Microsoft Exchange Server vind je hier. Meer informatie over de auteur van deze blog post vind je hier.

0 Shares:
Geef een reactie

Je e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

You May Also Like