DKIM ist die kryptographische Authentifizierungs-Schicht, die jedem Empfänger-Server beweist: diese Mail kommt wirklich von Ihrer Domain und wurde unterwegs nicht modifiziert. Für transactional E-Mail ist DKIM nicht optional. Dieser Beitrag ist ein praktischer Setup-Leitfaden.
Wie DKIM technisch funktioniert
DKIM signiert ausgehende E-Mails mit einem privaten Schlüssel. Der entsprechende öffentliche Schlüssel ist in DNS publiziert. Die Signatur wird in einem zusätzlichen Header hinzugefügt:
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=ihr-unternehmen.de; s=auth1;
h=from:to:subject:date:message-id;
bh=lL05/o6mRphPfH9zBXh8mNgRJDGJU3+vDcRNwo+gd0E=;
b=Bdsr3yWKvJ+sj/...
Schritt 1 — Schlüsselpaar generieren
# Mit OpenSSL ein 2048-Bit RSA-Schlüsselpaar erzeugen
openssl genrsa -out dkim_private.pem 2048
openssl rsa -in dkim_private.pem -pubout -out dkim_public.pem
# Public Key für DNS-Eintrag aufbereiten
openssl rsa -in dkim_private.pem -pubout -outform PEM | \
tail -n +2 | head -n -1 | tr -d '\n'
Schlüssel-Länge: 2048 Bit ist Standard. 1024 Bit sind veraltet. 4096 Bit sind möglich, aber DNS hat 255-Zeichen-Limit pro String.
Schritt 2 — DNS-Eintrag publizieren
auth1._domainkey.ihr-unternehmen.de. IN TXT (
"v=DKIM1; k=rsa; "
"p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuFSGGsJSj9NU"
"..."
)
DNS-Propagation kann 24-48 Stunden dauern. Test-Tool: dig auth1._domainkey.ihr-unternehmen.de TXT.
Schritt 3 — MTA für Signierung konfigurieren
Bei OpenDKIM unter Postfix:
# /etc/opendkim.conf
Domain ihr-unternehmen.de
KeyFile /etc/dkim/dkim_private.pem
Selector auth1
Mode sv
# /etc/postfix/main.cf
smtpd_milters = inet:localhost:8891
non_smtpd_milters = $smtpd_milters
milter_default_action = accept
Bei PowerMTA in der config.cfg:
<domain ihr-unternehmen.de>
dkim-sign yes
dkim-identity ihr-unternehmen.de
dkim-selector auth1
dkim-key-path /etc/pmta/dkim_private.pem
</domain>
Schritt 4 — Signierung verifizieren
Test-Mail an check-auth@verifier.port25.com (sendet Authentifizierungs-Report zurück). Eine erfolgreich signierte Mail zeigt im Header:
Authentication-Results: mx.google.com;
dkim=pass header.i=@ihr-unternehmen.de header.s=auth1
spf=pass
Praktische Aspekte für DACH-Setups
Mehrere Selektoren
Bei mehreren Versand-Anbietern: jeder Anbieter eigener Selektor — auth1 für Authorize Hosting, brevo für Brevo, sf für Salesforce. Dadurch sind die DKIM-Setups unabhängig.
DKIM-Schlüssel-Rotation
Best-Practice: DKIM-Schlüssel jährlich rotieren. Vorgehen: neuen Selektor mit neuem Schlüssel publizieren, MTA umstellen, alten Selektor 2-3 Wochen erhalten lassen, dann alten DNS-Eintrag entfernen.
SHA-256 vs. SHA-1
Standardmäßig SHA-256 (a=rsa-sha256). SHA-1 ist veraltet.
Häufige Probleme
Problem: DKIM signiert, aber Empfänger zeigt fail. Ursache: Body-Modifikation durch Mailserver auf dem Weg. Lösung: c=relaxed/relaxed Canonicalization nutzen.
Problem: DNS-Eintrag zu lang. Lösung: Auf 2048 Bit zurück oder Public Key in mehrere Strings aufteilen.
Problem: DKIM passt für direkte Empfänger, fail bei Mailing-Listen. Lösung: ARC (Authenticated Received Chain) statt DKIM allein.
Problem: DKIM passt, aber DMARC zeigt fail. Ursache: DKIM signiert mit falscher Domain (Anbieter-Domain statt eigener). Das ist der häufigste DMARC-Fehler.
DKIM und DSGVO
DKIM-Signaturen enthalten keine personenbezogenen Daten der Empfänger. Daher sind DKIM-Aspekte typisch DSGVO-irrelevant.
Brauchen Sie Hilfe bei der DKIM-Konfiguration?
In einem 30-45-minütigen Gespräch unterstützen wir Sie bei der DKIM-Setup für Ihre Domains und Anbieter.