Podepisujte emaily pomocí DKIM
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
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 …
#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.
Chcete-li odeslat komentář, přihlaste se