DKIM (DomainKeys Identified Mail)
DKIM verstehen: Wie kryptographische Signaturen die E-Mail-Integrität schützen, Key Management und Selector-Strategien.
Was ist DKIM?
DKIM (DomainKeys Identified Mail) ist ein E-Mail-Authentifizierungsprotokoll, definiert in RFC 6376. Es verwendet Public-Key-Kryptographie zum Signieren von E-Mails und ermöglicht Empfängern zu verifizieren, dass die E-Mail tatsächlich von der angegebenen Domain stammt und während der Übertragung nicht verändert wurde.
Wie DKIM funktioniert
- Key-Generierung: Der Domain-Inhaber generiert ein Public/Private Key Pair.
- DNS-Veröffentlichung: Der Public Key wird als DNS TXT Record unter
selector._domainkey.example.comveröffentlicht. - Signierung: Beim Versand einer E-Mail verwendet der Mailserver den Private Key, um eine kryptographische Signatur bestimmter E-Mail-Header und des Bodys zu erstellen.
- Signature Header: Die Signatur wird als
DKIM-SignatureHeader zur E-Mail hinzugefügt. - Verifizierung: Der empfangende Server extrahiert den Selector und die Domain aus der Signatur, ruft den Public Key aus dem DNS ab und verifiziert die Signatur.
Der DKIM-Signature Header
DKIM-Signature: v=1; a=rsa-sha256; d=example.com; s=selector1;
c=relaxed/relaxed; q=dns/txt;
h=from:to:subject:date:message-id:content-type;
bh=2jUSOH9NhtVGCQWNr9BrIAPreKQjO6Sn7XIkfJVOzv8=;
b=AuUoFEfDxTDkHlLXSZEpZj79LICEps6eda7W3deTVFOk2JwA0...
| Tag | Beschreibung | Beispiel |
|---|---|---|
v | Version (immer 1) | v=1 |
a | Signierungsalgorithmus | a=rsa-sha256 |
d | Signierende Domain | d=example.com |
s | Selector (verweist auf den DNS Key Record) | s=selector1 |
c | Canonicalization (Header/Body) | c=relaxed/relaxed |
h | Signierte Header | h=from:to:subject:date |
bh | Body Hash | Base64-kodierter Hash des Bodys |
b | Signaturdaten | Base64-kodierte kryptographische Signatur |
DKIM Selectors & Key Management
Ein Selector ist ein String, der identifiziert, welcher DKIM Key verwendet werden soll. Dies ermöglicht einer Domain, mehrere DKIM Keys gleichzeitig zu haben — essenziell für Key Rotation und Drittanbieter-Sender-Unterstützung.
Gängige Selector-Muster
- Google Workspace:
google._domainkey.example.com - Microsoft 365:
selector1._domainkey.example.comundselector2._domainkey.example.com - Amazon SES: Generiert drei Selectors wie
abc123._domainkey.example.com - Benutzerdefiniert: Oft
default._domainkey.example.comodermail._domainkey.example.com
Key Rotation Best Practices
- Verwenden Sie mindestens 2048-Bit RSA Keys (1024-Bit gilt als schwach).
- Rotieren Sie Keys regelmäßig (alle 6-12 Monate).
- Bei der Rotation: Erst den neuen Key veröffentlichen, dann die Signierung umstellen, dann den alten Key entfernen, nachdem die alten Signaturen abgelaufen sind.
- Verwenden Sie aussagekräftige Selector-Namen mit Datum oder Version:
s2024q1._domainkey.example.com. - Erwägen Sie Ed25519 Keys für bessere Performance (unterstützt von neueren Implementierungen).
Häufige DKIM-Probleme
Problem 1: Body während der Übertragung verändert
Mailinglisten, Weiterleitungsdienste und einige Security Gateways verändern den E-Mail-Body (z.B. Hinzufügen von Footer-Text). Dies invalidiert den DKIM Body Hash und führt zu einem Fehler. Verwenden Sie c=relaxed/relaxed Canonicalization, um toleranter gegenüber geringfügigen Änderungen zu sein.
Problem 2: DNS Key nicht gefunden
Wenn der empfangende Server den DKIM Public Key im DNS nicht finden kann, schlägt die Verifizierung fehl. Häufige Ursachen:
- Tippfehler im Selector-Namen
- DNS-Propagierungsverzögerung nach dem Hinzufügen des Keys
- Key Record zu lang für einen einzelnen DNS TXT-Eintrag (in mehrere Strings aufteilen)
Problem 3: Key-Größe zu klein
Ein 512-Bit- oder 768-Bit-Key ist trivial knackbar. Die meisten modernen Empfänger lehnen Signaturen ab, die mit Keys kleiner als 1024 Bit erstellt wurden. Verwenden Sie mindestens 2048-Bit.
Problem 4: Drittanbieter-DKIM nicht aligned
Wenn ein Drittanbieterdienst mit d=drittanbieter.com statt d=ihredomain.com signiert, besteht DKIM, aber das DMARC Alignment schlägt fehl. Stellen Sie sicher, dass Ihre Drittanbieterdienste die Signierung mit Ihrer Domain unterstützen (benutzerdefiniertes DKIM-Setup).