DKIM für Mailcow einrichten
Schritt-für-Schritt-Anleitung: DKIM-Schlüsselpaar im Mailcow Admin-UI generieren (RSA 2048-Bit Default, Selektor dkim), den Public Key als TXT-Record im DNS anlegen und mit Test-Mail verifizieren.
DKIM für Mailcow (Self-Hosted Docker)
Mailcow generiert DKIM-Keys direkt in der Admin-UI — Configuration → Mail Setup → Domains → Edit-Symbol → DKIM keys. Der Default ist RSA mit 2048 Bit Schlüssellänge und Selektor dkim. Der Public Key wird im UI angezeigt und muss als TXT-Record unter dkim._domainkey.ihre-domain.de in Ihr DNS übernommen werden. Mailcow signiert dann alle ausgehenden Mails dieser Domain automatisch über den Postfix-Milter-Pfad an Rspamd.
Anders als bei Managed-Providern haben Sie volle Kontrolle über den Schlüssel: Sie können ihn jederzeit rotieren, exportieren oder durch einen längeren Key ersetzen. NIS2 Art. 21 Abs. 2 lit. h (Konzepte und Verfahren für den Einsatz von Kryptografie und Verschlüsselung) verlangt eine kryptografisch verifizierbare Sender-Authentifizierung — DKIM ist diese Maßnahme auf Header-Ebene und ergänzt SPF auf Envelope-Ebene. Der Wolf-Agents Email Security Check validiert den Selektor (Mailcow-Default: dkim), die Schlüssellänge (2048 Bit empfohlen, 1024 Bit veraltet), das DKIM-DMARC-Alignment (Header-From-Domain matched mit DKIM-d=-Domain) und meldet ungültige Public Keys nach falscher DNS-Übertragung.
Hardening-Pfad: Nach DKIM folgt DMARC für Mailcow — die Policy, die SPF- und DKIM-Ergebnisse für empfangende Server bindend macht. Bedrohungs-Cluster: Funktionierendes DKIM mit 2048-Bit-RSA-Key schließt die Voraussetzung für effektiven Schutz gegen Direct-Domain-Spoofing und insbesondere Echospoofing und SubdoMailing — Guardio Labs hat 2024 über 8.000 Marken-Subdomains aufgedeckt, deren DKIM-Schlüssel kompromittiert oder schwach waren.
DKIM-Key-Rotation Side-by-Side — Netcup Support-Ticket vs Mailcow Admin-UI Dual-Selector
Zwei-Spalten-Workflow-Vergleich der DKIM-Rotation: Netcup (Managed) erfordert 4 Schritte über Support-Ticket mit mehreren Werktagen Wartezeit. Mailcow (Self-Hosted) erlaubt 6-Schritte-Dual-Selector-Pattern via Admin-UI mit Risiko-Annotation auf Schritt 6 (Removal alter Selektor). Konzerne: Netcup GmbH Nürnberg + Mailcow GmbH Bielefeld.
DKIM-Key im Mailcow Admin-UI erzeugen
Das Mailcow Admin-UI ist unter https://mail.ihre-domain.de/admin erreichbar. Nach Login mit dem Admin-Konto generieren Sie den DKIM-Schlüssel pro Domain in wenigen Klicks. Mailcow speichert den privaten Schlüssel verschlüsselt im crypt-vol-1-Docker-Volume — Backup dieses Volumes ist wichtig.
Pfad im Mailcow Admin-UI
- Login unter
https://mail.ihre-domain.de/admin - Navigieren Sie zu Configuration → Mail Setup → Domains
- Klicken Sie auf das Edit-Symbol neben Ihrer Domain
- Wechseln Sie zum Reiter DKIM keys
- Selektor:
dkim(Default, kann angepasst werden — empfohlen:YYYYMMfür Rotation, z.B.202605) - Key length: 2048 Bit (Default, BSI TR-02102-1-konform — 1024 Bit gilt als veraltet)
- Klick auf Add — Mailcow erzeugt sofort das Schlüsselpaar und zeigt den Public Key als
v=DKIM1; k=rsa; ...; p=MIIBIjANBgkqhki...-String an
Mailcow unterstützt im Admin-UI ausschließlich RSA-Keys. Das Feature-Request Issue #2972 „Add support of ED25519-SHA256 for signing DKIM Keys“ existiert seit 2019 und ist Stand 2026-05-13 weiterhin offen. Ed25519 ist über manuelle Rspamd-Config (data/conf/rspamd/dkim/) und Postfix-Milter-Anpassungen möglich, aber komplexer in der Wartung und nicht von allen großen Empfängern unterstützt — Microsoft 365, Yahoo Mail und manche Banken akzeptieren Ed25519-DKIM bisher nicht zuverlässig. RSA 2048-Bit bleibt 2026 der praktische Standard für Mailcow.
TXT-Record im DNS hinterlegen
Mailcow zeigt nach der Key-Generierung einen kopierbaren TXT-Record an. Übernehmen Sie diesen exakt in Ihre DNS-Zone — Host ist dkim._domainkey (oder Ihr gewählter Selektor), Typ ist TXT. Der Wert besteht aus dem v=DKIM1; k=rsa; ...; p=<Public-Key>-String, der typischerweise länger als 255 Zeichen ist und vom DNS-Provider automatisch in mehrere String-Segmente aufgeteilt wird.
# Host: dkim._domainkey
# Typ: TXT
# Wert: v=DKIM1; k=rsa; t=s; s=email; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA...
# Im DNS-Panel:
dkim._domainkey.ihre-domain.de. IN TXT ( "v=DKIM1; k=rsa; t=s; s=email; "
"p=MIIBIjANBgkqhkiG9w0BAQEF..." ) Ein RSA-2048-Bit-Public-Key ist im Base64-encodierten DNS-Format länger als die 255-Byte-TXT-String-Grenze. Die meisten DNS-Provider (Cloudflare, Hetzner DNS, BIND) splitten automatisch korrekt. Manche älteren Provider erwarten einen einzelnen langen String — kontrollieren Sie nach dem Speichern mit dig TXT dkim._domainkey.ihre-domain.de +short, ob der Record als einzelner zusammenhängender String oder als konkateniertes Quoted-String-Paar zurückkommt.
DKIM-Signierung verifizieren
Prüfen Sie den TXT-Record und senden Sie eine Test-Mail an ein externes Postfach. Mailcow signiert Mails automatisch sobald der Public Key im DNS auflösbar ist und das Mailcow-UI den Status „active“ zeigt. Im Header-Output sehen Sie DKIM-Signature: ... d=ihre-domain.de; s=dkim und beim Empfänger Authentication-Results: ... dkim=pass header.d=ihre-domain.de.
# TXT-Record prüfen (Linux/macOS)
dig TXT dkim._domainkey.ihre-domain.de +short
# Erwartet: "v=DKIM1; k=rsa; t=s; s=email; p=MIIBIjANBgkqhki..."
# Windows (PowerShell)
Resolve-DnsName -Name dkim._domainkey.ihre-domain.de -Type TXT |
Select-Object -ExpandProperty Strings
# Test-Mail per Mailcow versenden, dann Header der zugestellten Mail prüfen
# Im Empfänger-Header steht:
# Authentication-Results: mx.google.com;
# dkim=pass header.i=@ihre-domain.de header.s=dkim;
# spf=pass smtp.mailfrom=...;
# dmarc=pass header.from=ihre-domain.de
# Externe Verifikation (sendet eine Mail an check-auth@)
echo "Test" | mail -s "DKIM Test" check-auth@verifier.port25.com
# Antwort enthält detaillierten DKIM/SPF/DMARC-Report
# Mailcow-Logs auf DKIM-Signierungs-Erfolg prüfen
docker compose logs rspamd-mailcow | grep -i "dkim_signing" Validieren Sie zusätzlich mit dem Wolf-Agents Email Security Check — er prüft den Selektor, die Schlüssellänge, das Header-Alignment für DMARC und meldet ungültige Records bei DNS-Übertragungsfehlern.
Häufige Fehler bei Mailcow
Diese drei Fehler treten bei der Mailcow-DKIM-Konfiguration besonders häufig auf — jeder einzelne kann dazu führen, dass DKIM-Signaturen ungültig sind oder Mailcow signiert, der Empfänger den Public Key aber nicht findet.
Public Key beim Kopieren in DNS abgeschnitten
Problem: Mailcow zeigt den Public Key im Admin-UI als langen Base64-String an. Beim Kopieren werden vom Browser oder Terminal Whitespaces, Zeilenumbrüche oder die abschließenden =-Padding-Zeichen abgeschnitten. Der DNS-Record sieht zwar gespeichert aus, aber bei der Empfänger-DKIM-Verifikation schlägt der RSA-Verify mit signature did not verify fehl — Mailcow signiert korrekt, aber der DNS-Public-Key passt nicht zum privaten Schlüssel.
Lösung: Nach dem DNS-Speichern den Record per dig TXT dkim._domainkey.ihre-domain.de +short abrufen und Zeichen-für-Zeichen mit dem Mailcow-UI-Wert vergleichen. Mailcow-UI hat einen Copy-Button, der den vollen String ohne Truncation kopiert — diesen statt manueller Auswahl verwenden.
Selektor in DNS abweichend vom Mailcow-Selektor
Problem: Im Mailcow-UI wurde der Selektor mail202605 für Rotation festgelegt, im DNS wurde aber dkim._domainkey als Hostname angelegt. Mailcow signiert mit s=mail202605, der Empfänger sucht nach mail202605._domainkey.ihre-domain.de und findet keinen Public Key — DKIM=none oder DKIM=temperror.
Lösung: Der DNS-Host muss exakt <selektor>._domainkey sein. Im Mailcow-UI ist der Selektor in der DKIM-keys-Tabelle direkt unter dem Public Key angegeben — diesen 1:1 als DNS-Host-Präfix verwenden.
DKIM-Key gelöscht ohne DNS-Cleanup nach Rotation
Problem: Bei Schlüssel-Rotation wird in Mailcow ein neuer Selektor (z.B. 202606) angelegt und der alte (202605) gelöscht. Der DNS-Record für 202605._domainkey bleibt aber bestehen — neue Mails werden mit 202606 signiert, aber Spam-Filter wie Rspamd warnen vor „verwaisten DKIM-Records“ und veraltete Reports referenzieren noch den alten Schlüssel.
Lösung: Bei jeder Rotation ein klares Protokoll führen: Tag 0 — neuen Key in Mailcow erstellen, neuen DNS-Record anlegen. Tag 7 — beide Keys laufen parallel (für in-flight Mails). Tag 14 — alten Key in Mailcow löschen UND alten DNS-Record löschen. Mit dig TXT _domainkey.ihre-domain.de (ohne Selektor) sehen Sie alle aktiven Selektoren.
NIS2, BSI TR-03108 und DSGVO Art. 32: DKIM bei Mailcow-Self-Hosting
DKIM ist eine kryptografische Sender-Authentifizierung — Mailcow signiert die Header-From-Domain mit einem privaten RSA-Schlüssel (verschlüsselt im crypt-vol-1-Docker-Volume), der Empfänger verifiziert mit dem Public Key aus dem DNS. NIS2 Art. 21 Abs. 2 lit. h (Konzepte und Verfahren für den Einsatz von Kryptografie und Verschlüsselung) macht diese Authentifizierung für wesentliche und wichtige Einrichtungen verbindlich. BSI TR-03108 nennt DKIM als Mindestanforderung für sicheren E-Mail-Transport; BSI TR-02102-1 definiert RSA 2048 Bit als Mindeststärke für Mail-Signaturen (Mailcow-Default). DSGVO Art. 32 verlangt Verschlüsselung als technische Maßnahme — die DKIM-Signatur über kryptografisch verifizierbare Header-Felder ist genau diese Maßnahme. Bei Self-Hosting liegt die Schlüssel-Management-Verantwortung vollständig bei Ihnen — Mailcow vereinfacht die Generierung, aber Backup des crypt-vol-1-Volumes und regelmäßige Rotation (empfohlen jährlich) bleiben Ihre Aufgabe. Wolf-Agents empfiehlt für Mailcow RSA 2048-Bit (oder 4096-Bit für Hochsicherheit), Selektor-Pattern YYYYMM für saubere Rotation. Der Wolf-Agents Email Security Check bewertet DKIM mit bis zu 22 Punkten der 165-Punkte-Analyse.
DKIM-Anleitung auch für:
Wie steht Ihre Domain bei DKIM?
Prüfen Sie es jetzt — kostenlos, ohne Registrierung, mit 165 Prüfpunkte.