Biztonság Szakszó

E-mail-hitelesítés: SPF, DKIM, DMARC

Szerző: · 8 perc olvasás · Frissítve:
E-mail-hitelesítés: SPF, DKIM, DMARC - Biztonság (szakszó) a tudástárban
E-mail-hitelesítés: SPF, DKIM, DMARC - Biztonság | eClick GEO-audit tudástár

Az e-mail-hitelesítés három DNS-alapú szabvány együttese (SPF, DKIM, DMARC), amelyekkel a domain tulajdonosa megmondja a fogadó levelezőrendszereknek, mely szerverek küldhetnek levelet a nevében, és mi történjen a hamisított üzenetekkel. Kód nem kell hozzá: a három rekord a domain DNS-zónájában él.

Hogyan működik a három réteg

Mindhárom más kérdésre válaszol. Együtt adnak ki működő védelmet, külön-külön féllábon állnak.

  • SPF: TXT rekord, ami felsorolja a jogosult küldő szervereket. A fogadó a boríték feladójának IP-címét nézi meg benne.
  • DKIM: kriptográfiai aláírás a levél fejlécében. A publikus kulcs a DNS-ben van, ezzel ellenőrzi a fogadó, hogy a levél nem változott útközben.
  • DMARC: a szabályzat. Megmondja, mit kezdjen a fogadó az SPF/DKIM-en elbukó levéllel, és hova küldjön riportot.

Miért nem elég az SPF önmagában

Az SPF a továbbküldésnél (forward, levelezőlista) eltörik, mert megváltozik a küldő szerver. A DKIM aláírás ilyenkor is túléli. A DMARC ezért alignment-et vár: a látható Feladó domainjének egyeznie kell az SPF vagy a DKIM domainjével. Elég, ha az egyik stimmel.

Hol látszik a hiánya

A rosszul beállított domain neve könnyen hamisítható. Valaki a te céged címéről küld számlát vagy adathalász levelet, a fogadó pedig átengedi. A második következmény csendesebb: a saját hírleveleid és rendszerleveleid gyakrabban kötnek ki a spam mappában. A Gmail és a Yahoo 2024 óta tömeges küldőktől kifejezetten elvárja a DMARC-ot.

Röviden: az SPF megmondja, ki küldhet, a DKIM azt, hogy a levél sértetlen, a DMARC pedig azt, hogy mi legyen a bukott levéllel.

Miért fontos

Márkavédelem

Hitelesítés nélkül a domained szabad préda. A leggyakoribb eset a számlacsalás: az ügyfeled kap egy levelet a te címedről, más bankszámlaszámmal. A kár pénzben és bizalomban is mérhető, a helyreállítás hónapokig tart.

Kézbesíthetőség

A nagy szolgáltatók a hitelesítést szűrési jelként használják. Hiányos beállítással a rendelésvisszaigazolás, a jelszó-emlékeztető és a hírlevél is gyakrabban kerül spam mappába. Webshopnál ez közvetlen bevételkiesés.

Szabályozói nyomás

A Google és a Yahoo 2024 februárja óta a napi 5000 fölött küldő feladóktól megköveteli a DMARC-rekordot. A küszöb alatt is érdemes megcsinálni, mert a szűrés egyre szigorodik.

Technikai higiénia

A hitelesítés nem SEO-tényező, a rangsorolást nem befolyásolja. A weboldal biztonsági képét viszont igen: egy auditban a hiányzó DMARC ugyanabba a kategóriába esik, mint a hiányzó biztonsági fejlécek. A riportokban ezt látjuk a leggyakrabban együtt.

Kikre vonatkozik

Minden domainre vonatkozik, ami e-mailt küld vagy fogad. Céges levelezés, webshop rendszerlevelei, hírlevélküldő, CRM-értesítések: mind érintett.

Külön figyelj erre:

  • Webshopok, ahol a tranzakciós levél üzletkritikus.
  • Több küldő rendszert használó cégek (levelezés + hírlevél + számlázó).
  • Aldomainek: ha hirlevel.pelda.hu címről küldesz, a szervezeti domain DMARC-jában az sp= tag dönt róla.

Nem alkalmazható:

  • Staging és fejlesztői címek, ahol nincs valódi levelezés. Ilyenkor a vizsgálat nem értelmezhető, és nem ellenőrizhető állapotot kapsz.
  • Parkoltatott domain, amiről soha nem megy levél. Ott viszont érdemes egy v=spf1 -all és p=reject páros, hogy senki ne tudjon a nevében küldeni.

Hatókör szerint ez környezeti-hosztingszintű feladat. A fejlesztőd a weboldal kódjában nem tudja megjavítani, a DNS-kezelőben viszont öt perc alatt igen.

Hogyan ellenőrzöd

Lépések

  1. Nyisd meg a terminált, és kérdezd le a TXT rekordokat dig vagy nslookup paranccsal (lásd a technikai példát).
  2. Az SPF-et a domain gyökerén keresd: dig TXT pelda.hu. A v=spf1 kezdetű sor az.
  3. A DMARC külön aldomainen van: dig TXT _dmarc.pelda.hu. A v=DMARC1 kezdetű sort keresed.
  4. A DKIM-hez ismerned kell a selectort. Ezt a küldő rendszer dokumentációja adja meg (Google Workspace: google, Microsoft 365: selector1). A lekérdezés: dig TXT selector._domainkey.pelda.hu.
  5. Ha nincs terminálod, küldj egy levelet magadnak. Gmailben a ... menüben az Eredeti megjelenítése pontnál látod az SPF, DKIM és DMARC eredményét egymás alatt.

Jó jel

  • Pontosan egy SPF rekord, -all vagy ~all zárással.
  • Létező DMARC rekord, p=quarantine vagy p=reject szabállyal.
  • A DKIM aláírás pass értékkel jön vissza a fejlécben.
  • Az SPF DNS-lekérdezéseinek száma 10 alatt van.

Rossz jel

  • Nincs SPF, vagy kettő is van (ilyenkor mindkettő érvénytelen).
  • Az SPF +all-ra végződik: ez bárkinek engedélyt ad.
  • Nincs DMARC, vagy évek óta p=none állapotban áll.
  • Aldomainről küldesz, de a szervezeti DMARC-ban nincs sp= tag.

Mit néz ebből a riport

Az audit a domain DNS-ében az SPF- és a DMARC-rekordot kérdezi le, és a záró mechanizmust, illetve a szabályzatot értékeli. A DKIM-et nem vizsgálja, mert ahhoz ismerni kellene a selectort. A szabály hatása közepes, a hatóköre környezet és hoszting. Staging címen a vizsgálat nem alkalmazható.

Hogyan javítod

A javítás mindenhol a DNS-kezelőben történik, nem a CMS-ben. A CMS-ek alatt ezért azt írom le, honnan szerzed meg a küldő rendszer adatait.

WordPress

  1. Nézd meg, mi küldi a leveleket: a szerver mail() függvénye vagy egy SMTP-plugin (WP Mail SMTP, FluentSMTP).
  2. SMTP esetén a szolgáltató (SendGrid, Mailgun, Brevo) adja a kötelező SPF-include-ot és a DKIM CNAME-eket.
  3. Vedd fel ezeket a DNS-kezelőben, majd told fel a DMARC-ot p=none szinten.
  4. Két hét riportgyűjtés után lépj p=quarantine, majd p=reject szintre.

Shopify

  1. A Settings > Notifications > Sender email pontban add meg a saját domained címét.
  2. A Shopify ott kiírja a szükséges CNAME rekordokat (SPF és három DKIM bejegyzés).
  3. Vedd fel őket a DNS-kezelőben, és várd meg a zöld Verified állapotot.
  4. A DMARC-ot külön, kézzel kell felvenned a _dmarc aldomainre.

Unas

  1. Az admin felületen a levélküldés beállításainál nézd meg, saját domainről megy-e a küldés.
  2. Az Unas dokumentációjában megadott SPF-include értéket vedd fel a meglévő SPF rekordba, ne külön sorba.
  3. Ha hírlevélküldőt is használsz, annak az include-ját is ugyanabba a sorba tedd.
  4. DMARC rekordot a domain DNS-kezelőjében hozz létre.

Shoprenter

  1. A rendszer a saját szervereiről küld, ezért a Shoprenter által dokumentált SPF-include kötelező.
  2. Egyeztesd a támogatással a DKIM selectort, és vedd fel a publikus kulcsot.
  3. A DMARC-ot itt is a domain gyökerén, _dmarc néven állítod be.

Egyedi fejlesztés

  1. Listázd az összes küldő forrást: alkalmazásszerver, tranzakciós API, hírlevélküldő, számlázó, ügyfélszolgálati rendszer.
  2. Mindegyikhez vedd fel az SPF-include-ot, és figyelj a 10-es lekérdezési limitre.
  3. Kapcsold be a DKIM aláírást minden forrásnál, lehetőleg külön selectorral.
  4. Indulj p=none szabállyal és rua= riportcímmel, majd szigoríts.
  5. Aldomainről küldő rendszernél állítsd be az sp= taget is.

Gyakori hibák

  • Két SPF rekord egy domainen: az RFC szerint ilyenkor egyik sem érvényes, a hitelesítés azonnal bukik.
  • +all vagy hiányzó záró mechanizmus: gyakorlatilag mindenkinek engedélyt ad a nevedben küldeni, tehát semmit nem véd.
  • Örök p=none: a DMARC csak figyel, de nem tesz semmit, a hamisított levél így simán kézbesül.
  • 10 fölötti SPF-lekérdezés: a fogadó permerror-t ad, és az egész SPF-ellenőrzés érvénytelen lesz.
  • Hiányzó sp= tag: a szervezeti domain védve van, de az aldomainjeiről bárki küldhet.
  • Új küldő rendszer bevezetése DNS-módosítás nélkül: a számlázó vagy a CRM levelei csendben spam mappába kerülnek.
  • DKIM aláírás hírlevélküldőnél kihagyva: továbbküldésnél elbukik a hitelesítés, mert az SPF ott már nem segít.

Technikai példa

Lekérdezés terminálból. Ez mindhárom rekordot megmutatja, ha léteznek:

dig +short TXT pelda.hu
dig +short TXT _dmarc.pelda.hu
dig +short TXT google._domainkey.pelda.hu

# Windowson:
nslookup -type=TXT _dmarc.pelda.hu

Egy működő beállítás DNS-rekordjai. A ~all soft fail, a -all hard fail; kezdésnek a ~all biztonságosabb:

; SPF a domain gyökerén, egyetlen sorban minden küldővel
pelda.hu.           IN TXT "v=spf1 include:_spf.google.com include:sendgrid.net ~all"

; DMARC szabályzat, aldomain-öröklés sp= taggel
_dmarc.pelda.hu.    IN TXT "v=DMARC1; p=quarantine; sp=quarantine; rua=mailto:dmarc@pelda.hu; pct=100; adkim=r; aspf=r"

; DKIM publikus kulcs, a selector a küldő rendszertől függ
google._domainkey.pelda.hu. IN TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkqh..."

A rua= címre érkező XML-riportokból derül ki, mely rendszerek küldenek a nevedben. Ezt olvasd két hétig, mielőtt p=reject-re váltasz.

Gyakori kérdések

Melyiket állítsam be előbb, ha csak egyre van időm?
Az SPF-et, mert az a leggyorsabb és a legtöbb fogadó ezt nézi elsőként. Utána azonnal jöjjön a DMARC p=none szinten, mert csak abból derül ki, kik küldenek a domained nevében. A DKIM a harmadik lépés, de továbbküldött leveleknél ez lesz a mentőöv.
A ~all vagy a -all a jó zárás?
Mindkettő elfogadható. A -all szigorúbb: a fogadó eldobhatja a nem jogosult forrásból jövő levelet. A ~all gyanúsnak jelöli, de átengedheti. Ha nem vagy biztos benne, hogy minden küldő rendszered fel van sorolva, indulj ~all-lal.
Rögtön p=reject-re állíthatom a DMARC-ot?
Nem javaslom. Ha kimarad egy küldő rendszer, annak minden levele elvész, és nem kapsz róla visszajelzést. Indulj p=none szabállyal és rua= riportcímmel, olvasd a riportokat két-négy hétig, majd lépj quarantine-ra, végül reject-re.
Befolyásolja ez a Google-rangsorolást?
Közvetlenül nem. A rangsorolásban nincs szerepe az e-mail-hitelesítésnek. A kézbesíthetőségre és a márka hamisíthatóságára viszont közvetlen hatása van, ezért kerül be a technikai auditokba.
Aldomainről küldök hírlevelet, arra is kell külön rekord?
SPF-et és DKIM-et az aldomainre kell felvenni. DMARC-ot nem feltétlenül: ha a szervezeti domain rekordjában van sp= tag, az az aldomainekre is érvényes. A magyar KKV-oldalak többségén pont ez a tag hiányzik.

Források

Kapcsolódó fogalmak

A te oldaladon hogy áll a(z) „E-mail-hitelesítés: SPF, DKIM, DMARC”?

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