Was ist DKIM?
DKIM (DomainKeys Identified Mail) ist eine E-Mail-Authentifizierungs-Methode, die es dem sendenden Server erlaubt, ausgehende Nachrichten digital zu signieren. Der empfangende Server kann dann diese Signatur mit einem öffentlichen Schlüssel verifizieren, der in DNS veröffentlicht ist, und so bestätigen, dass die E-Mail unterwegs nicht verändert wurde und tatsächlich vom angegebenen Domain stammte.
Wie DKIM funktioniert
1. Schlüssel-Generierung: Domain-Besitzer generiert ein öffentliches/privates Schlüsselpaar
2. DNS-Veröffentlichung: Öffentlicher Schlüssel wird als TXT-Eintrag veröffentlicht
3. Nachricht-Signierung: Ausgehende E-Mails werden mit dem privaten Schlüssel signiert
4. Signatur-Verifizierung: Empfangender Server ruft den öffentlichen Schlüssel ab und verifiziert die Signatur
Der Signatur-Prozess
Wenn eine E-Mail gesendet wird:
1. Mail server calculates a hash of message headers and body
2. Hash is encrypted with the private key (creating the signature)
3. Signature is added as a DKIM-Signature header
4. Email is transmitted
Der Verifikations-Prozess
Wenn eine E-Mail empfangen wird:
1. Server extracts the DKIM-Signature header
2. Finds selector and domain (s=selector; d=domain.com)
3. Queries DNS for selector._domainkey.domain.com TXT record
4. Uses public key to decrypt the signature
5. Calculates its own hash of the message
6. Compares: match = pass, mismatch = fail
DKIM-Record-Format
DKIM-Einträge sind TXT-Einträge in einer spezifischen Subdomain:
selector._domainkey.example.com. IN TXT "v=DKIM1; k=rsa; p=MIGfMA0..."
Komponenten des Records
| Tag | Beschreibung | Beispiel |
|---|---|---|
| v | Version | v=DKIM1 |
| k | Schlüssel-Typ | k=rsa |
| p | Öffentlicher Schlüssel (base64) | p=MIGfMA0GCSqG... |
| t | Flags (optional) | t=y (testing mode) |
| h | Hash-Algorithmen | h=sha256 |
Selektoren
Selektoren erlauben mehrere DKIM-Schlüssel pro Domain:
google._domainkey.example.com # Google Workspace
s1._domainkey.example.com # Sendgrid
mailchimp._domainkey.example.com # Mailchimp
Jeder E-Mail-Service bietet seinen eigenen Selector und Schlüssel.
Header der DKIM-Signatur
Eine DKIM-Signatur sieht so aus:
DKIM-Signature: v=1; a=rsa-sha256; d=example.com; s=google;
c=relaxed/relaxed; q=dns/txt;
h=from:to:subject:date:message-id;
bh=2jUSOH9NhtVGCQWNr9BrIAPreKQjO6Sn7XIkfJVOzv8=;
b=AuUoFEfDxTDkHlLXSZEpZj79...
Wichtige Felder:
- d=: Signierter Domain
- s=: Selector (verwendet um DNS-Eintrag zu finden)
- h=: In Signatur eingeschlossene Header
- b=: Die tatsächliche Signatur
- bh=: Body-Hash
DKIM einrichten
Für Google Workspace
1. Gehen Sie zu Admin-Konsole → Apps → Gmail → Authentifizieren Sie E-Mail
2. Generieren Sie DKIM-Schlüssel (2048-Bit empfohlen)
3. Fügen Sie TXT-Eintrag hinzu, der von Google bereitgestellt wird
4. Aktivieren Sie DKIM-Signierung
Für Dienste von Drittanbietern
Die meisten E-Mail-Services (SendGrid, Mailchimp, etc.) bieten:
1. Einen CNAME-Eintrag zum Hinzufügen (für ihren verwalteten Schlüssel)
2. Oder einen TXT-Eintrag mit dem öffentlichen Schlüssel
Beispiel (SendGrid):
s1._domainkey.example.com CNAME s1.domainkey.sendgrid.net
DKIM prüfen
Senden Sie eine Test-E-Mail zu einem Service, der Header zeigt (Gmail zeigt Authentifizierungs-Ergebnisse). Using command line:dig google._domainkey.example.com TXT
Using DomScan:
curl "https://domscan.net/v1/health?domain=example.com"
# Reports DKIM status based on common selectors
Bewährte Vorgehensweisen für DKIM
2048-Bit-Schlüssel verwenden
Ältere 1024-Bit Schlüssel sind zunehmend anfällig. Die meisten Provider verwenden jetzt standardmäßig 2048-Bit.
Schlüssel regelmäßig rotieren
Rotieren Sie DKIM-Schlüssel jährlich oder nach Sicherheits-Vorfällen. Veröffentlichen Sie neuen Schlüssel mit neuem Selector vor dem Wechsel.
Wichtige Header signieren
Stellen Sie sicher, dass From, To, Subject, Date und Message-ID in Signaturen enthalten sind.
Signierte Nachrichten nicht verändern
Mailing-Listen oder Weiterleitungs-Services, die Inhalte ändern, brechen DKIM. Verwenden Sie ARC (Authenticated Received Chain) für weitergeleitet Mail.
Einschränkungen von DKIM
DKIM allein verhindert nicht Spoofing – es beweist nur, dass eine Nachricht nicht verändert wurde. Ein Domain kann gültiges DKIM haben, während Angreifer unsignierte gefälschte E-Mail senden. DMARC behandelt dies, indem es angibt, was mit unsignierter Nachricht zu tun ist.