Firma le email usando DKIM

5 anni fa Da David Grudl  

DKIM (DomainKeys Identified Mail) è una tecnologia per aumentare l'affidabilità delle email, che aiuta anche a rilevare messaggi contraffatti. Il messaggio inviato viene firmato dal server SMTP con la chiave privata del dominio del mittente e questa firma viene memorizzata nell'header dell'email. Il server del destinatario confronta questa firma con la chiave pubblica memorizzata nei record DNS del dominio. Se la firma corrisponde, viene dimostrato che l'email proviene effettivamente dal dominio del mittente e che il messaggio non è stato modificato durante la trasmissione.

Nette\Mail supporta DKIM dalla versione 3.1. L'utilizzo è molto semplice:

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

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

Oppure puoi utilizzare il file di configurazione:

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

Il selettore è una stringa alfanumerica arbitraria in minuscolo che fa parte del record DNS.

Puoi generare la chiave privata e pubblica utilizzando uno dei servizi online (ad es. easydmarc) o localmente tramite openssl:

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

Pubblica la chiave pubblica creando un record TXT nel DNS del tuo dominio, il cui nome sarà una combinazione del selettore, della stringa ._domainkey. e del dominio. Nel nostro esempio, sarebbe lovenette._domainkey.myweb.com. In alcune amministrazioni, il dominio potrebbe essere già precompilato.

Il valore del record sarà una combinazione della stringa v=DKIM1;t=s;k=rsa;p= e della chiave pubblica, che puoi copiare dal file dkim.pub. Rimuovi i commenti di delimitazione -----BEGIN PUBLIC KEY----- e unisci le righe in una lunga:

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

Per verificare la configurazione DKIM, puoi utilizzare ad esempio il servizio di MailTester.