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 berechnet einen Hash von Nachrichten-Headern und Body
2. Hash wird mit dem privaten Schlüssel verschlüsselt (Signatur erstellen)
3. Signatur wird als DKIM-Signature Header hinzugefügt
4. E-Mail wird übertragen
Der Verifikations-Prozess
Wenn eine E-Mail empfangen wird:
1. Server extrahiert den DKIM-Signature Header
2. Findet Selector und Domain (s=selector; d=domain.com)
3. Fragt DNS nach selector._domainkey.domain.com TXT-Eintrag ab
4. Verwendet öffentlichen Schlüssel um Signatur zu dekodieren
5. Berechnet seinen eigenen Hash der Nachricht
6. Vergleicht: Übereinstimmung = 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..."
Record-Komponenten
| 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 |
Selectors
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.
DKIM Signature Header
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 Setup
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 Drittanbieter-Services
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 Verification
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"
# Meldet DKIM-Status basierend auf allgemeinen Selektoren
DKIM Best Practices
Verwenden Sie 2048-Bit Schlüssel
Ältere 1024-Bit Schlüssel sind zunehmend anfällig. Die meisten Provider verwenden jetzt standardmäßig 2048-Bit.
Rotieren Sie Schlüssel regelmäßig
Rotieren Sie DKIM-Schlüssel jährlich oder nach Sicherheits-Vorfällen. Veröffentlichen Sie neuen Schlüssel mit neuem Selector vor dem Wechsel.
Signieren Sie wichtige Header
Stellen Sie sicher, dass From, To, Subject, Date und Message-ID in Signaturen enthalten sind.
Modifizieren Sie signierte Nachrichten nicht
Mailing-Listen oder Weiterleitungs-Services, die Inhalte ändern, brechen DKIM. Verwenden Sie ARC (Authenticated Received Chain) für weitergeleitet Mail.
DKIM Einschränkungen
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.