Semnarea e-mailurilor folosind DKIM

acum 5 ani de David Grudl  

DKIM (DomainKeys Identified Mail) este o tehnologie pentru creșterea credibilității e-mailurilor, care ajută, de asemenea, la detectarea mesajelor falsificate. Mesajul trimis este semnat de serverul SMTP cu cheia privată a domeniului expeditorului, iar această semnătură este stocată în antetul e-mailului. Serverul destinatarului compară această semnătură cu cheia publică stocată în înregistrările DNS ale domeniului. Dacă semnătura se potrivește, se demonstrează că e-mailul provine într-adevăr din domeniul expeditorului și că mesajul nu a fost modificat în timpul transmiterii.

Nette\Mail suportă DKIM începând cu versiunea 3.1. Utilizarea este foarte simplă:

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

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

Sau puteți utiliza fișierul de configurare:

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

Selectorul este un șir alfanumeric arbitrar cu litere mici, care face parte din înregistrarea DNS.

Puteți genera cheia privată și publică folosind unul dintre serviciile online (de exemplu, easydmarc) sau local folosind openssl:

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

Publicați cheia publică creând o înregistrare TXT în DNS-ul domeniului dvs., al cărei nume va fi o combinație a selectorului, șirului ._domainkey. și domeniului. În exemplul nostru, ar fi lovenette._domainkey.myweb.com. În unele interfețe de administrare, domeniul poate fi deja precompletat.

Valoarea înregistrării va fi o combinație a șirului v=DKIM1;t=s;k=rsa;p= și a cheii publice, pe care o copiați din fișierul dkim.pub. Eliminați comentariile înconjurătoare -----BEGIN PUBLIC KEY----- și uniți liniile într-una singură lungă:

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

Pentru a verifica setările DKIM, puteți utiliza, de exemplu, serviciul MailTester.