E-Mails mit DKIM signieren

vor 5 Jahren von David Grudl  

DKIM (DomainKeys Identified Mail) ist eine Technologie zur Erhöhung der Vertrauenswürdigkeit von E-Mails, die auch bei der Aufdeckung gefälschter Nachrichten hilft. Die gesendete Nachricht wird vom SMTP-Server mit dem privaten Schlüssel der Absenderdomain signiert und diese Signatur wird im E-Mail-Header gespeichert. Der Empfängerserver vergleicht diese Signatur mit dem öffentlichen Schlüssel, der in den DNS-Einträgen der Domain gespeichert ist. Wenn die Signatur übereinstimmt, wird nachgewiesen, dass die E-Mail tatsächlich von der Absenderdomain stammt und 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; // oder 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 Zeichenkette in Kleinbuchstaben, die Teil des DNS-Eintrags ist.

Den privaten und öffentlichen Schlüssel können Sie über einen Online-Dienst (z.B. easydmarc) oder lokal mit openssl generieren:

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

Veröffentlichen Sie den öffentlichen Schlüssel, indem Sie einen TXT-Eintrag in den DNS Ihrer Domain erstellen, dessen Name aus dem Selektor, der Zeichenkette ._domainkey. und der Domain zusammengesetzt ist. In unserem Beispiel wäre das lovenette._domainkey.myweb.com. In einigen Verwaltungen ist die Domain möglicherweise bereits vorausgefüllt.

Der Wert des Eintrags ist die Verkettung der Zeichenkette v=DKIM1;t=s;k=rsa;p= und des öffentlichen Schlüssels, den Sie aus der Datei dkim.pub kopieren. Entfernen Sie die umgebenden Kommentare -----BEGIN PUBLIC KEY----- und verbinden Sie die Zeilen zu einer langen:

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

Zur Überprüfung der DKIM-Einstellungen können Sie zum Beispiel den MailTester-Dienst verwenden.

David Grudl Founder of Uměligence and creator of Nette Framework, the popular PHP framework. Since 2021, he's been fully immersed in artificial intelligence, teaching practical AI applications. He discusses weekly tech developments on Tech Guys with his co-hosts and writes for phpFashion and La Trine. He believes AI isn't science fiction—it's a practical tool for improving life today.