DKIM aláírás: Az e-mail hitelesség alapja
A DKIM (DomainKeys Identified Mail) kriptográfiai aláírással bizonyítja, hogy a levél valóban a feladó domainjéről származik és útközben nem módosult. Az SPF mellett a DKIM a második legfontosabb e-mail hitelesítési protokoll -- nélküle a leveleid nagy eséllyel a spam mappában kötnek ki.
Mi az a DKIM?
A DKIM (DomainKeys Identified Mail) egy e-mail hitelesítési szabvány (RFC 6376), amely nyilvános kulcsú kriptográfiát használ az e-mailek hitelességének igazolására. A rendszer lényege egyszerű: a küldő levelezőszerver minden kimenő e-mailhez egy digitális aláírást fűz, amelyet a fogadó szerver a DNS-ben publikált nyilvános kulccsal ellenőrizhet. Ha az aláírás érvényes, a fogadó fél biztos lehet abban, hogy a levél valóban az adott domainről származik, és tartalma útközben nem módosult.
A DKIM a nyilvános és privát kulcspár (asymmetric cryptography) elvén működik. A privát kulcsot a küldő szerver biztonságosan tárolja -- ezt soha nem osztja meg senkivel. A nyilvános kulcsot ezzel szemben a domain DNS zónájában teszi közzé, hogy bárki -- azaz bármely fogadó levelezőszerver -- hozzáférhessen és ellenőrizhesse vele az aláírást. Ez a mechanizmus ugyanaz az alapelv, amely a HTTPS tanúsítványokat, a PGP titkosítást és a digitális aláírásokat is működteti.
Amikor egy DKIM-mel aláírt e-mail megérkezik, a fogadó szerver a levél fejlécében található DKIM-Signature mezőt keresi meg. Ez a mező tartalmazza az aláírás részleteit: melyik domain írta alá (d=), melyik selectort használta (s=), mely fejlécmezőket és a törzs melyik részét fedi le az aláírás (h=, bh=), valamint magát a kriptográfiai aláírást (b=). A fogadó szerver a selector és a domain alapján kikeresi a DNS-ből a nyilvános kulcsot, majd azzal ellenőrzi az aláírást.
Miért fontos a DKIM? A DKIM önmagában is javítja a kézbesíthetőséget, de a valódi ereje a DMARC szabályzattal együtt mutatkozik meg. A DMARC a DKIM és az SPF eredményeit használja annak eldöntésére, hogy egy e-mail hiteles-e. DKIM nélkül a DMARC nem tud hatékonyan működni, és a domainedet könnyebben hamisíthatják (spoofing).
Hogyan működik a DKIM?
A DKIM hitelesítés három szereplő együttműködésén alapul: a küldő levelezőszerver, a DNS szerver (ahol a nyilvános kulcs publikálva van), és a fogadó levelezőszerver. A folyamat lépésről lépésre a következő:
1. lépés: A küldő szerver aláírja az e-mailt
Amikor a levelezőszervered (pl. Google Workspace, Microsoft 365 vagy a saját SMTP szervered) kiküld egy e-mailt, a következő történik:
- A szerver kiszámolja az e-mail törzsének (body) hash értékét, és ezt a
bh=(body hash) mezőben rögzíti. - Kiválasztja az aláírandó fejlécmezőket (pl.
From,To,Subject,Date). - A fejlécmezők és a body hash összefűzött értékéből a privát kulccsal létrehoz egy RSA (vagy Ed25519) kriptográfiai aláírást.
- Az aláírást és a metaadatokat a
DKIM-Signaturefejlécmezőben helyezi el a levélben.
Példa DKIM-Signature fejléc:
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=peldaceg.hu; s=google;
h=from:to:subject:date:message-id:mime-version;
bh=47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=;
b=dKp8R3...hosszú_aláírás...xYz=
2. lépés: A DNS tárolja a nyilvános kulcsot
A domain tulajdonosa a DNS zónájában egy TXT rekordot publikál, amely a nyilvános kulcsot tartalmazza. A rekord neve a selector._domainkey.domain formátumot követi. Például ha a selector google és a domain peldaceg.hu, akkor a DNS rekord neve:
google._domainkey.peldaceg.hu TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkq...nyilvános_kulcs..."
A v=DKIM1 jelzi a DKIM verziót, a k=rsa az algoritmus típusát, a p= pedig maga a Base64-kódolt nyilvános kulcs.
3. lépés: A fogadó szerver ellenőrzi az aláírást
Amikor a fogadó levelezőszerver (pl. Gmail, Outlook, Yahoo) megkapja a levelet:
- Kiolvassa a
DKIM-Signaturefejlécből ad=(domain) éss=(selector) értékeket. - DNS lekéréssel megkeresi a
selector._domainkey.domainTXT rekordot, és kiolvassa a nyilvános kulcsot. - A nyilvános kulccsal dekódolja az aláírást (
b=mező). - Újraszámolja a body hash-t és a fejlécmezők hash-ét, majd összeveti a dekódolt aláírással.
- Ha egyeznek: az e-mail DKIM PASS státuszt kap. Ha nem egyeznek (mert a tartalom módosult vagy az aláírás hamis): DKIM FAIL.
Fontos: A DKIM ellenőrzés eredménye önmagában nem dönti el, hogy a levél a beérkező mappába vagy a spambe kerül. A fogadó szerver a DKIM eredményt a DMARC szabályzattal, az SPF ellenőrzéssel és saját spam-szűrő algoritmusaival együtt értékeli ki.
DKIM beállítás lépésről lépésre
A DKIM beállítása néhány jól meghatározott lépésből áll. Az alábbiakban részletesen bemutatjuk a folyamatot a két legnépszerűbb levelezési platformra (Google Workspace és Microsoft 365), valamint az általános DNS konfigurációt.
1. lépés: Generálj DKIM kulcspárt
A DKIM kulcspár egy privát kulcsból (amit a levelezőszerver használ az aláíráshoz) és egy nyilvános kulcsból (amit a DNS-ben publikálsz) áll. A legtöbb felhőalapú levelező szolgáltató (Google Workspace, Microsoft 365) automatikusan generálja a kulcspárt -- neked csak aktiválnod kell és a DNS rekordot beállítanod.
Ha saját SMTP szervert használsz (pl. Postfix, Exim), az opendkim-genkey paranccsal generálhatsz kulcspárt:
opendkim-genkey -t -s mail -d peldaceg.hu -b 2048
Ez létrehoz egy mail.private (privát kulcs) és egy mail.txt (DNS TXT rekord a nyilvános kulccsal) fájlt.
Mi az a selector? A selector egy egyedi azonosító, amely lehetővé teszi, hogy egyazon domainhez több DKIM kulcsot is használj párhuzamosan. Például a Google Workspace a google selectort használja, míg a Mailchimp a k1 selectort. Kulcsrotáció esetén is hasznos: az új kulcsot egy új selectorral publikálod, majd az aláírást átállítod az újra, anélkül hogy a régi kulcsot azonnal törölnöd kellene.
2. lépés: Google Workspace beállítás
A Google Workspace-ben a DKIM aktiválása az Admin Console-ból történik:
- Navigálj az Admin Console → Apps → Google Workspace → Gmail → Authenticate email menüpontra.
- Válaszd ki a domainedet a legördülő listából.
- Kattints a "Generate new record" gombra. Válaszd a 2048 bites kulcshosszt (ha a DNS szolgáltatód támogatja a hosszú TXT rekordokat).
- A Google megmutatja a DNS TXT rekordot, amelyet a domain DNS zónájába kell hozzáadnod. A rekord neve
google._domainkey.peldaceg.hulesz. - Add hozzá a TXT rekordot a DNS-edhez (lásd a 4. lépést).
- Várj 24-48 órát a DNS propagációra, majd a Google Admin Console-ban kattints a "Start authentication" gombra.
Tipp: A Google Workspace alapértelmezetten 1024 bites kulcsot ajánl. Mindig válaszd a 2048 bites opciót, ha a DNS szolgáltatód támogatja -- ez lényegesen nagyobb biztonságot nyújt.
3. lépés: Microsoft 365 beállítás
A Microsoft 365-ben a DKIM konfigurálása a következőképpen történik:
- Navigálj a Microsoft Defender portálra → Email & collaboration → Policies & rules → Threat policies → Email authentication settings → DKIM fülre.
- Válaszd ki a domainedet a listából.
- A Microsoft két CNAME rekordot generál, amelyeket a DNS zónádban kell elhelyezned. Ezek általában a következő formátumot követik:
selector1._domainkey.peldaceg.hu CNAME selector1-peldaceg-hu._domainkey.peldaceg.onmicrosoft.com
selector2._domainkey.peldaceg.hu CNAME selector2-peldaceg-hu._domainkey.peldaceg.onmicrosoft.com
A Microsoft két selectort (selector1, selector2) használ a kulcsrotáció megkönnyítéséhez. Miután a CNAME rekordok propagáltak, a Defender portálon kapcsold be a DKIM aláírást a csúszkával.
4. lépés: DNS rekord hozzáadása
Függetlenül attól, hogy melyik levelező platformot használod, a nyilvános kulcsot (vagy CNAME mutatót) a domain DNS zónájába kell elhelyezned. Lépj be a DNS szolgáltatód admin felületére (Cloudflare, Namecheap, GoDaddy, Rackhost, stb.) és add hozzá a rekordot.
Google Workspace esetén (TXT rekord):
Típus: TXT
Név: google._domainkey
Érték: v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA...
TTL: 3600
Microsoft 365 esetén (CNAME rekord):
Típus: CNAME
Név: selector1._domainkey
Érték: selector1-peldaceg-hu._domainkey.peldaceg.onmicrosoft.com
TTL: 3600
Figyelem: Egyes DNS szolgáltatóknál a TXT rekord maximum 255 karakteres lehet egy string-ben. Ha a 2048 bites nyilvános kulcs nem fér bele, több részre kell bontani idézőjelekkel: "első_rész" "második_rész". A legtöbb modern DNS szolgáltató ezt automatikusan kezeli.
5. lépés: Aktiváld a DKIM aláírást
Miután a DNS rekordot hozzáadtad és propagált (ez általában 15 perctől 48 óráig tarthat), aktiváld a DKIM aláírást a levelező platformodon:
- Google Workspace: Admin Console → Gmail → Authenticate email → "Start authentication" gomb
- Microsoft 365: Defender portál → DKIM oldal → csúszka bekapcsolása
- Saját szerver (OpenDKIM): az OpenDKIM szolgáltatás újraindítása a kulcs- és selector-konfigurációval
6. lépés: Ellenőrzés
Az aktiválás után küldj egy teszt e-mailt egy Gmail címre, majd nyisd meg a levelet és kattints a "Show original" (Eredeti megjelenítése) opcióra. Keresd meg a fejlécben a következő sort:
Authentication-Results: mx.google.com;
dkim=pass header.i=@peldaceg.hu header.s=google header.b=dKp8R3xY;
Ha dkim=pass látható, a DKIM aláírás sikeresen működik. Ha dkim=fail vagy dkim=neutral jelenik meg, ellenőrizd a DNS rekordot és a selector beállítást.
Hasznos ellenőrző eszközök: Használd az MXToolbox DKIM Lookup vagy a Mail-tester.com eszközöket a DKIM konfiguráció gyors ellenőrzéséhez. Az E-mail Teszt audit automatikusan vizsgálja a DKIM beállítást és részletes visszajelzést ad.
DKIM kulcsméret és biztonság
A DKIM aláírás biztonsága közvetlenül függ a használt kulcsmérettől és az algoritmus típusától. Jelenleg két fő RSA kulcsméret terjedt el:
1024 bit vs. 2048 bit
- 1024 bites kulcs: Ez volt a korábbi alapértelmezés, és még ma is sok domain használja. Bár a gyakorlatban még nem törték fel nyilvánosan, a biztonsági szakértők és a NIST (National Institute of Standards and Technology) 2013 óta nem ajánlja új rendszerekhez. A 1024 bites RSA kulcsot elméletileg elegendő számítási kapacitással fel lehetne törni.
- 2048 bites kulcs: Ez a jelenlegi ajánlott minimum. A 2048 bites kulcs exponenciálisan nehezebben törhető, mint az 1024 bites -- a jelenlegi technológiával gyakorlatilag lehetetlen. Mindig 2048 bites kulcsot használj, kivéve ha a DNS szolgáltatód nem támogatja a hosszabb TXT rekordokat (ami ma már ritka).
Ed25519 -- a jövő algoritmusa: Az RFC 8463 bevezette az Ed25519 alapú DKIM aláírást. Ez az elliptikus görbe alapú algoritmus kisebb kulcsmérettel (256 bit) nyújt a 2048 bites RSA-val egyenértékű vagy jobb biztonságot, és gyorsabb is. A fogadó szerver támogatása azonban még nem univerzális, ezért jelenleg érdemes RSA 2048 bitet használni elsődleges aláírásként, és opcionálisan Ed25519-et másodlagos aláírásként hozzáadni.
Kulcsrotáció -- mikor és hogyan
A DKIM kulcsokat rendszeresen cserélni (rotálni) kell, hasonlóan a jelszavakhoz. A kulcsrotáció ajánlott gyakorisága:
- Minden 6-12 hónapban érdemes új kulcspárt generálni és új selectorra váltani.
- Azonnal, ha felmerül a gyanú, hogy a privát kulcs kompromittálódhatott (pl. szerverfeltörés).
- A rotáció során az új kulcsot egy új selectorral publikáld a DNS-ben (pl.
google2agooglehelyett), állítsd át az aláírást az új selectorra, majd -- miután az összes átmeneti levél kézbesült -- töröld a régi DNS rekordot.
Ne töröld a régi kulcsot túl hamar! A DNS propagáció és a levelek kézbesítése időbe telik. A régi selector DNS rekordját tartsd fenn legalább 1-2 hétig az új kulcsra való átállás után, hogy a tranzitban lévő levelek még ellenőrizhetők legyenek.
Gyakori DKIM hibák
A DKIM beállítás során az alábbi hibákat követik el a leggyakrabban. Ha a DKIM ellenőrzés fail vagy neutral eredményt ad, valószínűleg az alábbiak valamelyike a probléma:
DNS rekord nem publikált vagy rossz formátumú
A leggyakoribb hiba: a DKIM DNS rekord egyszerűen nincs hozzáadva a DNS zónához, vagy a formátuma hibás. Ellenőrizd a következőket:
- A rekord neve pontosan
selector._domainkey.domain.tldformátumú-e (az aláhúzás karakterek fontosak!). - A TXT rekord tartalmazza-e a
v=DKIM1;előtagot. - A
p=mező tartalmazza-e a teljes nyilvános kulcsot, sortörések és szóközök nélkül. - Nincs-e felesleges szóköz vagy idézőjel a rekordban.
Selector eltérés
Az e-mail fejlécében szereplő selector (s= mező) nem egyezik a DNS-ben publikált rekorddal. Ez gyakran előfordul, ha a levelező platform más selectort generált, mint amit a DNS-ben beállítottál. Ellenőrizd, hogy a DKIM-Signature fejlécben lévő s= érték megegyezik-e a DNS rekord nevével.
Kulcs lejárat vagy elavulás
Ha a DKIM kulcsot már évek óta nem rotáltad és 1024 bites, egyes fogadó szerverek alacsonyabb megbízhatósági pontszámot adhatnak a leveleidnek. Ráadásul ha a privát kulcs kompromittálódott (pl. szervermigráció során kiszivárgott), az összes aláírásod megbízhatatlanná válik, amíg nem cseréled a kulcsot.
Third-party aláírás hiánya (ESP-k)
Ha e-mail marketing szolgáltatót (ESP) használsz -- például Mailchimp, SendGrid, Brevo (Sendinblue), Mailerlite --, az ESP a saját szervereiken keresztül küldi ki a leveleket. Ilyenkor a DKIM aláírást az ESP szervere végzi, de neked kell engedélyezned, hogy a te domaineddel írja alá a leveleket. Ez általában CNAME rekordok hozzáadásával történik a DNS-edben. Ha ezt elmulasztod, az ESP a saját domainjével írja alá a leveleket, ami DMARC alignment hibát okoz.
E-mail tartalom módosulás közvetítés közben
Egyes levelezőlisták, továbbító szabályok vagy e-mail átirányítók módosítják a levél tartalmát vagy fejléceit az átvitel során (pl. hozzáadnak egy lábléc szöveget). Ez érvényteleníti a DKIM aláírást, mivel a body hash többé nem egyezik az eredetivel. Erre a problémára az ARC (Authenticated Received Chain) protokoll nyújt megoldást, amely megőrzi a hitelesítési eredményeket a közvetítési láncon keresztül.
Következő lépés
A DKIM beállítása után a következő lépés a DMARC szabályzat konfigurálása, amely a DKIM és az SPF eredményeit összefogva védi a domainedet a hamisítástól.