Podpisovanje e-poštnih sporočil z DKIM

pred 4 leti od David Grudl  

DKIM (DomainKeys Identified Mail) je zanesljiva tehnologija elektronske pošte, ki pomaga tudi pri odkrivanju lažnih sporočil. Poslano sporočilo podpiše strežnik SMTP z zasebnim ključem domene pošiljatelja, ta podpis pa je shranjen v glavi e-pošte. Prejemnikov strežnik primerja ta podpis z javnim ključem, shranjenim v zapisih DNS domene. Z ujemanjem podpisa se dokaže, da elektronsko sporočilo dejansko izvira iz pošiljateljeve domene in da sporočilo med prenosom ni bilo spremenjeno.

Nette\Mail podpira DKIM od različice 3.1. Uporaba je zelo preprosta:

$options = [
	'domain' => 'myweb.com',
	'selector' => 'lovenette',
	'privateKey' => file_get_contents('dkim.priv'),
//	'passPhrase' => '****',
	'testMode' => true,
];

$mailer = new Nette\Mail\SendmailMailer; // or SmtpMailer
$mailer->setSigner(new Nette\Mail\DkimSigner($options));
$mailer->send($mail);

Uporabite lahko tudi konfiguracijsko datoteko:

mail:
	dkim:
		domain: myweb.com
	    selector: lovenette
	    privateKey: %appDir%/cert/dkim.priv
	    passPhrase: ...
	    testMode: ...

Selektor je kateri koli alfanumerični niz z malimi črkami, ki je del zapisa DNS.

Par zasebnega in javnega ključa lahko ustvarite z uporabo openssl:

openssl genrsa -out dkim.priv 1024
openssl rsa -in dkim.priv -pubout > dkim.pub

Javni ključ objavite tako, da v DNS ustvarite zapis TXT za ime gostitelja, ki ga ustvarite z združitvijo izbirnika, dobesednega niza ._domainkey. in imena domene. V našem primeru je to lovenette._domainkey.myweb.com. V nekaterih upravah je domena že vnaprej izpolnjena.

Vrednost zapisa TXT lahko ustvarite tako, da združite dobesedni niz v=DKIM1;t=s;k=rsa;p= in javni ključ, ki ga kopirate iz datoteke dkim.pub. Odstranite okoliške vrstice -----BEGIN PUBLIC KEY----- in ključ zavijte v eno samo dolgo vrstico:

v=DKIM1;t=s;k=rsa;p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDi5y95Mi8FZ8LOSmi7nA/EFhn4a4/Zq3BnnmPFdu1IvduDwMGRrRW5V9FKjXvr4AnUq7eMLRtEdWYRpR9BXLdCWiJ2N4yKJG7SEEir8DMYOGGeqJZoR/kWFiG++GW++sdhfukFflPusJjrWr+4Pc4/qxMSrqUk/rVdsSlTDDRy/QIDAQAB

Za preverjanje nastavitev DKIM lahko uporabite storitev MailTester:https://www.mail-tester.com/spf-dkim-check.