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

  1. Key-Generierung: Der Domain-Inhaber generiert ein Public/Private Key Pair.
  2. DNS-Veröffentlichung: Der Public Key wird als DNS TXT Record unter selector._domainkey.example.com veröffentlicht.
  3. 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.
  4. Signature Header: Die Signatur wird als DKIM-Signature Header zur E-Mail hinzugefügt.
  5. 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...
TagBeschreibungBeispiel
vVersion (immer 1)v=1
aSignierungsalgorithmusa=rsa-sha256
dSignierende Domaind=example.com
sSelector (verweist auf den DNS Key Record)s=selector1
cCanonicalization (Header/Body)c=relaxed/relaxed
hSignierte Headerh=from:to:subject:date
bhBody HashBase64-kodierter Hash des Bodys
bSignaturdatenBase64-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.com und selector2._domainkey.example.com
  • Amazon SES: Generiert drei Selectors wie abc123._domainkey.example.com
  • Benutzerdefiniert: Oft default._domainkey.example.com oder mail._domainkey.example.com

Key Rotation Best Practices

  1. Verwenden Sie mindestens 2048-Bit RSA Keys (1024-Bit gilt als schwach).
  2. Rotieren Sie Keys regelmäßig (alle 6-12 Monate).
  3. Bei der Rotation: Erst den neuen Key veröffentlichen, dann die Signierung umstellen, dann den alten Key entfernen, nachdem die alten Signaturen abgelaufen sind.
  4. Verwenden Sie aussagekräftige Selector-Namen mit Datum oder Version: s2024q1._domainkey.example.com.
  5. Erwägen Sie Ed25519 Keys für bessere Performance (unterstützt von neueren Implementierungen).
Warum mehrere Selectors? Wenn Ihre Domain E-Mails über Google Workspace UND Amazon SES sendet, benötigt jeder Dienst seinen eigenen DKIM Key. Selectors ermöglichen die Koexistenz ohne Konflikte.

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).