DKIM
Contents
- 1 Úvod
- 2 Čo DomainKeys Identified Mail nie je
- 3 Štandardizácia
- 4 Technické podrobnosti
- 4.1 Základné elementy, selektor, tagy a použité algoritmy
- 4.2 Selektory
- 4.3 Zoznam tag=hodnota
- 4.4 Podpisovacie algoritmy
- 4.5 Kanonická forma správy
- 4.6 Hlavička "DKIM-Signature:"
- 4.7 Príklad hlavičky
- 4.8 Reprezentácia kľúča v DNS TXT zázname
- 4.9 Postup podpisovej strany
- 4.10 Postup verifikačnej strany
- 5 DKIM a DomainKeys
- 6 DKIM a Sender Policy Framework
- 7 Výhody DKIM oproti S-MIME a OpenPGP
- 8 Vzťah k ostatným internetovým štandardom
- 9 Potenciálne hrozby a útoky na DKIM
- 10 Implementácia v rôznych programovacích jazykoch
- 11 Moduly pre mailservery a rozšírenosť vo svete
- 12 Príklad inštalácie a konfigurácie dkimproxy pre postfix
- 13 Ďalšie informácie
- 14 Odkazy
Úvod
Jednoducho povedané, DomainKeys Identified Mail (DKIM) definuje autentizačný mechanizmus s cieľom overiť pôvod a integritu emailových správ. Vo svojej podstate je DKIM založený na báze kryptografickej metódy s verejným kľúčom, pomocou ktorého je odosielateľ správy emailovej pošty autentizovaný na úrovni celej internetovej domény.
DKIM vzniklo ako kombinácia dvoch sprvu samostatných techník - DomainKeys od spoločnosti Yahoo! a Internet Identified Mail, ktorú vyvinula firma Cisco. Jedná se o dve rôzne originálne riešenia, ktoré boli vyvinuté separátne a o ich spojení bolo rozhodnuté v 07/2005.
Popis DomainKeys od Yahoo! by sa dal zjednoušene zhrnúť takto: odosielajúci systém vygeneruje svoj podpis a ten vloží do hlavičky správy. Príjmajúcia čast tento jedinečný reťazec skotroluje prostredníctvom verejného kľúča, ktorý si obstará zo záznamu v DNS (Domain Name System). Na druhú stranu autentizačná technika od firmy Cisco síce tiež využíva šifrovanie, ale na rozdiel od predchádzajúceho prípadu spojuje vytvorenú signatúru so samotnou emailovou správou. V tomto prípade mailový server správu podpíše a vytvorený podpis vrátane verejného kľúča vloží do novo vygenerovanej hlavičky. Príjemca potom overí platnosť správy tým, že si overí, či verejný kľúč využitý k podpisu správy je ten správny.
Technológia DKIM má vlastnosti obidvoch pôvodných riešení a využíva zároveň DNS na autentizáciu odosielateľa a zároveň metódu podpisovania jednolitvých správ. Takto navrhnutý systém preto podáva jednoznačný dôkaz a poskytuje ochranu identite a integrite emailových správ a ich odosielateľom. Úspešne teda asistuje pri celosvetovom boji proti spamu a phisingu a naviac zaručuje zachovanie funkcie elektronickej pošty, tak ako ju poznáme dnes. Bojovníci proti spamu a phisingu vytiahli do boja so systémom, ktorý pozitívne zvýhodňuje slušných komunikujúcich, namiesto nekonečnej penalizácie spammerov a odosielateľov nevyžiadanej pošty.
Medzi základné ciele DKIM systému patrí automatizované, pre koncového uživateľa transparentné overovanie obsahu správy, ktoré môže byť delegované na tretiu stranu. To všetko za minimálnych nákladov spojených s nasadením, vývojom a použitím.
Čo DomainKeys Identified Mail nie je
- DKIM neposkytuje žiadne záruky o faktickej identite podpisujúceho.
- DKIM nepredpisuje žiadne špecifické reakcie pri úspešnom resp. neúspešnom overení podpisu. Tieto reakcie (napr. odmietnutie správy, zmena predmetu správy, umiestnenie do špeciálnej zložky v schránke, whitelist, atp.) musí zabezpečiť antispamová engina mailservru.
- DKIM neposkytuje ochranu správy po jej prijatí.
- DKIM nechráni pred preposlaním, znovuodoslaním či odpovedi na správu, ktorá už má validný podpis. Preto, je teoreticky možné zmeniť príjemcu bez vedomia odosielateľa
Štandardizácia
Systém DKIM sa momentálne nachádza v štádiu štandardizácie IETF. Boli vypracované podrobné štúdie a analýzy nasadenia, použitia v praxi, analýza bezpečnosti, identifikované potenciálne nebezpečia a sú pripravené podklady pre vývojárov, integrátorov a správcov mailových serverov.
Pracovná skupina, ktorá sa touto problematikou zaoberá zhrnula svoj význam, ciele a plán práce vo svojej charte.
Pre výskumníkov a širsiu odbornú verejnosť bol zriadený diskusný list, ietf-dkim, ktorý centralizuje pripomienky, návrhy a koordinuje úsilie.
Na oficiálnych stránkach projetku zverejnila pracovná skupina všetky dôležité štandardizačné dokumenty a koncepy:
- Koncept DomainKeys Identified Mail: draft-ietf-dkim-base
- Metóda DKIM pre odosielateľov: draft-allman-dkim-ssp:
- Analýza bezpečnosti DKIM: draft-ietf-dkim-threats
Na téma DKIM a širsie poňaie bezpečnosti emailovej komunikácie sa usporiadali veľké odborné konferencie v Paríži 08-2005 a Vancouveri 11-2005.
Ďalšie, menšie odborné konferencie, semináre a workshopy priebiehajú kontinuálne a o ich konaní sa je možné dočítať na oficiálnych stránkach projektu a pracovnej skupiny.
Technické podrobnosti
Základné elementy, selektor, tagy a použité algoritmy
Pojem selektoru, zoznam použitých tagov, využitie kryptografických algoritmov sú súčasťou konceptuálneho návrhu DKIM a preto je dôležité s nimi pracovať v kontexte podpisovania a overovania podpisu v rámci konštrukcie DKIM. Nie sú to pojmy, ktoré sa priamo viažu na účastníkov DKIM, ale k samotnému systému DKIM ako takému.
Selektory
Aby bolo možné paralelne používať niekoľko verejných kľúčov pre podpisovanie jednej domény, priestor mien kľúčov je rozdelený použitím "selektorov". Napríklad selektory môžu indikovať polohu kancelárie ("trojanova", "brehova"), pobočku ("decin", "praha", "rez"), čas podpisu ("cerven2006", "srpen2006"), či dokonca jednotlivého uživateľa.
Selektory môžu obsahovať bodku (".") a znamená oddelovač komponetov. Ak sú kľúče a seletory uložené v DNS záznamoch, "bodka" znamená oddelenie subdomény. Sub-selektory môžu byť použité napríklad na kombinovanie dátumu a miesta polohy ("cerven2006.praha"). Vlastnosť selektoru umožňujúca jednoduché delenie na subselektory môže byť využitá pri delegovaní časti podpisových práv.
Počet verejných kľúčov a korešpondujúcich selektorov pre doménu nie je ničím obmedzený a záleží výhradne na správcoch domény a prípadne veľkosti prevádzky. Okrem administratívneho pohodlia, využitie sub-selektorov umožnuje pravidelnú zmenu verejného kľúča (napr. podľa dátumu) a teda k celkovému zvýšeniu bezpečnosti.
Zoznam tag=hodnota
DKIM používa jednoduchú syntax "tag=hodnota" hneď v niekoľkých situáciách (v poštových správach, v záznamoch DNS, atp.). Hodnoty sú reťazce obsahujúce buď text v base64, obyčajný text (plaintext) alebo text tlačiteľných znakov podľa definície v MIME RFC2045. Meno tagu pritom udáva spôsob kódovania hodnoty. Žiadne kódovanie však nesmie obsahovať znak ";", ten je vyhradený na oddelenie tagov.
Pre prácu s tagami platia nasledújúce doporučenia: Všetky tagy a ich hodnoty musia byť interpretované ako case-sensitive. V zozname tagov sa nemie vyskytovať duplicitne pomenovaný tag a ak sa v hodnote tagu vyskytne prázdny znak, musí byť zachovaný. Neznáme tagy sa ignorujú. Tag ktorý má prázdnu hodnotu, nie je to isté ako vynechaný tag. Vynechaným tagom sa priradzuje defaultná hodnota.
Podpisovacie algoritmy
Koncept DKIM umožňuje použiť viacero podpisovacích/verifikačných algoritmov. Dva algoritmy sú primo definované v špecifikácii, a to rsa-sha1 a rsa-sha256. Algoritmus rsa-sha256 je default, tj. je použitý vo všetkých prípadoch, keď nie je uvedené inak. Verifikačná strana musí vždy podporovať oba algoritmy. Podpisová strana musí podporovať vždy aspoň rsa-sha256. Na oba algoritmy rsa-sha1 i rsa-sha256 sú kladené štandardné bezpečnostné nároky podľa definícií v RFC3447. Do budúcnosti sa samozrejme počita s nasadením iných, nových kryptografických algoritmov.
Voľba dĺžky kľúča je individuálna pre každého správcu DKIM systému. Koncept DKIM obsahuje niekoľko doporučení ako optimálne zvoliť dĺžku kľúča pre zachovanie rýchlosti šifrovania a vhodného rizika. Pre daľsie informácie použite RFC3766, ktoré obsahuje na toto téma podrobnú analýzu.
Kanonická forma správy
Empirické pozorovania dokazujú, že niektoré nekorektné mailservery môžu pri prenose emailovej správy zmeniť jej obsah a tak zneplatniť podpis. Na túto problematiku sa líšia názory. Zatiaľčo veľká väčšina bežných uživateľov sa zhodne na tom, že jemné modifikácie obsahu správy sú nepodstatné, nájdu sa aj takí, ktorý omietajú akékoľvek zásahy do správy pri prenose a požadujú okamžité zneplatnenie podpisu a zlyhanie verifikácie. Iní zase povolia zmeny v hlavičkách (definované napr. v RFC2822), ale zmeny v tele správy sú pre nich neprípustné. Kanonizácia správy teda jednoducho znamená prípravu na podpis či verifikáciu a určuje hranice povolených zmien pri prenose správy. Systém DKIM preto ponúka dve kanonické formy elektronickej správy a jej hlavičky:
- simple: defaultná jednoduchá kanonická forma, ktorá netoleruje skoro žiadne modifikácie,
- relaxed: uvoľnená kanonická forma, ktorá toleruje bežné modifikácie ako napr. nahradenie prázdnych znakov, či zmenu formátovania
Verifikačná strana musí podporovať obe kanonické formy elektronickej správy, podpisová strana aspoň defaultnú jednoduchú kanonizáciu.
Hlavička "DKIM-Signature:"
Podpis emailu je uložený v hlavičke "DKIM-Signature:". Táto hlavička obsahuje celý podpis a data, ktoré sú potrebné pre vyzdvinutie verejného kľúča. Hlavička "DKIM-Signature:" by mala byť umiestnená ako prvá, tj. pred všetkými ostatnými hlavičkami emailovej správy.
Následuje prehľadná tabuľka povolených tagov v hlavičke "DKIM-Signature:"
Tag | Názov | Hodnota | Popis | Poznámka |
---|---|---|---|---|
v= | verzia | numerická | Tag popisuje verziu špecifikácie DKIM. | povinný, aktuálna hodnota 0.2 |
a= | algormitmus | plaintext | Algoritmus použitý na generovanie podpisu rsa-sha1 alebo rsa-sha256 | povinný |
b= | podpis | base64 | Data obsahujúce podpis | povinný |
bh= | body hash | base64 | Data obsahujúce hash tela správy | povinný |
c= | kanonizácia | plaintext | Definuje kanonickú formu správy | voliteľný, default=simple |
d= | doména | plaintext | Názov domény podpisujúcej entity | povinný |
h= | hlavičky | plaintext | Zoznam hlavičiek oddelených ":, ktoré boli podpísané | voliteľný |
l= | dĺžka správy | numerická | Dĺžka podpísanej správy | voliteľný, default=celá správa |
q= | dotazy | plaintext | Obsahuje zoznam metód dotazov na vyzdvihnutie verejného kľúča | voliteľný, default=dns-txt |
i= | identita | plaintext | Indentita odosielateľa | voliteľný |
s= | selektor | plaintext | Selektor deliaci priestor doménového mena ktoré sa definuje v d= | povinný |
t= | timestamp | plaintext | Časová značka podpisu | doporučený, default=neznáme |
x= | expirácia | plaintext | Časová expirácia podpisu | doporučený, default=nikdy |
z= | kopírované hlavičky | plaintext | Zoznam kopírovaných hlavičiek oddelený zvislítkom | doporučený, default=null |
Príklad hlavičky
Nasleduje krátky ilustračný príklad použitia tagov v poli hlavičky DKIM-Signature:
DKIM-Signature:v=0.2; a=rsa-sha1; d=cvut.cz; s=cerven2006 c=simple; q=dns; t=1117574938; x=1118006938; h=from:to:subject:date; z=From:nekdo@cvut.cz|To:novak@cuni.cz| Subject:Jsme=20mistri|Date:June=205,=202006=203:44:08=20PM=20-0700 b=dzdVyOfAKCdLXdJOc9G2q8LoXSlEniSbav+yuU4zGeeruD00lszZ VoG4ZHRNiYzR
Reprezentácia kľúča v DNS TXT zázname
Pre vyzdvihutie verejného kľúča z DNS, sú dôležité najmä tagy q=, d=, s= (prípadne aj i=). Tie definujú spôsob ako, miesto kde a selektor verejného kľúča pre doménu d=. DKIM špecifikácia obsahuje doporučenie, ako najlepšie skladovať, reprezentovať a uvádzať DKIM záznamy do TXT DNS záznamu. Navrhuje sa používať opäť metódu tag=hodnota. Nasledujúca tabuľka vysvetľuje použite jednotlivých tagov v TXT DNS:
Tag | Názov | Hodnota | Popis | Poznámka |
---|---|---|---|---|
v= | verzia | plaintext | Verzia DKIM záznamu | doporučený, default=DKIM1 |
g= | granularita | plaintext | Granularita kľúča | voliteľný, default=* |
h= | hašovacie algoritmy | plaintext | Povolené hašovacie algoritmu | nepovinný, default=všetky |
k= | typ kľúča | plaintext | Definuje typ uskladneného kľúča | nepovinný, default=rsa |
n= | poznámky | quot.-print. | Poznámky pre ľudskú obsluhu DNS | nepovinný |
p= | verejný kľúč | base64 | Data obsahujúce verejný kľúč | povinný |
s= | typ služby | plaintext | Definuje služby na ktoré sa DKIM použije (definované sú dve= email,* | ) nepovinný, default=všetky |
t= | značky | plaintext | Značky, y=testovací provoz DKIM, neznáme značky sa ignorujú | nepovinný |
Postup podpisovej strany
- Určiť či má správa byť podpísaná a ak áno tak kým
- Vybrať súkromný kľúč a korešpondujúci selektor (A)
- Normalizovať správu kvôli prenosovým konverziám, vybrať vhodnú kanonickú formu správy
- Vybrať hlavičky ktoré budú podpísané
- Vypočítať hash tela správy a vygenerovať podpis (B)
- Vložiť hlavičku "DKIM-Signature:"
Postup verifikačnej strany
- Extrahovať podpis z prijatej emailovej správy
- Zaobstarať verejný kľúč z DNS TXT záznamu pre doménu (C)
- Vypočítať verfikačný hash podľa zistených informácií o type použitého algoritmu
- Vygenerovať a predať výsledky overenia dalším programom
- Interpretovať výsledky v svetle konkrétych pravidiel a podniknúť kroky, ako napríklad označiť správu ako spam, odmietnuť doručenie, umiestniť správu do špeciálneho adresára, použiť greylisting, ... (D)
DKIM a DomainKeys
DomainKeys ako jeden z podkladových projektov pre systém DKIM má niekoľko zásadných rozdielov, ako filozofických tak aj technických.
Filozofické rozdiely
- DKIM rozšírilo DNS DK záznam, ktorým povoľuje pridanie niekoľkých parametrov.
- DKIM umožňuje scenár v ktorom sa podpisovateľ a autor správy líšia. Toto rozšírenie, umožnuje preniesť podpisovaciu procedúru na autorizovanú dôveryhodnú tretiu stranu a zároveň umožnuje popisovať správy uživateľom, ktorý sú inak nezávislí na doménovom mene autora správy. Na druhú stranu koncept však počíta s možnosťou reštrikcie podpisového kľúča len na určité typy služieb (ako napr. email) a následnú kontrolu delegovaných tretích strán
- DKIM si samo podpíše hlavičku "DKIM-Signature" a tak ju chráni pred modifikáciami
- Kvôli rôznych prenosovým systémom elektronickej pošty musí DKIM spracovávať data správy v kanonickej forme (napr. zaobchádzanie s tabulátormi, medzerami, atp.). DKIM proti DomainKeys predstavilo "relaxed canonicalization" namiesto "nofws"
- Originálny koncept DomainKeys dovoľoval zúženie použitia podpisového kľúča na jednolivú poštovú schránku (uzivatel@domena.cz), DKIM navyše počíta s podporou zástupných znakov (wildcards) v názvoch schránok (napr. "uzvatel+*"). Takáto podpora zjednoduší dnes bežné, i keď neoficiálne praktiky subadresácie a kategorizácie uživateľov elektronickej pošty vo firmách
- DKIM musí explicitne vymenovať všetky použité hlavičky, ktoré boli podpísané. Takéto konzervatívne vylepšenie je navyšekorektné a je robustnejšie pri prenose cez neštandardné mailservery
- DKIM podporuje časové odozvu podpisu (signature timeout). Je teda možné, aby súčastou podpisu bola aj explicitná doba odozvy DNS servera na uspokojenie dotazov na podpisový kľúč.
- Návrh DKIM obsahuje spôsob, ako spracovávať duplicitné hlavičky a povoľuje nastavenie limitov na dĺžku správy
Technické rozdiely
- Kvôli odlíšeniu od DomainKeys, DKIM používa na uskladnenie podpisu inú hlavičku podľa RFC2822
- DKIM má rozdelenú kanonalizáciu hlavičky a tela správy
- DKIM umožňuje použiť viac-písmenné názvy tagov
- DKIM nepodporuje hlavičku "DomainKey-X509:"
- Na miestach kde DomainKeys vyžadoval skalár, DKIM používa polia oddelené stredníkom (napr. zoznam metód hľadania kľúča a atribút t=)
- DKIM povoľuje kopírovanie orginálnych hlavičiek a ich hodnôt
- Uzivateľ DKIM má možnosť obmedziť dĺžku kľúčov na hashovanie algoritmov a to ako v zozname, tak v záznamoch DNS
DKIM a Sender Policy Framework
Jednoducho povedané, tieto techniky sa vzájomne výborne dopĺňajú. Z nadsázkou sa dá povedať, že kde výborne funguje DKIM tam má problémy SPF (Sender Policy Framework) a naopak. Naštastie DKIM a SPF môžu pracovať paralelne a vzájomne sa vhodne dopĺňať.
SPF podobne ako DKIM si kladie za cieľ odstrániť možné podvhry pri odosielaní mailu. Dosahuje toho tak, že doména vo svojom TXT zázname definuje, ktoré servery sú povolené odosielať elektronické správy s adresou odosielateľa v tejto doméne. Maily z ostatních domén sú považované za falzifikáty. SPF podobe ako DKIM definuje celý systém ako servery špecifikovať - pomocou rozsahov IP, MX záznaov, atp. U jednolivých pravidiel je možné naviac špecifikovať prefix, podľa ktorého sa pozná, čo sa bude v negatívnom prípade s mailom diať (odmietnutie, označenie ako spam, ...)
Narozdiel od DKIM, ktoré ako počíajú s určením odosielateľa len z hlavičky emailovej správy (hlavičky Sender: a From:), SPF berie ako primárne údaje z SMTP serveru (z príkazov HELO a MAIL FROM:)
Klady a zápory SPF proti DKIM
Klady a zápory SPF s prihliadnutím ku DKIM sa väčšinou zhŕňajú nasledovne:
- - všetci odosielatela musia používať výhradne niektorý z oficiálnych odosielacích SMTP serverov domény
- - SPF využíva TXT záznam domény ako takej, a to nie je moc čisté
- + jednoduchšie zavedenie autorizácie ako DKIM, stačí vytvoriť záznam v DNS
- + dovoľuje zahodiť správu po špecifikovaní Mail From a nemusí sa prenášať celá
- + SPF je menej náročné na CPU
- - celkovo je však kvôli väčšiemu počtu DNS lookupov pomalejšie.
Dá sa však zhrnúť, že SPF a DKIM poskytujú rôzne informácie a preto sa spoľahlivo dopĺňajú. Zatiaľčo SPF overuje faktický pôvod (miesto odoslania) správy, DKIM sa spolieha na podpis a integritu.
Výhody DKIM oproti S-MIME a OpenPGP
DKIM je založené na doménových menách a nie na kompletnej emailovej adrese. Preto je podpisovanie kontrolované administrátorom domény a nie jednotlivým uživateľom.
DKIM používa samopodpísané certifikáty pre DNS. Pretože je rozsah DKIM limitovaný na použitie v elektronickej forme, nevyžaduje silné dlhodobé certifikáty vydané certifikačnými autoritami.
S/MIME a OpenPGP sú techniky zamerané na dlhodobejšiu osobnú ochranu, preto obsahujú jemnejšie mechanizmy identifikácie jednolivého uživateľa.
Obe S/MIME a OpenPGP so svojej podstaty vyžadujú modifikáciu tela správy. DKIM nemodifikuje telo správy. DKIM umiestni do hlavičky parametrické údaje, ktoré sú pred bežným príjemcom elektronickej správy ukryté a sú využité len mailservrami. DKIM sa pre túto vlastnosť často nazýva "neviditeľná" technika.
Vzťah k ostatným internetovým štandardom
Pretože DKIM je implementované v súlade s RFC 2822 a rešpektuje pravidlá vytvárania DNS záznamov je DKIM spätne kompatibilné s existujúcom emailovou infraštruktúrou. Je navyše transparetné aj pre existujúce emailové systémy ktoré nepodporujú DKIM.
DKIM bolo navrhnuté tak, aby bolo kompatibilné zo všetkými ďalším vylepšeniami systému elektronickej pošty. DKIM je plne kompatibilnés SPF, S/MIME, OpenPGP a novým návrhom bezpečného DNS DNSSEC.
Potenciálne hrozby a útoky na DKIM
Zhrnutie predpovedaných útokov na podpisy DKIM:
Popis | Riziko | Pravdepodobnosť |
---|---|---|
Krádež súkromého kľúča domény | vysoké | malá |
Krádež delegovaného súkromného kľúča | stredné | stredná |
Extrakcia súkromného kľúča pomocou postranných kanálov | vysoké | malá |
Útok typu "chosen message" | malé | stredná |
Odpoveď pomocou podpísanej správy | malé | vysoká |
Útok odmietnutím verifikačnej služby | vysoké | stredná |
Útok odmietnutím služby obstaravajúcej kľúče | vysoké | stredná |
Zneužitie kanonalizácie | malé | stredná |
Zneužite dĺžky tela správy | stredné | stredná |
Použitie zneplatnených kľúčov | stredné | malá |
Zkompromitovanie servera správy kľúčov | vysoké | malá |
Falizifikácia odpovedí verifikačnej služby | stredné | stredná |
Publikovanie nepravých kľúčov a/alebo podpisov | vysoké | malá |
Kryptografické slabiny generovania podpisu | vysoké | malá |
Útok z vnútra firmy - insider attack | vysoké | stredná |
Útok skúškou verifikácie | stredné | stredná |
Publikovanie kľúča domény vyššieho rádu | vysoké | malá |
Útoky proti pravidlám podpisovania:
Popis | Riziko | Pravdepodobnosť |
---|---|---|
Podobne znejúce meno domény | vysoké | vysoká |
Zneužitie IDN domény | vysoké | vysoká |
Použite viacero From adries | malé | stredná |
Zneužitie podpisov tretích strán | stredné | vysoká |
Falizifikácia odpovedí podpisovacieho algoritmu | stredné | stredná |
Implementácia v rôznych programovacích jazykoch
- Perl:
- moduly dkimproxy a maildkim pre postfix je k dispozícii na http://home.messiah.edu/~jlong/dkimproxy/
- apache spamassassin (len verifikačný proces) je k dispozícii na http://spamassassin.apache.org
- Jazyk C:
- modul dkim-milter pre sendmail je k dispozícii na https://sourceforge.net/projects/dkim-milter/
- modul DKIM-ecelerity ako súčasť komerčného balíku OmniIT
- C++:
- open sourceový DKIM toolkit libdkim, download na http://libdkim.sourceforge.net
- modul pre komerčný mailserver Strongmail
- Delphi a FreePascal:
- komerčné komunikačné riešenie MerakMail server
- freewarová implementácia DKeyEvent k downloadu na http://dev.exhalus.net/domainkeys/
Moduly pre mailservery a rozšírenosť vo svete
Komerčné i nekomerčné firmy, implementujúce DKIM do svojich produktov sú uvedené v nasledujúcej prehľadnej tabuľke. Je isté, že po úplnej štandardizácii, sa počet mailserverov podporujúcich DKIM určite zvýši.
Názov | Modul | web |
---|---|---|
Alt-N Mdeamon | mdaemon, libdkim | http://www.mdaemon.com |
Apache | spamassassin | http://spamassassin.apache.org |
Port25 | powerMTA | http://www.port25.com |
Sendmail | dkim-milter | https://sourceforge.net/projects/dkim-milter/ |
Strongmail | strongmail | https://www.strongmail.com/ |
dkimproxy for Postfix | dkimproxy | http://home.messiah.edu/~jlong/dkimproxy/ |
mail-dkim for Postfix | mail-dkim | http://home.messiah.edu/~jlong/dkimproxy/ |
OmniTI | ecelerity | http://www.omniti.com/ |
Exhalus | DKeyEvent for MailEnable | http://www.mailenable.com/ |
DKeyEvent for SmarterMail | http://www.smartertools.com/Products/SmarterMail/Overview.aspx | |
MerakMail | MerakMail Server | http://www.merakmail.com/merak_instant_antispam/ |
Príklad inštalácie a konfigurácie dkimproxy pre postfix
Tieto inštrukcie popisujú nasadenie dkimproxy pre mailový systém postfix. Verifikačný systém je inštalovaný ako filter typu "before-queue" a podpisovací systém ako filter typu "after-queue". Príchodzia pošta bude obslúžená cez port 25 a odchodzia pošta bude smerovaná na port 587.
Inštalácia
Postup:
- Stiahnite si poslednú stabilnú verziu dkimproxy na http://home.messiah.edu/~jlong/dkimproxy/
- Vyberte kam si prajete inštalovať dkimproxy, napr.
/usr/local/dkfilter
- Z adresára ktorý obsahuje zdrojový kód dkimproxy spusťte konfiguračný skript
./configure
a ako parameter udajte vybrané miesto inštalácie filtra, napr.
./configure --prefix=/usr/local/dkfilter
- Spusťte
make install
. Dkimproxy filter sa nainštaluje do požadovaného adresára. Perlovské skripty budú umiestnené do podadresára /bin/ a súbory modulu do /lib/ - Vytvorte uživateľa alebo skupinu uživateľov pre spúštanie dkfilter, napr.
dkfilter
- Vytvorne spúštací skript pre filter. Môžete použiť pripravený
init-script.sh
Nastavenie a konfigurácia príchodzej (verifikačnej) proxy
Verifikačná proxy používa tieto parametre:
--reject-fail
ak je použitý, príchodzia správa, ktorá zlyhá pri verifikácii bude odmietnutá
--reject-error
ak je použitý, a počas príjmania správy, dôjde k chybe systému, bude vygenerovaná dočasná chyba (4xx), a bude umožnené znovu doručiť spávu neskôr
--hostname=HOSTNAME
určuje hostname použité v hlavičke výsledkov autentifikácie, ktorá bude pridaná k verifikovanej správe
Ručný štart verifikačnej proxy:
dkimproxy.in 127.0.0.1:10025 127.0.0.1:10026
Proxy bude odpočúvať port 10025 a prenášať cez port 10026.
Konfigurácia verifikačnej proxy ako postfix filter typu "before-queue" pre dkimproxy.in prebieha tak, že príchodzí SMTP trafic (na port 25) je presmerovaný proxy na port 10025 a forwardované spojenia sú príjmané na porte 10026.
/etc/postfix/master.cf: # # Before-filter pre SMTP server. Prijmi spravy z interneru a # preposli ich na content filter na localhost:100025 # smtp inet n - n - - smtpd -o smtpd_proxy_filter=127.0.0.1:10025 -o smtpd_client_connection_count_limit=10 # # After-filter pre SMTP server. Prijmi spravy od DKIM verifikacnej proxy # na localhost:10026. # 127.0.0.1:10026 inet n - n - - smtpd -o smtpd_authorized_xforward_hosts=127.0.0.0/8 -o smtpd_client_restrictions= -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o smtpd_data_restrictions= -o mynetworks=127.0.0.0/8 -o receive_override_options=no_unknown_recipient_checks
Po úpravách v súbore reloadujte postfix príkazom "postfix reload"
Nastavenie a konfigurácia podpisovacej proxy
Podpisovacia proxy potrebuje prístup ku privátnym kľúčom, potrebuje vedieť aký selektor a aká doména sa má použiť pri podpisovaní. Tieto nevyhnutne dôležité informácie sú špecifikované ako parametre príkazovej riadky pre dkimproxy.out
Postup vygenerovania páru kľúčov a publikovanie verejného na DNS
- Generuj súkromný a verjný kľúč pomocou OpenSSL:
openssl genrsa -out private.key 1024 openssl rsa -in private.key -pubout -out public.key
Tieto príkazy vygenerujú v aktuálnom adresári súbory private.key and public.key, ktoré obsahujú súkromný a verejný kľúč.
- Vyberte názov selektoru napr.
praha01
- Vložte verejný kľúč do DNS, do záznamu vašej domény použitím vybraného selektoru. Vezmite obsah súboru pubkey.pem, odstráňte PEM hlavičku, patičku a z riadkov v súbore vytvorte jeden dlhý riadok. Potom vytvorte záznam TXT, ktorý by mal vyzerať nasledovne:
praha01._domainkey IN TXT "k=rsa; p=eRDQwwERJK ... OprwIDBQAA; t=y"
parameter p= obsahuje verejný kľúč ako dlhý reťazec písmen.
Konfigurácia parametrov príkazovej riadky pre dkimproxy.out:
--reject-error
ak je použitý, a počas príjmania správy, dôjde k chybe systému, bude vygenerovaná dočasná chyba (4xx), a bude umožnené znovu poslať spávu neskôr, alebo odoslať nepodpísanú
--keyfile=KEYFILE
povinný parameter, cesta k súboru s privátnym kľúčom
--selector=SELECTOR
povinný parameter, meno použitého selektoru
--domain=DOMAIN
povinný paramter, špecifikuje ktoré domény sú podpisované, viac domén sa oddeľuje pomocou čiarky (,)
--method=METHOD
metóda kanonizácie a výberu kanonickej formy správy, ak nie je uvedené použije sa simple.
Ako príklad použitia:
dkimproxy.out --keyfile=/usr/local/dkfilter/private.key --selector=praha01 \ --domain=cisco.cz,yahoo.cz --method=relaxed \ 127.0.0.1:10027 127.0.0.1:10028
Nakoniec je potrebné nakofigurovať postifx tak, aby filtroval odchodziu autorizovanú poštu cez dkimproxy.out na port 10027. Následujúci príklad ukazuje ako nastaviť poštu odosielanú cez port 587 tak, aby šla cez filter typu "after-queue", ktorý správu podpíše DKIM podpisom.
/etc/postfix/master.cf: # # zmenit defaultne nastavenie na specificky obsahovy filter # a obmezit na lokalnych a autorizovanych klientov # submission inet n - n - - smtpd -o smtpd_etrn_restrictions=reject -o smtpd_sasl_auth_enable=yes -o content_filter=dksign:[127.0.0.1]:10027 -o receive_override_options=no_address_mappings -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject # # nastavit umiestnenie DKIM podpisovej proxy # dksign unix - - n - 10 smtp -o smtp_send_xforward_command=yes -o smtp_discard_ehlo_keywords=8bitmime # # sluzba pre akceptovanie sprav od DKIM podpisovej proxy # 127.0.0.1:10028 inet n - n - 10 smtpd -o content_filter= -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks -o smtpd_helo_restrictions= -o smtpd_client_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o mynetworks=127.0.0.0/8 -o smtpd_authorized_xforward_hosts=127.0.0.0/8
Po úpravách v súbore /etc/postfix/master.cf
reloadujte postfix príkazom "postfix reload"