Podpisujte e-pošto z DKIM

pred 5 leti od David Grudl  

DKIM (DomainKeys Identified Mail) je tehnologija za povečanje verodostojnosti e-pošte, ki pomaga tudi pri odkrivanju ponarejenih sporočil. Poslano sporočilo je s strani strežnika SMTP podpisano z zasebnim ključem domene pošiljatelja, ta podpis pa je shranjen v glavi e-pošte. Strežnik prejemnika primerja ta podpis z javnim ključem, shranjenim v zapisih DNS domene. Če se podpis ujema, je dokazano, da e-pošta dejansko izvira iz domene pošiljatelja in da med prenosom sporočila ni prišlo do sprememb.

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; // ali SmtpMailer
$mailer->setSigner(new Nette\Mail\DkimSigner($options));
$mailer->send($mail);

Ali pa lahko uporabite konfiguracijsko datoteko:

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

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

Zasebni in javni ključ lahko ustvarite z eno od spletnih storitev (npr. easydmarc) ali lokalno z openssl:

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

Objavite javni ključ tako, da ustvarite zapis TXT v DNS vaše domene, katerega ime bo sestavljeno iz selektorja, niza ._domainkey. in domene. V našem primeru bi bilo to lovenette._domainkey.myweb.com. V nekaterih administracijah je domena že predizpolnjena.

Vrednost zapisa bo sestavljena iz niza v=DKIM1;t=s;k=rsa;p= in javnega ključa, ki ga kopirajte iz datoteke dkim.pub. Odstranite oklepajoče komentarje -----BEGIN PUBLIC KEY----- in združite vrstice v eno dolgo:

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

Za preverjanje nastavitev DKIM lahko uporabite na primer storitev MailTesterja.

David Grudl Founder of Uměligence and creator of Nette Framework, the popular PHP framework. Since 2021, he's been fully immersed in artificial intelligence, teaching practical AI applications. He discusses weekly tech developments on Tech Guys with his co-hosts and writes for phpFashion and La Trine. He believes AI isn't science fiction—it's a practical tool for improving life today.