Podepisujte emaily pomocí DKIM

před 5 lety od David Grudl  

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

  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 5 lety · 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 5 lety

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