Modul 4 · 4.3
DKIM v praksi: selektorji, ključi in storitve
Modul 4: Dostavljivost: SPF, DKIM in DMARC v praksi · Čas branja: 12 minut
Cilj učenja: Po tej lekciji boste znali razčleniti glavo DKIM-Signature, za vsako storitev za pošiljanje nastaviti DKIM z lastno domeno, preveriti, ali selektor deluje, in pojasniti, kako varno zamenjate ključe.
Ključni pojmi: DKIM-Signature, d= (domena podpisnika), s= (selektor), h= (podpisane glave), bh= in b=, kanonikalizacija (c=), <selector>._domainkey.<domein>, TXT z p= ali CNAME proti storitvi, dolžina ključa 2048 bitov (RFC 8301), kosi po 255 znakov, ed25519 (RFC 8463), zamenjava ključa, prazen p= (preklican), DKIM in preusmeritev
Zakaj je DKIM najpomembnejši od vseh treh
SPF pove, kateri strežniki smejo pošiljati pošto, vendar se poruši pri preusmeritvi in preverja Return-Path, ki pri mnogih storitvah ni Vaš. DKIM v samo sporočilo postavi podpis. Ta podpis preživi preusmeritev (dokler se sporočilo ne spremeni) in je vezan na domeno, ki jo izberete sami. Zato je DKIM v praksi pogosto edino, zaradi česar DMARC uspe pri novičnikih, računih iz knjigovodskega programa in preusmerjeni pošti.
Osnove (kako je ključ zapisan v DNS, kaj je selektor) so opisane v tečaju DNS, lekcija 4.4. Tukaj gremo dlje: kaj natančno piše v podpisu in kako uredite DKIM za vsako storitev?
Razčlenitev podpisa
Odprite glave sporočila, ki ste ga prejeli (lekcija 1.5). Na vrhu, če je sporočilo podpisano, piše nekaj takega kot:
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...dolg niz znakov...Qx9A==| Oznaka | Pomen |
|---|---|
v=1 | Različica DKIM |
a=rsa-sha256 | Algoritem: ključ RSA, SHA-256. Možno je tudi: ed25519-sha256 |
c=relaxed/relaxed | Kanonikalizacija: kako strogo se obravnavajo manjše spremembe (presledki, velike začetnice v imenih glav), za glave in za besedilo. relaxed je običajna in bolj prizanesljiva kot simple |
d=example.com | Domena podpisnika. Ta domena jamči za sporočilo. DMARC to primerja z naslovom Od |
s=x | Selektor: kateri ključ te domene je bil uporabljen |
t= | Čas podpisa (sekunde od leta 1970) |
h= | Katere glave so podpisane. from mora biti vedno vključen |
bh= | Prstni odtis (hash) besedila sporočila |
b= | Sam podpis |
Prejemnik pridobi javni ključ na naslovu <s>._domainkey.<d>, v tem primeru x._domainkey.example.com, in preveri, ali b= ustreza glavam iz h= in prstnemu odtisu bh=. Če je bila med potjo spremenjena en sam znak v besedilu ali v podpisani glavi, preverjanje ne uspe.
V Authentication-Results vidite izid, na primer dkim=pass header.d=example.com header.s=x. Sporočilo ima lahko več podpisov, na primer enega iz Vaše domene in enega iz same storitve. Za DMARC šteje samo podpis, pri katerem d= ustreza Vaši domeni v polju Od.
Vsaka storitev svoj selektor
Domena ima lahko hkrati veliko ključev DKIM, vsak pod svojim selektorjem. To je tudi namen: vsaka storitev, ki pošilja pošto v Vašem imenu, podpisuje z lastnim ključem.
| Pošiljatelj | Selektor (primer) | Kako je zapisano v DNS |
|---|---|---|
| Strežnik za hosting pošte | x ali default | TXT s ključem, ki ga ustvari nadzorna plošča |
| Microsoft 365 | selector1, selector2 | dva zapisa CNAME proti Microsoftu |
| Google Workspace | google (privzeto) | TXT s ključem, ki ga ustvarite v upravljavski konzoli |
| Storitev za novičnike | na primer k2, k3, mte1 | večinoma zapisi CNAME proti storitvi |
TXT ali CNAME?
- Pri zapisu TXT javni ključ sami vnesete v svoj DNS. Če storitev želi nov ključ, morate zapis spremeniti sami.
- Pri zapisu CNAME selektor preusmerite na ime pri storitvi, na primer
k2._domainkey.example.com CNAME dkim2.mailer.example.Storitev nato sama upravlja ključ in ga lahko zamenja, ne da bi Vi morali kar koli storiti. Zato velike storitve izbirajo CNAME in pogosto uporabljajo dva: tako lahko preklapljajo med aktivnim in novim ključem.
Pozor: CNAME ne sme obstajati poleg drugega zapisa na istem imenu. Če na selector1._domainkey že obstaja zapis TXT, ga odstranite.
Najpomembnejše: vklop DKIM pri storitvi
Pri mnogih storitvah DKIM z lastno domeno ni privzeto vklopljen. Takrat podpisujejo z lastno domeno (d=mailer.example). Sporočilo je sicer podpisano, vendar ni usklajeno (aligned) z Vašim naslovom Od. Za DMARC to ne šteje. V upravljanju storitve se to pogosto imenuje "preverjanje domene", "domain verification", "avtentikacija" ali "lastna pošiljateljska domena". Šele ko nastavite zapise in to vklopite tudi v storitvi, bo ta podpisovala z d=example.com.
Ključi: dolžina, kosi in algoritem
- Dolžina. RFC 8301 določa: najmanj 1024 bitov, pošiljatelji pa naj uporabljajo vsaj 2048 bitov. Uporabite 2048. Ključ dolžine 512 bitov prejemniki obravnavajo kot neveljaven.
- Kosi po 255 znakov. Zapis TXT sestavljajo nizi znakov dolžine največ 255 znakov. Ključ dolžine 2048 bitov obsega približno 400 znakov in ne spada v en sam niz. Zapis potem sestavlja dva ali več zaporednih nizov (
"v=DKIM1; k=rsa; p=MIIBIj..." "...IDAQAB"), ki jih prejemnik sestavi skupaj. Večina nadzornih plošč to naredi samodejno. Če gre kaj narobe, dobite okrnjen ključ in vsak podpis ne uspe. Ključ torej vedno kopirajte v celoti, brez dodatnih presledkov ali narekovajev na sredini. - ed25519 (RFC 8463) je sodobnejši algoritem s kratkimi ključi. Še niso ga preverili vsi prejemniki. Kdor ga uporablja, zato podpisuje z dvema podpisoma: enim RSA in enim ed25519.
Zamenjava ključa
Dobro je, da ključ občasno zamenjate, zagotovo pa, če sumite, da je zasebni ključ uhajal (na primer po vdoru v strežnik ali po odhodu administratorja). Postopajte tako:
- Ustvarite nov ključ pod novim selektorjem, na primer
s2026, in javni ključ zapišite v DNS. - Počakajte, da je zapis viden povsod (TTL, glejte tečaj DNS, lekcija 6.1).
- Naj strežnik podpisuje z novim selektorjem.
- Stari ključ pustite stati še nekaj dni: sporočila, ki so bila že na poti ali se znova preverjajo, se še vedno sklicujejo nanj.
- Prekličite stari ključ tako, da izpraznite
p=(v=DKIM1; p=), ali pa odstranite zapis.
Pri storitvah z zapisi CNAME to stori storitev sama.
Kaj povzroči neuspeh DKIM
- Sporočilo se med potjo spremeni: dopisni seznam, ki v zadevo doda
[ime seznama]ali doda nogo, protivirusni pregledovalnik, ki pod sporočilo doda vrstico, preusmeritveni strežnik, ki spremeni obliko. - Napačen ali okrnjen ključ v DNS.
- Selektor ne obstaja: tipkarska napaka v imenu, ali
selector1._domainkey.example.com.example.com(ime domene podvojeno, ker ga nadzorna plošča sama doda zraven). - Ključ preklican (prazen
p=), medtem ko strežnik še vedno podpisuje s tem selektorjem.
Preverjanje delovanja
- Pošljite sporočilo iz storitve na naslov pri Gmail ali Outlook.com.
- Odprite glave in poiščite
DKIM-Signature: zabeležited=ins=. - V
Authentication-Resultspreverite, ali pišedkim=passin ali jeheader.d=enaka Vaši domeni. - Poiščite selektor:
dig TXT s._domainkey.example.com(ali z orodjem na spletu). Pojaviti se morap=z dolgim ključem, ali CNAME, ki vodi do takega zapisa.
V praksi: tako je videti v nadzorni plošči
Pri gostovanju pri WebOké je DKIM privzeto vklopljen, s selektorjem x: zapis se imenuje x._domainkey.<vašadomena>. V DirectAdmin ga najdete pod Upravljanje DNS; če je Vaš DNS pri drugem ponudniku, zapis prekopirajte tja. V Moj WebOké kartica Nastavitev e-pošte prikaže, katera vrednost mora biti nastavljena in ali je najdena. Pri drugih ponudnikih se selektor imenuje drugače (default, mail, dkim), vendar ga najdete na enak način: v nadzorni plošči ali v s= podpisanega sporočila.
Povzetek
- DKIM je preverjanje, ki preživi preusmeritev in ga za vsako storitev povežete z lastno domeno; za DMARC šteje samo podpis, pri katerem je v
d=Vaša domena. - V
DKIM-Signaturenajdeted=(domena) ins=(selektor); ključ je na naslovu<s>._domainkey.<d>. - Vsaka storitev dobi svoj selektor; zapisi CNAME omogočajo, da storitev sama zamenjuje ključe. V storitvi tudi dejansko vklopite DKIM z lastno domeno.
- Uporabite 2048 bitov; pri kopiranju bodite pozorni na okrnjene ključe.
- Ključ zamenjajte z novim selektorjem in stari prekličite šele kasneje.
Kviz
Naloga
Naloga Z4.3: Preverjanje selektorja DKIM. Pošljite sporočilo iz lastne domene (ali iz storitve, ki pošilja v Vašem imenu) na lasten naslov pri drugem ponudniku. Odprite glave in vnesite vrednosti d= in s= iz DKIM-Signature ter kaj piše pri dkim= v Authentication-Results. Program v živo poišče selektor, sledi morebitnemu CNAME, preveri ključ (prisotnost, ali ni prazen, dolžina) in pove, ali je d= usklajen z domeno, ki jo navedete kot pošiljatelja.
Za nadaljnje branje
Koraki v teh prispevkih veljajo za nadzorne plošče WebOké; pri drugih ponudnikih deluje podobno.
- Brezplačen tečaj DNS 4.4: DKIM: podpis pod Vašo pošto
- Priročnik DirectAdmin 5.8: DKIM vklopite in preverite
- Nastavitev DKIM, ko DNS teče prek zunanjega strežnika
- Priročnik WebOké 6.7: Kartica Nastavitev e-pošte (MX, SPF, DKIM, DMARC)
- RFC 6376 (DKIM), RFC 8301 (dolžina ključa in algoritmi), RFC 8463 (ed25519)
