Modul 4 · 4.3
DKIM u praksi: selektori, ključevi i usluge
Modul 4: Dostavljivost: SPF, DKIM i DMARC u praksi · Vrijeme čitanja: 12 minuta
Cilj učenja: Nakon ove lekcije moći ćete rastaviti DKIM-Signature zaglavlje, za svaku uslugu slanja postaviti DKIM s vlastitom domenom, provjeriti radi li selektor te objasniti kako sigurno zamijeniti ključeve.
Ključni pojmovi: DKIM-Signature, d= (domena koja potpisuje), s= (selektor), h= (potpisana zaglavlja), bh= i b=, kanonikalizacija (c=), <selector>._domainkey.<domein>, TXT s p= ili CNAME prema usluzi, duljina ključa 2048 bita (RFC 8301), dijelovi od 255 znakova, ed25519 (RFC 8463), zamjena ključa, prazan p= (povučen), DKIM i preusmjeravanje
Zašto je DKIM najvažniji od sva tri
SPF kaže koji poslužitelji smiju slati poštu, ali prestaje raditi kod preusmjeravanja i gleda na Return-Path, koji kod mnogih usluga nije Vaš. DKIM stavlja potpis u samu poruku. Taj potpis preživljava preusmjeravanje (sve dok se poruka ne mijenja) i povezan je s domenom koju sami odaberete. Zato je DKIM u praksi često jedino što DMARC-u omogućuje uspjeh za newslettere, račune iz knjigovodstvenog programa i preusmjerenu poštu.
Osnove (kako ključ stoji u DNS-u, što je selektor) nalaze se u tečaju o DNS-u, lekcija 4.4. Ovdje idemo dalje: što točno piše u potpisu i kako postaviti DKIM za svaku uslugu?
Rastavljanje potpisa
Otvorite zaglavlja poruke koju ste primili (lekcija 1.5). Pri vrhu, ako je poruka potpisana, stoji nešto poput:
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...lange reeks tekens...Qx9A==| Oznaka | Značenje |
|---|---|
v=1 | Verzija DKIM-a |
a=rsa-sha256 | Algoritam: RSA ključ, SHA-256. Moguće je i: ed25519-sha256 |
c=relaxed/relaxed | Kanonikalizacija: koliko strogo se tretiraju male izmjene (razmaci, velika slova u nazivima zaglavlja), za zaglavlja i tekst. relaxed je uobičajen i blaži od simple |
d=example.com | Domena koja potpisuje. Ta domena jamči za poruku. DMARC uspoređuje ovo s adresom From |
s=x | Selektor: koji je ključ te domene korišten |
t= | Trenutak potpisivanja (sekunde od 1970.) |
h= | Koja su zaglavlja potpisana. from mora uvijek biti uključen |
bh= | Otisak (hash) teksta poruke |
b= | Sam potpis |
Primatelj dohvaća javni ključ na adresi <s>._domainkey.<d>, u ovom slučaju dakle x._domainkey.example.com, i provjerava odgovara li b= zaglavljima iz h= i otisku bh=. Ako je usput promijenjeno makar jedno slovo u tekstu ili u nekom potpisanom zaglavlju, provjera ne uspijeva.
U Authentication-Results vidite ishod, na primjer dkim=pass header.d=example.com header.s=x. Poruka može imati više potpisa, na primjer jedan Vaše domene i jedan same usluge. Za DMARC vrijedi samo potpis čiji d= odgovara Vašoj From domeni.
Vlastiti selektor za svaku uslugu
Domena može imati mnogo DKIM ključeva istovremeno, svaki pod vlastitim selektorom. To je upravo svrha: svaka usluga koja šalje poštu u Vaše ime potpisuje vlastitim ključem.
| Pošiljatelj | Selektor (primjer) | Kako to izgleda u DNS-u |
|---|---|---|
| Mail poslužitelj hostinga | x ili default | TXT s ključem, izrađen putem panela |
| Microsoft 365 | selector1, selector2 | dva CNAME zapisa prema Microsoftu |
| Google Workspace | google (standardno) | TXT s ključem koji izradite u administracijskoj konzoli |
| Usluga newslettera | na primjer k2, k3, mte1 | obično CNAME zapisi prema usluzi |
TXT ili CNAME?
- Kod TXT zapisa sami stavljate javni ključ u svoj DNS. Ako usluga treba novi ključ, morate sami izmijeniti zapis.
- Kod CNAME zapisa preusmjeravate selektor prema nazivu kod usluge, na primjer
k2._domainkey.example.com CNAME dkim2.mailer.example.Usluga tada sama upravlja ključem i može ga zamijeniti bez da Vi išta morate učiniti. Zato velike usluge biraju CNAME, i često koriste dva: tako mogu izmjenjivati aktivan i novi ključ.
Pazite: CNAME ne smije stajati uz drugi zapis na istom nazivu. Ako na selector1._domainkey već postoji TXT, uklonite ga.
Najvažnije: uključiti DKIM kod usluge
Kod mnogih usluga DKIM s vlastitom domenom nije uključen po zadanome. Tada potpisuju vlastitom domenom (d=mailer.example). Poruka je tada doduše potpisana, ali nije usklađena (alignment) s Vašom From adresom. Za DMARC to ne vrijedi. U administraciji usluge to se često naziva "verifikacija domene", "domain verification", "autentikacija" ili "vlastita domena pošiljatelja". Tek kad postavite zapise I to uključite u usluzi, ona potpisuje s d=example.com.
Ključevi: duljina, dijelovi i algoritam
- Duljina. RFC 8301 kaže: najmanje 1024 bita, a pošiljatelji bi trebali koristiti najmanje 2048 bita. Koristite 2048. Ključ od 512 bita primatelji smatraju nevažećim.
- Dijelovi od 255 znakova. TXT zapis sastoji se od nizova znakova od najviše 255 znakova. Ključ od 2048 bita dugačak je oko 400 znakova i ne stane u jedan niz. Zapis se tada sastoji od dva ili više nizova jedan za drugim (
"v=DKIM1; k=rsa; p=MIIBIj..." "...IDAQAB"), koje primatelj spaja. Većina panela to radi automatski. Ako to pođe po zlu, dobivate odrezani (truncated) ključ i svaki potpis ne uspijeva. Zato uvijek kopirajte ključ u cijelosti, bez dodatnih razmaka ili navodnika u sredini. - ed25519 (RFC 8463) je moderniji algoritam s kratkim ključevima. Još ga ne provjeravaju svi primatelji. Tko ga koristi, zato potpisuje s dva potpisa: jednim RSA i jednim ed25519.
Zamjena ključa
Dobro je povremeno zamijeniti ključ, a pogotovo ako sumnjate da je privatni ključ procurio (na primjer nakon hakiranja poslužitelja ili odlaska administratora). Postupite ovako:
- Izradite novi ključ pod novim selektorom, na primjer
s2026, i stavite javni ključ u DNS. - Pričekajte dok zapis ne postane vidljiv svugdje (TTL, pogledajte tečaj o DNS-u, lekcija 6.1).
- Neka poslužitelj počne potpisivati novim selektorom.
- Ostavite stari ključ još nekoliko dana: poruke koje su već bile na putu ili se ponovno provjeravaju, i dalje se na njega pozivaju.
- Povucite stari ključ tako da ispraznite
p=(v=DKIM1; p=), ili uklonite zapis.
Kod usluga s CNAME zapisima ovo radi sama usluga.
Zbog čega DKIM ne uspijeva
- Poruka se usput mijenja: mailing lista koja u predmet stavlja
[naziv liste]ili dodaje podnožje, antivirusni program koji ispod poruke dodaje redak, poslužitelj za preusmjeravanje koji mijenja format. - Pogrešan ili odrezan ključ u DNS-u.
- Selektor ne postoji: tipfeler u nazivu, ili
selector1._domainkey.example.com.example.com(naziv domene udvostručen, jer ga panel sam već dodaje na kraj). - Ključ povučen (prazan
p=) dok poslužitelj i dalje potpisuje tim selektorom.
Provjera radi li
- Pošaljite poruku iz usluge na adresu kod Gmaila ili Outlook.com.
- Otvorite zaglavlja i pronađite
DKIM-Signature: zabilježited=is=. - Pogledajte u
Authentication-Resultsstoji lidkim=pass, i je liheader.d=Vaša domena. - Potražite selektor:
dig TXT s._domainkey.example.com(ili putem online alata). Mora postojatip=s dugim ključem, ili CNAME koji vodi do takvog zapisa.
U praksi: ovako izgleda u panelu
Kod hosting paketa WebOké DKIM je po zadanome uključen, sa selektorom x: zapis se zove x._domainkey.<vaša domena>. U DirectAdmin to vidite u DNS Administration; ako Vaš DNS upravlja druga strana, tada taj zapis prekopirate tamo. U Moj WebOké kartica Set E-mail prikazuje koja vrijednost treba stajati i je li pronađena. Kod drugih pružatelja selektor se drukčije zove (default, mail, dkim), ali pronalazite ga na isti način: u panelu ili u s= potpisane poruke.
Sažetak
- DKIM je provjera koja preživljava preusmjeravanje i koju po usluzi povezujete s vlastitom domenom; za DMARC vrijedi samo potpis s Vašom domenom u
d=. - U
DKIM-Signaturepronalazited=(domena) is=(selektor); ključ stoji na<s>._domainkey.<d>. - Svaka usluga dobiva vlastiti selektor; CNAME zapisi omogućuju da usluga sama zamjenjuje ključeve. Obavezno uključite DKIM s vlastitom domenom i u samoj usluzi.
- Koristite 2048 bita; pazite na odrezane ključeve pri kopiranju.
- Zamijenite ključ s novim selektorom i tek nakon toga povucite stari.
Kviz
Zadatak
Zadatak Z4.3: Provjera DKIM selektora. Pošaljite poruku s vlastite domene (ili iz usluge koja šalje poštu u Vaše ime) na vlastitu adresu kod drugog pružatelja usluge. Otvorite zaglavlja i unesite vrijednosti d= i s= iz DKIM-Signature, te što stoji u Authentication-Results kod dkim=. Program uživo pronalazi selektor, prati eventualni CNAME, provjerava ključ (prisutan, nije prazan, duljina) i javlja je li d= usklađen (alignment) s domenom koju navodite kao pošiljatelja.
Dodatna literatura
Koraci u ovim člancima vrijede za panele WebOké; kod drugih pružatelja usluga postupak je sličan.
- Besplatni DNS tečaj 4.4: DKIM: digitalni potpis ispod Vaše pošte
- DirectAdmin priručnik 5.8: Uključivanje i provjera DKIM-a
- Postavljanje DKIM-a kada DNS radi na vanjskom serveru
- Priručnik za WebOké 6.7: Kartica Postavljanje e-pošte (MX, SPF, DKIM, DMARC)
- RFC 6376 (DKIM), RFC 8301 (duljina ključa i algoritmi), RFC 8463 (ed25519)
