Podepisujte emaily pomocí DKIM

před 4 měsíci od David Grudl     edit

DKIM (DomainKeys Identified Mail) je technologie pro zvýšení důvěryhodnosti emailů, která také napomáhá odhalení podvržených zpráv. Odeslaná zpráva je SMTP serverem podepsána privátním klíčem domény odesílatele a tento podpis je uložen v hlavičce emailu. Server příjemce porovná tento podpis s veřejným klíčem uloženým v DNS záznamech domény. Tím, že podpis odpovídá, je prokázáno, že e-mail skutečně pochází z odesílatelovy domény a že během přenosu zprávy nedošlo k její úpravě.

Nette\Mail podporuje DKIM od verze 3.1. Použití je velmi jednoduché:

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

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

Nebo můžete využít konfigurační soubor:

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

Selektor je libovolný alphanumerický řetězec s malými písmeny, který je součástí DNS záznamu.

Privátní a veřejný klíč si můžete vygenerovat pomocí openssl:

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

Publikujte veřejný klíč vytvořením TXT záznamu v DNS vaší domény, jehož název bude spojením selektoru, řetězce ._domainkey. a domény. V našem příkladě by to bylo lovenette._domainkey.myweb.com. V některých administracích bývá doména už předvyplněná.

Hodnotou záznamu bude spojení řetězce v=DKIM1;t=s;k=rsa;p= a veřejného klíče, který vykopírujte ze souboru dkim.pub. Odstraňte obalující komentáře -----BEGIN PUBLIC KEY----- a spojte řádky do jednoho dlouhého:

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

Jako kontrolu nastavení DKIM můžete použít třeba službu MailTesteru.

Komentáře (RSS)

  1. Pěkné, ale je dobrý nápad řešit podepisování emailů pomocí DKIM v aplikaci a nikoliv na SMTP serveru? Nepovažoval bych to zrovna za best practice …

    před 4 měsíci · replied [2] David Grudl
  2. #1 xsuchy09 Když máš G Suite se svou doménou, tak jejich googlí SMTP server ti dovoluje každý den odeslat pouze hodně omezený počet emailů, takže musíš používat SMTP server třeba internetového providera a emaily podepisovat sám.

    před 2 měsíci

Chcete-li odeslat komentář, přihlaste se