Běžíme v testovacím provozu, prosíme o shovívavost a zpětnou vazbu.
Co je DKIM a jak funguje

Co je DKIM a jak funguje

· 8 min čtení · Tomas Hojgr · dkim

Co je DKIM

DKIM (DomainKeys Identified Mail) je e-mailový autentizační protokol definovaný v RFC 6376. Umožňuje odesílateli digitálně podepsat e-mail kryptografickým klíčem svázaným s doménou. Příjemce podpis ověří pomocí veřejného klíče publikovaného v DNS — a tím potvrdí, že zpráva skutečně pochází z dané domény a nebyla cestou pozměněna.

Na rozdíl od SPF, které ověřuje pouze oprávněnost odesílajícího serveru, DKIM ověřuje integritu a původ samotné zprávy. DKIM podpis typicky přežívá přeposílání e-mailů (pokud zpráva není cestou pozměněna) — proto je nezbytný pro funkční DMARC nasazení.

Jak DKIM funguje

Celý proces probíhá automaticky a skládá se ze dvou částí: podepisování na straně odesílatele a ověřování na straně příjemce.

Podepisování

  1. Odesílající mailový server vypočítá hash (otisk) z těla zprávy a vybraných hlaviček (From, To, Subject, Date a dalších).
  2. Z hashe vytvoří digitální podpis pomocí privátního klíče domény.
  3. Podpis vloží do hlavičky DKIM-Signature odesílaného e-mailu.

Ověřování

  1. Přijímající server najde v hlavičce DKIM-Signature doménu (d=) a selektor (s=).
  2. Dotáže se DNS na TXT záznam {selektor}._domainkey.{doména} a získá veřejný klíč.
  3. Veřejným klíčem dešifruje podpis a porovná výsledek s vlastním výpočtem hashe zprávy.
  4. Pokud se hashe shodují, DKIM kontrola projde (pass) — zpráva je autentická a nebyla pozměněna.

Odesílatel pouze publikuje veřejný klíč v DNS a konfiguruje podepisování na mailovém serveru.

Anatomie DKIM podpisu

Hlavička DKIM-Signature obsahuje několik tagů, které řídí podepisování i ověřování:

DKIM-Signature: v=1; a=rsa-sha256; d=firma.cz; s=mail2024;
    c=relaxed/relaxed; q=dns/txt;
    h=from:to:subject:date:mime-version:content-type;
    bh=2jUSOH9NhtVGCQWNr9BrIAPreKQjO6Sn7XIkfJVOzv8=;
    b=AuUoFEfDxTDkHlLXSZEpZj79LICEps6eda7W3deTVFOk4yAUoqOB

Povinné tagy

Tag Význam Příklad
v= Verze DKIM (vždy 1) v=1
a= Algoritmus podpisu rsa-sha256
d= Podepisující doména firma.cz
s= Selektor — identifikátor klíče mail2024
h= Podepsané hlavičky from:to:subject:date
bh= Hash těla zprávy (Base64) 2jUSOH9N...
b= Samotný podpis (Base64) AuUoFEfD...

Volitelné tagy

Tag Význam Výchozí hodnota
c= Kanonizace (normalizace) hlaviček a těla simple/simple
q= Metoda dotazu na veřejný klíč dns/txt
t= Časová značka podpisu (Unix timestamp) žádná
x= Expirace podpisu (Unix timestamp) žádná
l= Délka podepsaného těla (v bajtech) — nedoporučuje se používat celé tělo
i= Identifikátor uživatele nebo agenta (AUID) @{hodnota d=}

Kanonizace

Tag c= určuje, jak se zpráva normalizuje před výpočtem hashe. Formát je hlavičky/tělo:

Režim Chování
simple Žádná normalizace — přesná shoda
relaxed Toleruje drobné změny (mezery, velikost písmen v hlavičkách)

Doporučené nastavení je relaxed/relaxed — toleruje běžné úpravy, které provádějí přeposílající servery.

DKIM záznam v DNS

Veřejný klíč se publikuje jako TXT záznam v DNS na adrese {selektor}._domainkey.{doména}:

mail2024._domainkey.firma.cz TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA..."

Tagy DKIM DNS záznamu

Tag Význam Povinný
v= Verze (vždy DKIM1) doporučený
k= Typ klíče (rsa, ed25519) ne (výchozí rsa)
p= Veřejný klíč (Base64) ano
t= Příznaky (y = testovací režim, s = strict alignment) ne
h= Podporované hashovací algoritmy ne (výchozí: vše povoleno)
s= Typ služby (email, *) ne (výchozí *)

Prázdná hodnota p= signalizuje odvolaný klíč — příjemce podpis s tímto selektorem odmítne.

Selektory a rotace klíčů

Selektor (s=) umožňuje mít pod jednou doménou více DKIM klíčů současně. To je klíčové pro:

  • Rotaci klíčů: Vytvoříte nový selektor (mail2025), nasadíte ho na server a po přechodném období smažete starý DNS záznam (mail2024).
  • Více odesílacích služeb: Každá služba (mailový server, marketingová platforma, helpdesk) může mít vlastní selektor a klíč.

Doporučená délka RSA klíče je minimálně 2048 bitů. RFC 8301 vyžaduje od odesílatelů minimálně 2048bitové RSA klíče. Klíče o délce 1024 bitů většina ověřovatelů stále přijímá, ale považují se za zastaralé.

Proč DKIM potřebujete

Ochrana integrity zpráv

DKIM je jediný ze tří autentizačních protokolů (SPF, DKIM, DMARC), který ověřuje, že obsah e-mailu nebyl cestou pozměněn. Pokud útočník nebo chybně nakonfigurovaný server změní tělo zprávy nebo podepsané hlavičky, DKIM kontrola selže.

Přežívá přeposílání

SPF kontrola selhává při přeposílání, protože přeposílající server není uveden v SPF záznamu původní domény. DKIM podpis zůstává platný, dokud se nezmění podepsané části zprávy. Proto je DKIM zásadní pro spolehlivou autentizaci v prostředí, kde se e-maily přeposílají.

Základ pro DMARC

DMARC vyžaduje, aby alespoň SPF nebo DKIM prošlo kontrolou a zároveň bylo v alignmentu s doménou v hlavičce From. Díky tomu, že DKIM přežívá přeposílání, je spolehlivějším základem pro DMARC než samotný SPF.

Požadavky velkých poskytovatelů

Od února 2024 Google a Yahoo vyžadují DKIM nebo SPF autentizaci pro všechny odesílatele. Hromadní odesílatelé (nad 5 000 zpráv denně na Gmail) musí mít SPF i DKIM současně plus DMARC záznam.

Jak DKIM nastavit

1. Vygenerujte klíčový pár

Většina e-mailových služeb (Google Workspace, Microsoft 365, marketingové platformy) generuje DKIM klíče automaticky — stačí je aktivovat v administraci a přidat DNS záznam.

Pokud provozujete vlastní mailový server, vygenerujte klíč nástrojem jako OpenSSL nebo OpenDKIM:

openssl genrsa -out dkim-private.pem 2048
openssl rsa -in dkim-private.pem -pubout -out dkim-public.pem

2. Publikujte veřejný klíč v DNS

Přidejte TXT záznam do DNS vaší domény. Název záznamu je {selektor}._domainkey.{doména}:

mail2024._domainkey.firma.cz TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA..."

Veřejný klíč vložte jako Base64 řetězec bez hlaviček PEM souboru.

3. Nakonfigurujte podepisování

Na mailovém serveru nastavte podepisování odchozích zpráv privátním klíčem. Konfigurace závisí na použitém softwaru (Postfix + OpenDKIM, Exim, Exchange).

4. Ověřte funkčnost

Po nasazení si ověřte, že DKIM podepisování funguje. Odešlete testovací e-mail a zkontrolujte hlavičky — hledejte DKIM-Signature v odchozí zprávě a Authentication-Results: dkim=pass v odpovědi.

Ověřte si svůj DKIM záznam naším analyzérem.

Časté problémy s DKIM

Příliš dlouhý klíč pro DNS

DNS TXT záznamy jsou omezeny na 255 znaků na řetězec (omezení protokolu z RFC 1035). Klíč o délce 2048 bitů tento limit překračuje. Řešení: rozdělte hodnotu na více řetězců v uvozovkách — DNS je automaticky spojí:

mail2024._domainkey.firma.cz TXT ("v=DKIM1; k=rsa; "
    "p=MIIBIjANBgkqhkiG9w0BAQE..."
    "...FAAOCAQ8AMIIBCgKCAQEA...")

DKIM fail po úpravě zprávy

Antispamové filtry, mailing listy nebo podpisové služby mohou modifikovat tělo zprávy. Pokud se změní podepsaná část, DKIM kontrola selže. Řešení:

  • Používejte kanonizaci relaxed/relaxed
  • U mailing listů pomáhá protokol ARC (Authenticated Received Chain)

Chybějící nebo nesprávný DNS záznam

Pokud DNS záznam se selektorem neexistuje nebo obsahuje syntaktickou chybu, ověření selže s výsledkem permerror nebo temperror. Vždy po přidání záznamu počkejte na propagaci DNS (obvykle do 1 hodiny, maximálně 48 hodin dle TTL) a ověřte záznam DNS nástrojem.

Expirace podpisu

Pokud používáte tag x= (expirace), podpis po uplynutí doby přestane být platný. U zpráv s dlouhým doručením (graylisting, fronty) to může způsobit selhání. Většina konfigurací tag x= nepoužívá.

DKIM v kontextu e-mailové autentizace

DKIM spolupracuje s dalšími protokoly v rámci kompletního zabezpečení e-mailu:

Protokol Co ověřuje Vztah k DKIM
SPF Oprávněnost odesílajícího serveru Komplementární — ověřuje server, ne obsah
DMARC Alignment + politika + reporting Využívá výsledek DKIM kontroly
ARC Řetězení autentizace při přeposílání Zachovává DKIM výsledky přes prostředníky
BIMI Vizuální ověření odesílatele Vyžaduje funkční DMARC (a tím i DKIM)

Kompletní ochrana vyžaduje SPF, DKIM i DMARC. Zkontrolujte zabezpečení vaší domény a zjistěte, zda máte všechny tři protokoly správně nakonfigurované.

Číst v jiném jazyce: English

Související články

Co je SPF záznam a proč ho potřebujete
spf

Co je SPF záznam a proč ho potřebujete

SPF záznam chrání vaši doménu před zneužitím k rozesílání podvodných e-mailů. Zjistěte, jak funguje, jak ho nastavit a proč je nezbytný pro…

· 6 min čtení
Co je DMARC a jak funguje

Co je DMARC a jak funguje

DMARC propojuje SPF a DKIM a přidává politiku pro neautentizované e-maily. Zjistěte, jak funguje, jak ho nasadit a proč ho vyžadují Google i Yahoo.

· 8 min čtení