Modul 4 · 4.3
Slovenčina
DKIM v praxi: selektory, kľúče a služby
Modul 4: Doručiteľnosť: SPF, DKIM a DMARC v praxi · Čas čítania: 12 minút
Cieľ lekcie: Po tejto lekcii dokážete rozobrať hlavičku DKIM-Signature, pre každú odosielaciu službu nastaviť DKIM s vlastnou doménou, overiť, či selektor funguje, a vysvetliť, ako bezpečne vymeniť kľúče.
Kľúčové pojmy: DKIM-Signature, d= (podpisujúca doména), s= (selektor), h= (podpísané hlavičky), bh= a b=, kanonikalizácia (c=), <selector>._domainkey.<domein>, TXT s p= alebo CNAME na službu, dĺžka kľúča 2048 bitov (RFC 8301), úseky po 255 znakoch, ed25519 (RFC 8463), výmena kľúča, prázdne p= (zrušené), DKIM a presmerovanie
Prečo je DKIM najdôležitejší z trojice
SPF určuje, ktoré servery smú odosielať poštu, ale pri presmerovaní sa láme a sleduje Return-Path, ktorý pri mnohých službách nepatrí vám. DKIM vkladá podpis priamo do samotnej správy. Tento podpis prežije presmerovanie (pokiaľ sa správa nezmení) a je naviazaný na doménu, ktorú si sami zvolíte. Preto je v praxi DKIM často jediné, čo necháva DMARC uspieť pri newsletteroch, faktúrach z účtovného programu a presmerovanej pošte.
Základy (ako je kľúč uložený v DNS, čo je selektor) nájdete v kurze DNS, lekcia 4.4. Tu pôjdeme ďalej: čo presne obsahuje podpis a ako nastaviť DKIM pre jednotlivé služby?
Rozbor podpisu
Otvorte hlavičky správy, ktorú ste dostali (lekcia 1.5). Ak je správa podpísaná, na vrchu nájdete niečo ako:
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=example.com; s=x;
t=1762588800; h=from:to:subject:date:message-id:mime-version:content-type;
bh=2jUSOH9NhtVGCQWNr9BrIAPreKQjO6Sn7XIkfJVOzv8=;
b=Gm7yW3q...dlhý reťazec znakov...Qx9A==| Tag | Význam |
|---|---|
v=1 | Verzia DKIM |
a=rsa-sha256 | Algoritmus: kľúč RSA, SHA-256. Možné je aj ed25519-sha256 |
c=relaxed/relaxed | Kanonikalizácia: ako prísne sa posudzujú malé zmeny (medzery, veľké písmená v názvoch hlavičiek), pre hlavičky a pre text. relaxed je bežné a zhovievavejšie ako simple |
d=example.com | Takzvaná podpisujúca doména. Táto doména sa zaručuje za správu. DMARC ju porovnáva s adresou v poli Od |
s=x | Tzv. selektor: ktorý kľúč danej domény bol použitý |
t= | Čas podpísania (sekundy od roku 1970) |
h= | Ktoré hlavičky boli podpísané. from tam musí byť vždy |
bh= | Odtlačok (hash) textu správy |
b= | Samotný podpis |
Príjemca si vyžiada verejný kľúč na adrese <s>._domainkey.<d>, v tomto prípade teda x._domainkey.example.com, a overí, či b= zodpovedá hlavičkám z h= a odtlačku bh=. Ak sa počas prenosu zmení čo len jedno písmeno v texte alebo v podpísanej hlavičke, kontrola zlyhá.
Výsledok vidíte v Authentication-Results, napríklad dkim=pass header.d=example.com header.s=x. Správa môže mať viacero podpisov, napríklad jeden od vašej domény a jeden od samotnej služby. Pre DMARC sa počíta len podpis, ktorého d= zodpovedá vašej doméne v poli Od.
Každá služba má vlastný selektor
Jedna doména môže mať súčasne veľa DKIM kľúčov, každý pod vlastným selektorom. Presne to je zámer: každá služba, ktorá odosiela poštu vaším menom, podpisuje vlastným kľúčom.
| Odosielateľ | Selektor (príklad) | Ako je to v DNS |
|---|---|---|
| Hostingový mailový server | x alebo default | TXT s kľúčom, vytvorený cez panel |
| Microsoft 365 | selector1, selector2 | dva CNAME záznamy smerujúce na Microsoft |
| Google Workspace | google (predvolené) | TXT s kľúčom, ktorý si necháte vytvoriť v administračnej konzole |
| Newsletterová služba | napríklad k2, k3, mte1 | zvyčajne CNAME záznamy smerujúce na službu |
TXT alebo CNAME?
- Pri zázname TXT si verejný kľúč vložíte do DNS sami. Ak si služba vyžiada nový kľúč, musíte záznam upraviť vy.
- Pri zázname CNAME presmerujete selektor na názov u danej služby, napríklad
k2._domainkey.example.com CNAME dkim2.mailer.example.Kľúč potom spravuje služba sama a môže ho vymeniť bez toho, aby ste museli niečo robiť. Preto si veľké služby vyberajú CNAME a často používajú dva, aby mohli prepínať medzi aktívnym a novým kľúčom.
Pozor: CNAME nesmie byť na tom istom názve popri inom zázname. Ak už na selector1._domainkey existuje TXT, odstráňte ho.
Najdôležitejšie: zapnúť DKIM u danej služby
Pri mnohých službách nie je DKIM s vlastnou doménou predvolene zapnutý. Podpisujú potom vlastnou doménou (d=mailer.example). Správa je síce podpísaná, no nie je zarovnaná s vašou adresou v poli Od. Pre DMARC sa to nepočíta. V správe služby sa to zvyčajne volá "overenie domény", "doménová verifikácia", "autentifikácia" alebo "vlastná odosielacia doména". Až keď nastavíte záznamy a zároveň to zapnete v službe, bude podpisovať pomocou d=example.com.
Kľúče: dĺžka, úseky a algoritmus
- Dĺžka. RFC 8301 uvádza: aspoň 1024 bitov, pričom odosielatelia by mali používať aspoň 2048 bitov. Používajte 2048. Kľúč s dĺžkou 512 bitov príjemcovia považujú za neplatný.
- Úseky po 255 znakoch. Záznam TXT pozostáva z textových reťazcov s maximálnou dĺžkou 255 znakov. Kľúč dĺžky 2048 bitov má približne 400 znakov a nezmestí sa do jedného reťazca. Záznam potom pozostáva z dvoch alebo viacerých reťazcov za sebou (
"v=DKIM1; k=rsa; p=MIIBIj..." "...IDAQAB"), ktoré príjemca spojí dokopy. Väčšina panelov to robí automaticky. Ak sa to pokazí, dostanete orezaný kľúč a každý podpis zlyhá. Kľúč preto vždy kopírujte celý, bez pridaných medzier alebo úvodzoviek uprostred. - ed25519 (RFC 8463) je modernejší algoritmus s krátkymi kľúčmi. Zatiaľ ho neoverujú všetci príjemcovia. Kto ho používa, podpisuje preto dvoma podpismi: RSA a ed25519.
Výmena kľúča
Je dobré kľúč občas vymeniť, a určite vtedy, keď máte podozrenie, že súkromný kľúč unikol (napríklad po hacknutí servera alebo po odchode správcu). Postupujte takto:
- Vytvorte nový kľúč pod novým selektorom, napríklad
s2026, a vložte verejný kľúč do DNS. - Počkajte, kým je záznam viditeľný všade (TTL, pozri kurz DNS, lekcia 6.1).
- Nechajte server podpisovať novým selektorom.
- Starý kľúč nechajte ešte pár dní aktívny: správy, ktoré boli už na ceste alebo sa overujú opakovane, naň ešte odkazujú.
- Zrušte starý kľúč tak, že
p=ponecháte prázdne (v=DKIM1; p=), alebo záznam úplne odstráňte.
Pri službách s CNAME záznamami toto robí služba sama.
Čo spôsobuje zlyhanie DKIM
- Správa sa počas prenosu zmení: mailová konferencia, ktorá vkladá do predmetu
[lijstnaam]alebo pridáva pätičku, antivírusový skener, ktorý pripojí riadok pod správu, presmerovací server, ktorý upraví formátovanie. - Nesprávny alebo orezaný kľúč v DNS.
- Selektor neexistuje: preklep v názve, alebo
selector1._domainkey.example.com.example.com(doménové meno zdvojené, pretože ho panel sám pridal na koniec). - Kľúč bol zrušený (prázdne
p=), zatiaľ čo server stále podpisuje daným selektorom.
Overenie, či to funguje
- Odošlite správu zo služby na adresu u Gmail alebo Outlook.com.
- Otvorte hlavičky a vyhľadajte
DKIM-Signature: zaznamenajte sid=as=. - Pozrite sa do
Authentication-Results, či tam jedkim=passa čiheader.d=zodpovedá vašej doméne. - Vyhľadajte selektor:
dig TXT s._domainkey.example.com(alebo pomocou online nástroja). Musí sa tam nachádzaťp=s dlhým kľúčom, alebo CNAME, ktorý vedie na takýto záznam.
V praxi: ako to vyzerá v paneli
Pri hostingovom balíku WebOké je DKIM predvolene zapnutý, so selektorom x: záznam sa volá x._domainkey.<vašadoména>. V DirectAdmin ho nájdete v sekcii DNS správa; ak máte DNS u iného poskytovateľa, tento záznam tam skopírujte. V Môj WebOké karta Nastaviť e-mail zobrazuje, aká hodnota tam má byť a či sa nájde. Pri iných poskytovateľoch sa selektor volá inak (default, mail, dkim), no nájdete ho rovnakým spôsobom: v paneli alebo v položke s= podpísanej správy.
Zhrnutie
- DKIM je kontrola, ktorá prežije presmerovanie a ktorú pri každej službe naviažete na vlastnú doménu; pre DMARC sa počíta len podpis, ktorý má vašu doménu v
d=. - V
DKIM-Signaturenájdeted=(doména) as=(selektor); kľúč sa nachádza na<s>._domainkey.<d>. - Každá služba má vlastný selektor; CNAME záznamy umožňujú službe samej meniť kľúče. Nezabudnite DKIM s vlastnou doménou v službe skutočne aj zapnúť.
- Používajte 2048 bitov; pri kopírovaní dávajte pozor na orezané kľúče.
- Kľúč vymieňajte s novým selektorom a starý zrušte až potom.
Kvíz
Úloha
Úloha Z4.3: Kontrola DKIM selektora. Odošlite správu z vlastnej domény (alebo zo služby, ktorá odosiela poštu vaším menom) na vlastnú adresu u iného poskytovateľa. Otvorte hlavičky a vyplňte hodnoty d= a s= z hlavičky DKIM-Signature, ako aj to, čo je uvedené v Authentication-Results pri dkim=. Program vyhľadá selektor naživo, sleduje prípadný CNAME, overí kľúč (jeho prítomnosť, či nie je prázdny, jeho dĺžku) a oznámi, či je d= zarovnané s doménou, ktorú uvádzate ako odosielateľa.
Ďalšie čítanie
Postupy v týchto článkoch platia pre panely WebOké; u iných poskytovateľov to funguje obdobne.
- Bezplatný kurz DNS 4.4: DKIM: podpis pod vašou poštou
- Návod na DirectAdmin 5.8: Zapnutie a kontrola DKIM
- Nastavenie DKIM, keď DNS beží na externom serveri
- Príručka WebOké 6.7: Karta Nastaviť e-mail (MX, SPF, DKIM, DMARC)
- RFC 6376 (DKIM), RFC 8301 (dĺžka kľúča a algoritmy), RFC 8463 (ed25519)
