DKIM

Domain Keys Identified Mail

DKIM könnte man als digitales Wachssiegel beschreiben, dass die Echtheit des E-Mail Absenders gewährleistet.

Hierbei wird die E-Mail mit einer digitalen Signatur versehen, damit die Signierten Header beim Transport, nicht verändert oder gefälscht werden können. Wird eine Änderung vorgenommen, kann diese beim Empfang festgestellt werden.

Dafür wird eine Signatur aus definierten E-Mail-Headern berechnet. Diese Signatur wird dem E-Mail als zusätzlicher Header hinzugefügt. Über den PublicKey der im DNS System der Domain bereitgestellt wird, kann der Empfänger die Signatur überprüfen und die Echtheit überprüfen.

Wie funktioniert DKIM?

Öffentlicher Schlüssel (PublicKey)

Über den öffentlichen Schlüssel kann die E-Mail überprüft werden.
TXT
selector._domainkey.example.com
v=DKIM1; k=rsa; p=key;
Dieser Eintrag veröffentlicht einen Schlüssel mit dem das Wachsiegel überprüft werden kann.
Tags Beschreibung Erforderlich
v= Version des DKIM-Schlüsseldatensatzes, Standardwert ist "DKIM1" Nein
h= Akzeptierte Hash-Algorithmen Nein
k= Schlüsseltyp , Standardwert ist "rsa" Nein
n= Notizen, die für einen Menschen von Interesse sein könnten Nein
p= Öffentliche Schlüssel (base64) Ja

E-Mail Header

Für jede versendete E-Mail wird eine Signatur berechnet und als Header hinzugefügt.
DKIM-Signature: v=1; a=rsa-sha256; d=example.com; s=mydkimselector;
    c=simple/simple; t=1694010285; h=from:subject:to;
    bh=d0B6ZJjzyvbX77BrlX0DcQC0i0AuJQudsHclGTFOvCA=;
    b=hKpH7bAPDcH3YNNRs19zpBRYieZvHF7YOSpW/R2GBf5YyVUYil/LrOCDqOwlfrnMQmc2FrWo3rX
    GHnOskKEggxxK80o0H2zT+IbYfeqskeqJptvR9wmmQ/GyEbHX6amWFFcbkwsPeJkTO2/K0s+woE1o
    jCn6/VbwKRmFc/3Y5w8=
Tags Beschreibung Erforderlich
v= Dieses Tag definiert die Version der die für den Signatursatz gilt Ja
a= Der zur Erzeugung der Signatur verwendete Algorithmus Ja
d= Gibt den Domainnamen an, der mit dem Selektoreintrag (s=) verwendet wird, um den öffentlichen Schlüssel zu finden Ja
s= Der Name des DKIM-Selektors, dieser wird benötigt um den den öffentlichen DKIM-Schlüssel abzufragen
selectorname._domainkey.example.com
Ja
c= Kanonisierung der Nachricht, Standardwert ist "simple/simple"
(Dadurch wird definiert wie mit Leerzeichen und Textumbrüchen in der Nachricht umgegangen wird)
Nein
t= Signature Timestamp, der Zeitpunkt am dem diese Signatur erstellt wurde Nein
h= Signierte Header-Felder, eine durch Doppelpunkte getrennte Liste von Header-Feldnamen, die die Headerfelder identifizieren Ja
bh= Dieses Tag steht für den Body-Hash, eine verschlüsselte Version des Inhalts Ihrer Nachricht einschließlich der Headerfelder Ja
b= Die Signaturdaten (base64) Ja

Was ist zu beachten, bei der Verwendung von DKIM?

Pro System ein Schlüssel

Wenn du mehrere Systeme hast die E-Mails versenden, solltest du für jedes System einen eigenen DKIM Schlüssel erzeugen und veröffentlichen. Auf diese Weise kannst du einen Schlüssel sicher zurückziehen, ohne dass andere Systeme beeinträchtigt werden.

Der "Selector" sollte, wenn möglich, das System widerspiegeln, bei dem der Schlüssel verwendet wird.

Beispiele für gute Selectornamen

aws
zoho
hetznerserver1

Beispiele für schlechte Selectornamen

default
dkim

Konsistente Domain

Die in der Signatur verwendete Domain sollte mit der im sichtbaren Absender (RFC5322.From) genutzten Domain übereinstimmen. Bei der Aktivierung von DMARC ist es zwingend erforderlich, dass die Signaturdomain und der sichtbare Absender übereinstimmen.

Wie lange sollte der DKIM Schlüssel sein?

Die Schlüssellänge sollte mindestens 1024-bit betragen, kürzere Schlüssel können in kürzester Zeit geknackt werden. Die derzeitige Empfehlung für die Schlüssellänge liegt bei 2048-bit. Längere Schlüssel sind nicht zwangsläufig sicherer, da sie möglicherweise Probleme verursachen können.