Erinevus lehekülje "DKIM ja DMARC" redaktsioonide vahel

Allikas: Kuutõrvaja
P
P
10. rida: 10. rida:
 
DKIM mõte on selles, et väljuvatele kirjadele pannakse päisesse lisainformatsioon kirja allkirjastamise kohta. Käesoleval hetkel kasutatakse RSA võtmeid (vaikimisi 1024bit). Väga suuri võtmeid ei soovitata kasutada, kuna avalik võti ei pruugi ära mahtuda UDP vastusesse*. Lisaks võib suurem võti põhjustada suurt koormust arvuti protsessorile (olenevalt muidugi kirjade "käibest"/mahust).
 
DKIM mõte on selles, et väljuvatele kirjadele pannakse päisesse lisainformatsioon kirja allkirjastamise kohta. Käesoleval hetkel kasutatakse RSA võtmeid (vaikimisi 1024bit). Väga suuri võtmeid ei soovitata kasutada, kuna avalik võti ei pruugi ära mahtuda UDP vastusesse*. Lisaks võib suurem võti põhjustada suurt koormust arvuti protsessorile (olenevalt muidugi kirjade "käibest"/mahust).
  
DKIM seadistamisel on alustuseks vaja DKIMi takrvara seadistada ja seejärel nimeserverisse lisada oma domeenile TXT kirje.
+
DKIM seadistamisel on alustuseks vaja DKIMi takrvara seadistada ja seejärel nimeserverisse lisada oma domeenile TXT kirje (kui soovid ise ka allkirjastama hakata väljuvaid kirju).
TXT kirje peab olema kujul: selector._domainkey.domeen.ee ja selle sisu
+
TXT kirje peab olema kujul: selector._domainkey.uusdomeen.ee ja selle sisu
  "v=DKIM1; k=rsa; s=email; "avalik võti"
+
  "v=DKIM1; k=rsa; s=email;" "p=avalik võti base64 encodingus"
  
 
<nowiki>*</nowiki> - Siit tuleb ka välja UDP vastuse mõte - kuna DNS päringud on UDP, siis peab kogu TXT päring mahtuma UDP vastusesse ära.
 
<nowiki>*</nowiki> - Siit tuleb ka välja UDP vastuse mõte - kuna DNS päringud on UDP, siis peab kogu TXT päring mahtuma UDP vastusesse ära.
  
 +
== TXT kirje komponendid ==
 +
* v= - versioon, hetkel ainuke valiidne väärtus DKIM1
 +
* k= - võtmetüüp, hetkel ainuke valiidne väärtus rsa
 +
* s= - teenuse tüüp, vaikimisi on "*", võimalik ka "email"
 +
* p= - avalik võti base64 encodingus
 +
 +
"Lihtsam" kirjaviis oleks:
 +
 +
"v=DKIM1; p=võti..."
 +
 +
DKIMi puhul lähtutakse kahest eraldi kirja mõlemast sektsioonist: header ja body. Mõlema jaoks on võimalik reegel kirjutada - kas range/leebe.
  
 
== OpenDKIM seadistamine ==
 
== OpenDKIM seadistamine ==
30. rida: 41. rida:
 
=== Konfiguratsioon ===
 
=== Konfiguratsioon ===
  
Vaikimisi töötab opendkim sign ja verify režiimis. Seda saad muuta Mode parameetriga:
+
Vaikimisi töötab opendkim '''sign''' ja '''verify''' režiimis. Seda saad muuta Mode parameetriga:
 
* sv - sign + verify
 
* sv - sign + verify
 
* v - verify
 
* v - verify
 
* s - sign
 
* s - sign
 +
Vaikimisi piisab verify režiimist, sellisel juhul valideeritakse ainult sissetulevaid kirju. Kui soovid ka oma domeene allkirjastada, pead kasutama sign režiimi lisaks.
  
Lisks on olulised konfiguratsiooniparameetrid SigningTable, KeyTable ja InternalHosts parameetrid.
+
Lisks on olulised konfiguratsiooniparameetrid '''SigningTable''', '''KeyTable''' ja '''InternalHosts'''.
  
 
* SigningTable - sisaldab saatjadomeeni ja võtme vastavust.
 
* SigningTable - sisaldab saatjadomeeni ja võtme vastavust.
 
* KeyTable - sisaldab iga selectori ja domeeni paari ning privaatvõtme asukohta.
 
* KeyTable - sisaldab iga selectori ja domeeni paari ning privaatvõtme asukohta.
 
* InternalHosts - sisaldab domeene/IP-sid, millelt tulnud kirju signeeritakse (ülejäänusid ainult verifitseeritakse).
 
* InternalHosts - sisaldab domeene/IP-sid, millelt tulnud kirju signeeritakse (ülejäänusid ainult verifitseeritakse).
 +
 +
Canonicalization määrab ära kuidas suhtutakse header/body muutumisse. Ehk siis vaikimisi on rangem režiim ('''simple/simple'''). See tähendab, et header/body puhul ei lubata peaaegu mingit ümberkirjutamist.
 +
Soovitusi on kahtepidiseid, aga siin näites on arvestatud pigem sellega, et päiseid võib ümber kirjutada ('''relaxed''') ja sisu mitte ('''simple''')
 +
 +
# kirja header/body jaoks - väärtused simple või relaxed
 +
Canonicalization      relaxed/simple
  
 
=== Uue allkirjastatava tsooni lisamine ===
 
=== Uue allkirjastatava tsooni lisamine ===
  
=== to be done ===
+
Lisa vajadusel InternalHost faili uus kirje.
 +
 
 +
Tekita võtmete jaoks uus kaust (kui juba pole) ja sinna alla loodava domeeni jaoks kaust, näiteks:
 +
 
 +
mkdir -vp /etc/opendkim/keys/uusdomeen.ee
 +
 
 +
Vaheta kausta
 +
 
 +
cd /etc/opendkim/keys/uusdomeen.ee
 +
 
 +
ja tekita uus tsoon käsuga
 +
 
 +
opendkim-genkey --restrict --domain uusdomeen.ee --bits 1024 --selector default
 +
 
 +
võid muuta väärtusi vastavalt vajadusele. Arvesta, et --bits on vaikimisi 1024. Kui kasutad konfis mingit muud MinimumKeyBits suurust, siis pead seda arvestama võtme loomisel.
 +
 
 +
Seepeale tehakse sulle kaks faili (--selector argumendile vastavalt): nimeserveri jaoks TXT kirje ja privaatvõti (default.private ja default.txt).
 +
 
 +
Muuda KeyTable faili, lisades sinna
 +
 
 +
default._domainkey.uusdomeen.ee uusdomeen.ee:default:/etc/opendkim/keys/uusdomeen.ee/default.private
 +
 
 +
Muuda SigningTable faili, lisades sinna
 +
 
 +
uusdomeen.ee default._domainkey.uusdomeen.ee
 +
 
 +
SigningTable faili puhul olen kohanud ka kirjapilti esimeses väljas *@uusdomeen.ee. Oleneb vist sellest, kas konfis on vaikimisi alamdomeenide allkirjastamine ka sees. Ülanäite puhul tehakse (kuna klapib), aga *@ näite puhul pigem mitte, sest et reegel kehtib vaid @uusdomeen.ee puhul (mitte @alamdomeen.uusdomeen.ee).
 +
 
 +
'''Mõlema faili puhul arvesta oma domeeni ja selectori ja kaustapuuga! :)'''
 +
 
 +
Nüüd mine oma nimeserveri haldusesse (või palu seda kellelgi teha) ja täienda seda TXT kirjega:
 +
 
 +
<pre>
 +
default._domainkey.uusdomeen.ee IN TXT ( "v=DKIM1; k=rsa; s=email; "
 +
  "p=avalik_võti_base64_encodingus" )  ;
 +
</pre>
 +
Olen kohanud ka kirjapilti ilma jutumärkideta. Sellisel juhul peaks kogu kirje olema ilma. Selles näites on mõlemad osad omaette jutumärkidega.
 +
 
 +
 
 +
 
  
to be done:
+
=== Näidiskiri ===
* näidiskiri (sh päised)
+
Ühe näidiskirja päisest võib leida
* näidiskäsud
 
  
 +
<pre>
 +
DKIM-Filter: OpenDKIM Filter v2.10.3 mxfilter.uusdomeen.ee 861BF8005D
 +
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=uusdomeen.ee;
 +
s=default; t=1570605036;
 +
bh=LQZPc7Ca6aVneKHX25GlrXx4Xtkwjb0tLZwuCasB0MU=;
 +
h=From:To:Subject:Date;
 +
b=e2QagT5U4OjBPjTA7sHdGDAMR9R/UilD6TOsXavn5C3Kg49mIMZXsYF6XF30U5uS3
 +
uB6GRQZwZDQR6C3R1adTSW4qlgTN3eZzREm8DhNthDTG4nsmucOdSNYsFkQBuTgShJ
 +
V5b/2kOyFAjEeiI9UqIf8gcy6F6uiJhOhKQLQG3Y=
 +
</pre>
  
 
== Probleemid DKIMiga ==
 
== Probleemid DKIMiga ==
 
Kui kasutad rohkem kui ühte väljuvat e-postiserverit sama domeeni kirjade saatmiseks (nt mailchip või mõni muu masspostitustööriist vmt), siis peaksid seadistama kõigile DKIMi kasutamise. Vastasel juhul on osad kirjad varustatud DKIMi päisega ja osad mitte. Kuna aga su nimeserverist tuleb DKIMi vastus - mis osutub valideerimisel valeks - võib saaja kirja kas minema visata või karantiini või junki panna.
 
Kui kasutad rohkem kui ühte väljuvat e-postiserverit sama domeeni kirjade saatmiseks (nt mailchip või mõni muu masspostitustööriist vmt), siis peaksid seadistama kõigile DKIMi kasutamise. Vastasel juhul on osad kirjad varustatud DKIMi päisega ja osad mitte. Kuna aga su nimeserverist tuleb DKIMi vastus - mis osutub valideerimisel valeks - võib saaja kirja kas minema visata või karantiini või junki panna.
  
DKIMi võtmeid võib olla rohkem kui üks ja neid saad eraldada selektoriga.
+
'''DKIMi võtmeid võib olla rohkem kui üks ja neid saad (pead) eraldada selektoriga!'''
  
 
= DMARC =
 
= DMARC =
68. rida: 134. rida:
 
* OpenDMARC - http://www.trusteddomain.org/opendmarc/
 
* OpenDMARC - http://www.trusteddomain.org/opendmarc/
 
* OpenDKIM - http://opendkim.org/
 
* OpenDKIM - http://opendkim.org/
 +
* DKIM RFC4871 - http://dkim.org/specs/rfc4871-dkimbase.html

Redaktsioon: 10. oktoober 2019, kell 15:50

DKIM ja DMARC on kaks venda kolmest (kolmas on SPF, millel on eraldi peatükk SPF_kasutamine_Postfixiga).

DKIM tähendab DomainKeys Identified Mail DMARC tähendab Domain-based Message Authentication Reporting and Conformance

Näites on kasutatud Arch Linuxit, Postfixi ja OpenDKIM ja OpenDMARC tarkvarasid. Eeldatud on, et Postfix on juba esialgselt seadistatud.

DKIM

DKIM mõte on selles, et väljuvatele kirjadele pannakse päisesse lisainformatsioon kirja allkirjastamise kohta. Käesoleval hetkel kasutatakse RSA võtmeid (vaikimisi 1024bit). Väga suuri võtmeid ei soovitata kasutada, kuna avalik võti ei pruugi ära mahtuda UDP vastusesse*. Lisaks võib suurem võti põhjustada suurt koormust arvuti protsessorile (olenevalt muidugi kirjade "käibest"/mahust).

DKIM seadistamisel on alustuseks vaja DKIMi takrvara seadistada ja seejärel nimeserverisse lisada oma domeenile TXT kirje (kui soovid ise ka allkirjastama hakata väljuvaid kirju). TXT kirje peab olema kujul: selector._domainkey.uusdomeen.ee ja selle sisu

"v=DKIM1; k=rsa; s=email;" "p=avalik võti base64 encodingus"

* - Siit tuleb ka välja UDP vastuse mõte - kuna DNS päringud on UDP, siis peab kogu TXT päring mahtuma UDP vastusesse ära.

TXT kirje komponendid

  • v= - versioon, hetkel ainuke valiidne väärtus DKIM1
  • k= - võtmetüüp, hetkel ainuke valiidne väärtus rsa
  • s= - teenuse tüüp, vaikimisi on "*", võimalik ka "email"
  • p= - avalik võti base64 encodingus

"Lihtsam" kirjaviis oleks:

"v=DKIM1; p=võti..."

DKIMi puhul lähtutakse kahest eraldi kirja mõlemast sektsioonist: header ja body. Mõlema jaoks on võimalik reegel kirjutada - kas range/leebe.

OpenDKIM seadistamine

Paigalda DKIM tarkvara kasutades pakihaldust

pacman -Sy opendkim

Tekib töötav konfiguratsioonifail

/etc/opendkim/opendkim.conf

Tutvu sellega ja seadista vastavalt.

Konfiguratsioon

Vaikimisi töötab opendkim sign ja verify režiimis. Seda saad muuta Mode parameetriga:

  • sv - sign + verify
  • v - verify
  • s - sign

Vaikimisi piisab verify režiimist, sellisel juhul valideeritakse ainult sissetulevaid kirju. Kui soovid ka oma domeene allkirjastada, pead kasutama sign režiimi lisaks.

Lisks on olulised konfiguratsiooniparameetrid SigningTable, KeyTable ja InternalHosts.

  • SigningTable - sisaldab saatjadomeeni ja võtme vastavust.
  • KeyTable - sisaldab iga selectori ja domeeni paari ning privaatvõtme asukohta.
  • InternalHosts - sisaldab domeene/IP-sid, millelt tulnud kirju signeeritakse (ülejäänusid ainult verifitseeritakse).

Canonicalization määrab ära kuidas suhtutakse header/body muutumisse. Ehk siis vaikimisi on rangem režiim (simple/simple). See tähendab, et header/body puhul ei lubata peaaegu mingit ümberkirjutamist. Soovitusi on kahtepidiseid, aga siin näites on arvestatud pigem sellega, et päiseid võib ümber kirjutada (relaxed) ja sisu mitte (simple)

# kirja header/body jaoks - väärtused simple või relaxed
Canonicalization      relaxed/simple

Uue allkirjastatava tsooni lisamine

Lisa vajadusel InternalHost faili uus kirje.

Tekita võtmete jaoks uus kaust (kui juba pole) ja sinna alla loodava domeeni jaoks kaust, näiteks:

mkdir -vp /etc/opendkim/keys/uusdomeen.ee

Vaheta kausta

cd /etc/opendkim/keys/uusdomeen.ee

ja tekita uus tsoon käsuga

opendkim-genkey --restrict --domain uusdomeen.ee --bits 1024 --selector default

võid muuta väärtusi vastavalt vajadusele. Arvesta, et --bits on vaikimisi 1024. Kui kasutad konfis mingit muud MinimumKeyBits suurust, siis pead seda arvestama võtme loomisel.

Seepeale tehakse sulle kaks faili (--selector argumendile vastavalt): nimeserveri jaoks TXT kirje ja privaatvõti (default.private ja default.txt).

Muuda KeyTable faili, lisades sinna

default._domainkey.uusdomeen.ee uusdomeen.ee:default:/etc/opendkim/keys/uusdomeen.ee/default.private

Muuda SigningTable faili, lisades sinna

uusdomeen.ee default._domainkey.uusdomeen.ee

SigningTable faili puhul olen kohanud ka kirjapilti esimeses väljas *@uusdomeen.ee. Oleneb vist sellest, kas konfis on vaikimisi alamdomeenide allkirjastamine ka sees. Ülanäite puhul tehakse (kuna klapib), aga *@ näite puhul pigem mitte, sest et reegel kehtib vaid @uusdomeen.ee puhul (mitte @alamdomeen.uusdomeen.ee).

Mõlema faili puhul arvesta oma domeeni ja selectori ja kaustapuuga! :)

Nüüd mine oma nimeserveri haldusesse (või palu seda kellelgi teha) ja täienda seda TXT kirjega:

default._domainkey.uusdomeen.ee	IN	TXT	( "v=DKIM1; k=rsa; s=email; "
	  "p=avalik_võti_base64_encodingus" )  ;

Olen kohanud ka kirjapilti ilma jutumärkideta. Sellisel juhul peaks kogu kirje olema ilma. Selles näites on mõlemad osad omaette jutumärkidega.



Näidiskiri

Ühe näidiskirja päisest võib leida

DKIM-Filter: OpenDKIM Filter v2.10.3 mxfilter.uusdomeen.ee 861BF8005D
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=uusdomeen.ee;
	s=default; t=1570605036;
	bh=LQZPc7Ca6aVneKHX25GlrXx4Xtkwjb0tLZwuCasB0MU=;
	h=From:To:Subject:Date;
	b=e2QagT5U4OjBPjTA7sHdGDAMR9R/UilD6TOsXavn5C3Kg49mIMZXsYF6XF30U5uS3
	 uB6GRQZwZDQR6C3R1adTSW4qlgTN3eZzREm8DhNthDTG4nsmucOdSNYsFkQBuTgShJ
	 V5b/2kOyFAjEeiI9UqIf8gcy6F6uiJhOhKQLQG3Y=

Probleemid DKIMiga

Kui kasutad rohkem kui ühte väljuvat e-postiserverit sama domeeni kirjade saatmiseks (nt mailchip või mõni muu masspostitustööriist vmt), siis peaksid seadistama kõigile DKIMi kasutamise. Vastasel juhul on osad kirjad varustatud DKIMi päisega ja osad mitte. Kuna aga su nimeserverist tuleb DKIMi vastus - mis osutub valideerimisel valeks - võib saaja kirja kas minema visata või karantiini või junki panna.

DKIMi võtmeid võib olla rohkem kui üks ja neid saad (pead) eraldada selektoriga!

DMARC

DMARC seletus

OpenDMARC seadistamine

to be continued

Lingid