E-Mails mit DKIM signieren

vor 5 Jahren von David Grudl  

DKIM (DomainKeys Identified Mail) ist eine vertrauenswürdige E-Mail-Technologie, die auch hilft, gefälschte Nachrichten zu erkennen. Die gesendete Nachricht wird vom SMTP-Server mit dem privaten Schlüssel der Domäne des Absenders signiert, und diese Signatur wird in der Kopfzeile der E-Mail gespeichert. Der Server des Empfängers vergleicht diese Signatur mit dem öffentlichen Schlüssel, der in den DNS-Einträgen der Domäne gespeichert ist. Durch den Abgleich der Signatur wird nachgewiesen, dass die E-Mail tatsächlich von der Domäne des Absenders stammt und dass die Nachricht während der Übertragung nicht verändert wurde.

Nette\Mail unterstützt DKIM seit Version 3.1. Die Verwendung ist sehr einfach:

$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);

Oder Sie können die Konfigurationsdatei verwenden:

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

Der Selektor ist eine beliebige alphanumerische Zeichenfolge in Kleinbuchstaben, die Teil des DNS-Eintrags ist.

Sie können ein privates und öffentliches Schlüsselpaar mit openssl erzeugen:

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

Sie veröffentlichen den öffentlichen Schlüssel, indem Sie einen TXT-Eintrag im DNS für den Hostnamen erstellen, der durch Verkettung des Selektors, der Zeichenkette ._domainkey. und des Domänennamens entsteht. In unserem Beispiel wäre das lovenette._domainkey.myweb.com. In einigen Verwaltungen ist die Domäne bereits vorausgefüllt.

Der Wert des TXT-Eintrags kann durch Verkettung der Zeichenkette v=DKIM1;t=s;k=rsa;p= und des öffentlichen Schlüssels, den Sie aus der Datei dkim.pub kopieren, erstellt werden. Entfernen Sie die umliegenden Zeilen von -----BEGIN PUBLIC KEY----- und fassen Sie den Schlüssel in einer einzigen langen Zeile zusammen:

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

Sie können den Dienst MailTester verwenden, um Ihre DKIM-Einstellungen zu überprüfen.