Biztonság Szakszó

DKIM (DomainKeys Identified Mail)

Szerző: · 8 perc olvasás · Frissítve:
DKIM (DomainKeys Identified Mail) - Biztonság (szakszó) a tudástárban
DKIM (DomainKeys Identified Mail) - Biztonság | eClick GEO-audit tudástár

A DKIM olyan e-mail-hitelesítési eljárás, amelyben a küldő levelezőszerver digitális aláírást helyez a kimenő levél fejlécébe, a fogadó szerver pedig egy DNS-ben publikált nyilvános kulccsal ellenőrzi ezt az aláírást. Ha az aláírás érvényes, a levél bizonyítottan az aláíró domaintől származik, és a hitelesített részei útközben nem változtak meg.

Hogyan működik

A folyamat négy lépésből áll, és teljesen a háttérben zajlik:

  1. A küldő szerver hash-t készít a levél törzséből és néhány kijelölt fejlécből.
  2. A hash-t titkos kulccsal aláírja, majd DKIM-Signature fejlécként beleteszi a levélbe.
  3. A fogadó szerver kiolvassa az aláírásból a d= domaint és az s= selectort.
  4. Lekéri a selector._domainkey.domain.hu TXT-rekordot, és a nyilvános kulccsal ellenőrzi az aláírást.

A titkos kulcs soha nem hagyja el a levelezőszervert. A DNS-ben csak a nyilvános kulcs van kint, bárki olvashatja.

Miben más, mint az SPF

Az SPF (Sender Policy Framework) azt nézi, hogy melyik IP-címről érkezett a levél. A DKIM azt nézi, hogy ki írta alá a tartalmat. Ennek gyakorlati következménye van: ha valaki továbbküldi a leveledet, az SPF eltörik, mert az IP megváltozik. A DKIM-aláírás viszont túléli a továbbítást, amíg a levél törzsét senki nem módosítja.

A DMARC mindkettőre épül. Ahhoz, hogy egy levél DMARC-szempontból átmenjen, az SPF vagy a DKIM közül legalább az egyiknek passzolnia kell, ráadásul illeszkednie kell a látható From: domainhez. Ezt hívják alignmentnek.

Mikor számít igazán

Akkor, amikor a szervered automata leveleket küld: rendelés-visszaigazolás, jelszó-visszaállítás, számlaértesítő, űrlap-értesítés. 2024 óta a Gmail és a Yahoo a nagyobb küldőktől elvárja az SPF-et, a DKIM-et és a DMARC-ot is. A riportokban azt látjuk, hogy a magyar KKV-oldalak jelentős részén az SPF megvan, a DKIM viszont hiányzik, mert azt már nem a domain-regisztrátor állította be automatikusan.

Röviden: a DKIM az a digitális pecsét, ami nélkül a DMARC csak félkarú, a tranzakciós leveleid pedig könnyen a spam mappában kötnek ki.

Miért fontos

Kézbesíthetőség

A DKIM az egyik legerősebb jel, amiből a fogadó szerver eldönti, hogy megbízik-e benned. Aláírás nélküli automata levélnél a Gmail és az Outlook lényegesen szigorúbb. A tipikus tünet: a webshop rendelés-visszaigazolója spambe kerül, a vevő pedig felhívja az ügyfélszolgálatot.

Domain-védelem

A DKIM önmagában nem akadályozza meg, hogy valaki a nevedben levelet küldjön. Azt viszont igen, hogy ez a hamis levél hitelesnek látsszon. Az SPF, DKIM és DMARC hármas együtt teszi lehetővé, hogy a fogadó eldobja a hamisított leveleket.

Reputáció és mérhetőség

A levelezőszolgáltatók domain-alapon építenek reputációt, és ehhez aláírt levélre van szükségük. DKIM nélkül minden küldésed névtelen forgalom marad. A DMARC jelentések is csak akkor használhatók, ha van mihez illeszteni az eredményt.

Kikre vonatkozik

Minden domainre vonatkozik, amelyről e-mail megy ki. Ez nem csak a hírlevélküldő rendszer: a weboldal kapcsolati űrlapja, a webshop értesítői és a CRM is ide tartozik.

  • Webshopok: kötelező szint, mert tranzakciós leveleket küldenek, és a kézbesítés közvetlenül pénzt ér.
  • Szolgáltató KKV-oldalak: az űrlap-értesítő és az ajánlatküldés is aláírás nélkül megy, ha nincs beállítva.
  • Több küldőrendszer esetén: mindegyiknek saját selectort és saját kulcsot kell kapnia.
  • Nem küldő domainek: ha egy domainről soha nem megy levél, DKIM-kulcs helyett elég egy szigorú SPF (Sender Policy Framework) és DMARC beállítás.
  • Staging és teszt-környezet: általában nem szükséges, de ha éles feladócímmel küld, akkor igen.

Hogyan ellenőrzöd

Lépések

  1. Keresd meg, milyen selectorral ír alá a rendszered. Ezt a levelezőszolgáltatód admin felülete mutatja meg.
  2. Kérdezd le a DNS-t: dig +short TXT selector1._domainkey.example.hu. Üres válasz esetén nincs publikált kulcs.
  3. Küldj egy levelet magadnak Gmailre a saját rendszeredből.
  4. Nyisd meg a levelet, majd a három pöttynél válaszd az Eredeti megjelenítése menüpontot.
  5. A fejlécben keresd a DKIM: 'PASS' with domain ... sort, és nézd meg, melyik domain szerepel benne.
  6. Vesd össze ezt a domaint a levél látható From: címének domainjével.

Jó jel

  • A DNS-lekérdezés v=DKIM1; k=rsa; p=... kezdetű rekordot ad vissza.
  • A fogadott levél fejlécében dkim=pass szerepel.
  • Az aláíró d= domain megegyezik a feladó domainjével, vagy annak aldomainje.
  • Minden küldőrendszered saját, működő selectorral ír alá.

Rossz jel

  • dkim=none: egyáltalán nincs aláírás a levélen.
  • dkim=fail vagy bodyhash did not verify: a levelet útközben módosította valami.
  • Az aláíró domain a szolgáltatóé, nem a tiéd. Ilyenkor a DMARC-alignment elbukik.
  • A DNS-ben ott a rekord, de a küldőrendszerben nincs bekapcsolva az aláírás.

Mit néz ebből a riport

Az audit lekérdezi a domainhez tartozó ismert DKIM-selectorokat, és megnézi, van-e mögöttük érvényes nyilvános kulcs. Levelet nem küld, ezért egyedi vagy ritka selector esetén előfordulhat, hogy nem találja meg a kulcsot. A riport ilyenkor nem hibát állapít meg, hanem jelzi, hogy az állapot kézzel ellenőrizendő.

Hogyan javítod

A DKIM két helyen áll be: a levelezőszolgáltatónál generálod a kulcsot, a DNS-ben publikálod. A DNS-t ott kell szerkeszteni, ahol a domain névszerverei vannak, nem feltétlenül ott, ahol a tárhely.

WordPress

  1. Ne a PHP mail() függvényével küldj. Telepíts SMTP-bővítményt, például a WP Mail SMTP-t.
  2. Köss be egy valódi levelezőszolgáltatót: Google Workspace, Microsoft 365 vagy tranzakciós szolgáltató.
  3. A szolgáltató felületén generálj DKIM-kulcsot, lehetőleg 2048 bitest.
  4. Vedd fel a kapott TXT- vagy CNAME-rekordot a DNS-ben.
  5. Kapcsold be az aláírást, majd küldj tesztlevelet és ellenőrizd a fejlécet.

Shopify

  1. Nyisd meg a Beállítások alatt az Értesítések részt, és nézd meg a feladó e-mail-cím állapotát.
  2. Ha a rendszer hitelesítést kér, másold ki az ott megadott CNAME-rekordokat.
  3. Vedd fel őket a domain DNS-zónájában, majd várj a terjedésre.
  4. Frissítsd az admin felületet, amíg a feladó hitelesített állapotra vált.

Unas

  1. Nézd meg, milyen feladócímről mennek a rendszerlevelek.
  2. Kérd el az ügyfélszolgálattól a kimenő levelezéshez tartozó DKIM- és SPF-rekordokat.
  3. Rögzítsd őket a DNS-szolgáltatódnál pontosan a megadott névvel és értékkel.
  4. Küldj próbarendelést, és ellenőrizd a visszaigazoló fejlécét.

Shoprenter

  1. Az adminban ellenőrizd a kimenő levelezés beállításait és a feladó domaint.
  2. Igényeld a rendszerhez tartozó DKIM-rekordot a támogatástól.
  3. Publikáld a rekordot a DNS-ben, majd teszteld egy valódi rendeléssel.

Egyedi fejlesztés

  1. Válassz tranzakciós küldőszolgáltatót saját SMTP vagy API helyett.
  2. Adj hozzá minden küldőrendszerhez külön selectort, például app, crm, news.
  3. Használj legalább 1024 bites, inkább 2048 bites RSA-kulcsot.
  4. Ne állíts be l= body length taget, mert az támadási felületet nyit.
  5. Tervezz kulcsrotációt: új selector publikálása, átállás, majd a régi kulcs törlése.
  6. Csak ezután szigorítsd a DMARC politikát p=quarantine vagy p=reject értékre.

Gyakori hibák

  • Nincs DKIM, csak SPF: a levéltovábbítás eltöri az SPF-et, és ilyenkor semmi nem tartja meg a levelet.
  • A szolgáltató domainje ír alá: az aláírás technikailag passzol, de a d= nem illeszkedik a feladó domainhez, így a DMARC bukik.
  • A kulcsot csak a DNS-ben vették fel: a küldőrendszerben elfelejtették bekapcsolni az aláírást, így minden levél aláíratlan marad.
  • Elgépelt vagy szétvágott nyilvános kulcs: a base64 karakterlánc sérül a DNS-kezelőben, és a rekord érvénytelen lesz.
  • Több küldőrendszer, egy selector: az új szolgáltató felülírja a régi kulcsot, és az addigi csatorna némán elromlik.
  • Aláírás után módosuló levéltörzs: a szerver oldali lábléc vagy vírusellenőrző szöveg beszúrása elrontja a body hash-t.
  • Szigorú DMARC DKIM nélkül: a p=reject bevezetése azelőtt, hogy minden küldő aláírna, saját levelek elvesztéséhez vezet.

Technikai példa

A nyilvános kulcs egy TXT-rekord a selector._domainkey név alatt. Így kérdezed le és ilyen választ vársz:

dig +short TXT selector1._domainkey.example.hu

"v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA7Yx2...IDAQAB"

A v a verzió, a k a kulcs típusa, a p maga a base64 kódolt nyilvános kulcs. Ha a p üres, az visszavont kulcsot jelent.

A kimenő levélbe ez a fejléc kerül be:

DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=example.hu; s=selector1; t=1716200000;
 h=from:to:subject:date:message-id;
 bh=2jUSOH9NhtVGCQWNr9BrIAPreKQjO6Sn7XIkfJVOzv8=;
 b=dzdVyOfAKCdLXdJOc9G2q8LoXSlEniSbav+yuU4zGeeruD00lszZVoG4ZHRNiYzR

A d= az aláíró domain, az s= a selector, a h= a hitelesített fejlécek listája. A bh= a levéltörzs hash-e, a b= maga az aláírás. Ha a d= értéke megegyezik a From: domainnel, akkor a DKIM-alignment is teljesül.

Gyakori kérdések

Elég, ha csak SPF-em van?
Nem. Az SPF a küldő IP-címét ellenőrzi, és eltörik, amint valaki továbbküldi a leveledet. A DKIM az aláírás miatt túléli a továbbítást. A nagyobb levelezőszolgáltatók ma már mindkettőt elvárják a rendszeres küldőktől.
Hol kell beállítani a DKIM-et, a tárhelyen vagy a domainnél?
Mindkét helyen történik valami. A kulcsot a levelezőszolgáltatód generálja, a nyilvános részét viszont a domain DNS-zónájába kell felvenni. Ha a névszervereid nem a tárhelyszolgáltatónál vannak, akkor ott szerkeszd a rekordot, ahol a névszerverek futnak.
Több selectorom is lehet egyszerre?
Igen, és több küldőrendszernél kifejezetten ajánlott. Minden rendszer kapjon saját selectort és saját kulcsot. Így egy szolgáltató lecserélése nem rontja el a többi csatorna aláírását.
Mennyi idő alatt lép életbe?
A DNS-rekord terjedése általában néhány perctől pár óráig tart, a zóna TTL-jétől függően. Utána küldj tesztlevelet Gmailre, és az Eredeti megjelenítése nézetben ellenőrizd a dkim=pass sort. Ha még nem passzol, várj egy TTL-ciklust, és nézd meg újra.
Miért lesz fail az aláírás, ha a rekord jó?
A leggyakoribb ok a levéltörzs utólagos módosítása. Szerver oldali lábléc, vírusellenőrző szöveg vagy levelezőlista-kiegészítés elrontja a body hash-t. Ilyenkor a fejléc bodyhash did not verify hibát mutat, és az aláírás után beavatkozó rendszert kell megkeresni.

Források

Kapcsolódó fogalmak

A te oldaladon hogy áll a(z) „DKIM (DomainKeys Identified Mail)”?

Futtass egy SEO-auditot: pontszám, fejlesztői ítélet, a leggyorsabb javítások, és minden tételhez bizonyíték.

Ingyenes SEO-audit indítása