Signer les e-mails avec DKIM

il y a 4 ans de David Grudl  

DKIM (DomainKeys Identified Mail) est une technologie de messagerie électronique fiable qui permet également de détecter les messages usurpés. Le message envoyé est signé par le serveur SMTP avec la clé privée du domaine de l'expéditeur et cette signature est stockée dans l'en-tête du courriel. Le serveur du destinataire compare cette signature avec la clé publique stockée dans les enregistrements DNS du domaine. En faisant correspondre la signature, il est démontré que le courriel provient effectivement du domaine de l'expéditeur et que le message n'a pas été modifié pendant sa transmission.

Nette\Mail supporte DKIM depuis la version 3.1. L'utilisation est très simple :

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

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

Ou vous pouvez utiliser le fichier de configuration :

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

Le sélecteur est une chaîne alphanumérique minuscule qui fait partie de l'enregistrement DNS.

Vous pouvez générer une paire de clés privée et publique en utilisant openssl :

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

Vous publiez la clé publique en créant un enregistrement TXT dans le DNS pour le nom d'hôte créé en concaténant le sélecteur, la chaîne littérale ._domainkey. et le nom de domaine. Dans notre exemple, il s'agit de lovenette._domainkey.myweb.com. Dans certaines administrations, le domaine est déjà pré-rempli.

La valeur de l'enregistrement TXT peut être créée en concaténant la chaîne littérale v=DKIM1;t=s;k=rsa;p= et la clé publique que vous copiez du fichier dkim.pub. Supprimez les lignes environnantes de -----BEGIN PUBLIC KEY----- et enroulez la clé dans une seule longue ligne :

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

Vous pouvez utiliser le service MailTester pour vérifier vos paramètres DKIM.