Vad är DKIM?
DKIM (DomainKeys Identified Mail) är en e-postautentiseringsmetod som tillåter skickande server att digitalt signera utgående meddelanden. Den mottagande servern kan sedan verifiera denna signatur med hjälp av en offentlig nyckel publicerad i DNS, vilket bekräftar att e-posten inte modifierades under överföringen och faktiskt härrör från den påstådda domänen.
Hur DKIM fungerar
1. Nyckelgenerering: Domänägaren genererar ett offentligt/privat nyckelpar
2. DNS-publikation: Offentlig nyckel publiceras som en TXT-post
3. Meddelandesignering: Utgående e-post signeras med den privata nyckeln
4. Signaturverifiering: Mottagande server hämtar offentlig nyckel och verifierar signatur
Signeringsprocessen
När ett e-postmeddelande skickas:
1. E-postserver beräknar ett hash av meddelandehuvuden och brödtext
2. Hash krypteras med den privata nyckeln (skapar signaturen)
3. Signatur läggs till som ett DKIM-Signature-huvud
4. E-post överförs
Verifieringsprocessen
När ett e-postmeddelande tas emot:
1. Server extraherar DKIM-Signature-huvudet
2. Hittar väljare och domän (s=väljare; d=domain.com)
3. Frågor DNS för väljare._domainkey.domain.com TXT-post
4. Använder offentlig nyckel för att dekryptera signaturen
5. Beräknar sitt eget hash av meddelandet
6. Jämför: match = pass, mismatch = fail
DKIM-postformat
DKIM-poster är TXT-poster på en specifik underdomän:
väljare._domainkey.example.com. IN TXT "v=DKIM1; k=rsa; p=MIGfMA0..."
Postkomponenter
| Tag | Beskrivning | Exempel |
|---|---|---|
| v | Version | v=DKIM1 |
| k | Nyckeltyp | k=rsa |
| p | Offentlig nyckel (base64) | p=MIGfMA0GCSqG... |
| t | Flaggor (valfritt) | t=y (testningsläge) |
| h | Hashalgoritmer | h=sha256 |
Väljare
Väljare tillåter flera DKIM-nycklar per domän:
google._domainkey.example.com # Google Workspace
s1._domainkey.example.com # Sendgrid
mailchimp._domainkey.example.com # Mailchimp
Varje e-posttjänst tillhandahåller sin egen väljare och nyckel.
DKIM-signaturhuvud
En DKIM-signatur ser ut som:
DKIM-Signature: v=1; a=rsa-sha256; d=example.com; s=google;
c=relaxed/relaxed; q=dns/txt;
h=from:to:subject:date:message-id;
bh=2jUSOH9NhtVGCQWNr9BrIAPreKQjO6Sn7XIkfJVOzv8=;
b=AuUoFEfDxTDkHlLXSZEpZj79...
Viktig fält:
- d=: Signeringdomän
- s=: Väljare (använd för att hitta DNS-post)
- h=: Huvuden inkluderade i signatur
- b=: Den faktiska signaturen
- bh=: Brödtexthash
Ställa in DKIM
För Google Workspace
1. Gå till Admin Console → Apps → Gmail → Authenticate email
2. Generera DKIM-nyckel (2048-bit rekommenderas)
3. Lägg till TXT-post tillhandahållen av Google
4. Aktivera DKIM-signering
För tredjepartstjänster
De flesta e-posttjänster (SendGrid, Mailchimp, etc.) tillhandahåller:
1. En CNAME-post att lägga till (för deras hanterad nyckel)
2. Eller en TXT-post med den offentliga nyckeln
Exempel (SendGrid):
s1._domainkey.example.com CNAME s1.domainkey.sendgrid.net
Verifiera DKIM
Skicka ett test-e-postmeddelande till en tjänst som visar huvuden (Gmail visar autentiseringsresultat). Använd kommandoraden:dig google._domainkey.example.com TXT
Använd DomScan:
curl "https://domscan.net/v1/health?domain=example.com"
# Rapporterar DKIM status baserat på vanliga väljare
DKIM bästa praxis
Använd 2048-bitars nycklar
Äldre 1024-bitars nycklar är allt mer sårbara. De flesta leverantörer använder nu 2048-bit som standard.
Rotera nycklar regelbundet
Rotera DKIM-nycklar årligen eller efter säkerhetshändelser. Publicera ny nyckel med ny väljare innan du växlar.
Signera viktiga huvuden
Säkerställ att From, To, Subject, Date och Message-ID ingår i signaturer.
Ändra inte signerade meddelanden
E-postlistor eller vidarebefordringtjänster som ändrar innehål bryter DKIM. Använd ARC (Authenticated Received Chain) för vidarebefordrad e-post.
DKIM-begränsningar
DKIM ensamt förhindrar inte förfalskning – det bevisar bara att ett meddelande inte ändrades. En domän kan ha giltigt DKIM medan angripare skickar osignerad förfalskad e-post. DMARC löser detta genom att ange vad man ska göra med osignerade meddelanden.