DKIM für Postfix einrichten
Schritt-für-Schritt-Anleitung: OpenDKIM installieren, DKIM-Schlüssel generieren, Postfix als Milter anbinden, DNS-Record veröffentlichen und DKIM verifizieren.
DKIM für Postfix mit OpenDKIM
Postfix unterstützt DKIM nicht nativ — die kryptographische Signierung und Verifikation übernimmt OpenDKIM als Milter-Filter, der sich über die smtpd_milters-Direktive in Postfix integriert. OpenDKIM generiert RSA-2048-Schlüsselpaare, signiert jede ausgehende E-Mail mit dem privaten Schlüssel und veröffentlicht den öffentlichen Schlüssel als DNS-TXT-Record unter dem konfigurierten Selektor. Die Einrichtung umfasst fünf Schritte: Installation, Schlüsselgenerierung, Konfiguration der Tabellen, Anbindung an Postfix und DNS-Veröffentlichung. Dieser Guide behandelt jeden Schritt mit exakten Konfigurationsdateien und Befehlen.
BSI TR-03108 Abschnitt 4.3 fordert DKIM-Signierung für ausgehende E-Mails explizit. OpenDKIM auf Postfix erfüllt diese Anforderung über die Milter-Schnittstelle — der Wolf-Agents Email Security Check verifiziert, ob Schlüssel, Selektor und Signierung korrekt zusammenspielen, und bewertet Ihre Konfiguration auf 22 DKIM-Kriterien.
Hardening-Pfad: Nach DKIM folgt DMARC für Postfix — die Policy, die SPF- und DKIM-Ergebnisse für empfangende Server bindend macht.
OpenDKIM installieren
OpenDKIM ist der De-facto-Standard für DKIM-Signierung unter Postfix und in allen großen Linux-Distributionen als Paket verfügbar. Installieren Sie OpenDKIM zusammen mit den Tools zur Schlüsselgenerierung über den Paketmanager Ihrer Distribution.
# Debian / Ubuntu
apt install opendkim opendkim-tools
# RHEL / CentOS / AlmaLinux
dnf install opendkim opendkim-tools
# Verzeichnisstruktur anlegen
mkdir -p /etc/opendkim/keys/ihre-domain.de
chown -R opendkim:opendkim /etc/opendkim
chmod 700 /etc/opendkim/keys Wenn Sie mehrere Domains über denselben Postfix-Server versenden, benötigt jede Domain ein eigenes Schlüsselpaar. Die Verzeichnisstruktur /etc/opendkim/keys/ihre-domain.de/ hält die Schlüssel sauber getrennt.
Schlüssel generieren und OpenDKIM konfigurieren
Der Befehl opendkim-genkey erzeugt ein RSA-2048-Schlüsselpaar und eine DNS-Record-Vorlage — anschließend konfigurieren Sie opendkim.conf sowie die drei Tabellendateien. Der Selector ist frei wählbar — default ist gängig, für Rotation empfiehlt sich ein Datumsformat wie 202604.
# DKIM-Schlüsselpaar generieren (RSA 2048 Bit)
opendkim-genkey -b 2048 -d ihre-domain.de -s default -D /etc/opendkim/keys/ihre-domain.de/
# Berechtigungen setzen
chown opendkim:opendkim /etc/opendkim/keys/ihre-domain.de/default.private
chmod 600 /etc/opendkim/keys/ihre-domain.de/default.private
# Ergebnis: default.private (privater Schlüssel) + default.txt (DNS-Record-Vorlage) AutoRestart Yes
AutoRestartRate 10/1h
Syslog Yes
SyslogSuccess Yes
LogWhy Yes
Mode sv
Canonicalization relaxed/relaxed
OversignHeaders From
KeyTable refile:/etc/opendkim/key.table
SigningTable refile:/etc/opendkim/signing.table
ExternalIgnoreList /etc/opendkim/trusted.hosts
InternalHosts /etc/opendkim/trusted.hosts
Socket inet:8891@localhost
PidFile /run/opendkim/opendkim.pid
UMask 007
UserID opendkim default._domainkey.ihre-domain.de ihre-domain.de:default:/etc/opendkim/keys/ihre-domain.de/default.private *@ihre-domain.de default._domainkey.ihre-domain.de 127.0.0.1
::1
localhost
ihre-domain.de Postfix anbinden
OpenDKIM wird über die Milter-Schnittstelle an Postfix angebunden — Postfix leitet jede ausgehende E-Mail durch den OpenDKIM-Filter, der die DKIM-Signatur hinzufügt. Tragen Sie die Milter-Konfiguration in die Postfix-Hauptkonfiguration ein und starten Sie beide Dienste.
# OpenDKIM Milter-Anbindung
milter_protocol = 6
milter_default_action = accept
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891 # OpenDKIM aktivieren und starten
systemctl enable opendkim
systemctl start opendkim
# Postfix neu laden
systemctl reload postfix
# Status prüfen
systemctl status opendkim Wenn OpenDKIM nicht erreichbar ist (z. B. nach einem Neustart), bestimmt milter_default_action, was Postfix tut. Mit accept werden E-Mails ohne Signatur zugestellt — mit tempfail werden alle E-Mails abgelehnt, bis OpenDKIM wieder läuft.
DNS-Record veröffentlichen
Der öffentliche Schlüssel muss als TXT-Record im DNS veröffentlicht werden, damit empfangende Mailserver die DKIM-Signatur Ihrer E-Mails verifizieren können. OpenDKIM hat den Record bereits als Datei generiert — kopieren Sie den Inhalt in Ihren DNS-Provider.
# DNS-Record-Vorlage anzeigen
cat /etc/opendkim/keys/ihre-domain.de/default.txt
# Ausgabe (Beispiel):
# default._domainkey IN TXT ( "v=DKIM1; h=sha256; k=rsa; "
# "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA..." ) ;
# ----- DKIM key default for ihre-domain.de TXT-Record beim DNS-Provider anlegen
- Melden Sie sich bei Ihrem DNS-Provider an
- Erstellen Sie einen neuen TXT-Record
- Name/Host:
default._domainkey(manche Provider hängen die Domain automatisch an) - Wert: Den kompletten
v=DKIM1; ...-String aus der Datei einfügen — ohne die Anführungszeichen und Klammern - TTL: 3600 (1 Stunde) oder Standard-Wert des Providers
DKIM verifizieren
Nach der DNS-Veröffentlichung prüfen Sie, ob der Record korrekt propagiert wurde und ob ausgehende E-Mails tatsächlich signiert werden. DNS-Änderungen brauchen je nach Provider 5 Minuten bis 24 Stunden.
# DNS-Record abfragen
dig TXT default._domainkey.ihre-domain.de +short
# OpenDKIM-Testbefehl
opendkim-testkey -d ihre-domain.de -s default -vvv
# Test-E-Mail senden und DKIM-Signatur-Header prüfen
echo "DKIM Test" | mail -s "DKIM Verification" test@gmail.com
# Im Gmail-Header prüfen: dkim=pass header.d=ihre-domain.de Validieren Sie zusätzlich mit dem Wolf-Agents Email Security Check — dieser prüft DKIM auf Schlüssellänge, Algorithmus, Selector-Konfiguration und DNS-Record-Konsistenz.
Ed25519 als Alternative zu RSA
OpenDKIM ab Version 2.11 unterstützt Ed25519-Schlüssel — diese sind kürzer, schneller und bieten vergleichbare Sicherheit zu RSA-2048, werden aber noch nicht von allen Empfangsservern unterstützt. Für maximale Kompatibilität empfiehlt sich ein Dual-Signing-Setup mit RSA und Ed25519. Verwenden Sie Ed25519 nur zusätzlich zu RSA, nicht als Ersatz.
# Ed25519-Schlüssel generieren (OpenDKIM 2.11+)
opendkim-genkey -a ed25519 -d ihre-domain.de -s ed25519 -D /etc/opendkim/keys/ihre-domain.de/
# Version prüfen
opendkim -V Häufige Fehler bei Postfix und OpenDKIM
Die folgenden fünf Fehler treten bei Postfix-DKIM-Konfigurationen am häufigsten auf. Jeder einzelne kann dazu führen, dass DKIM-Signaturen fehlen oder ungültig sind — und E-Mails bei strengen DMARC-Policies abgelehnt werden.
Socket-Berechtigungen — OpenDKIM vs. Postfix
Problem: OpenDKIM läuft als Benutzer opendkim, Postfix als postfix. Wenn OpenDKIM einen Unix-Socket nutzt (statt TCP), hat Postfix keine Berechtigung, darauf zuzugreifen. Die Milter-Verbindung schlägt fehl und E-Mails werden je nach milter_default_action entweder unsigniert zugestellt oder abgelehnt.
Lösung: Verwenden Sie einen TCP-Socket (inet:8891@localhost) statt eines Unix-Sockets — oder fügen Sie den Benutzer postfix zur Gruppe opendkim hinzu: usermod -aG opendkim postfix.
Falscher Pfad zum privaten Schlüssel in key.table
Problem: Der Pfad in key.table zeigt nicht auf die tatsächliche Datei — häufig durch Tippfehler beim Domainnamen oder fehlende Verzeichnisebene. OpenDKIM kann den Schlüssel nicht laden und signiert keine E-Mails. Im Syslog erscheint: can't load key from /etc/opendkim/keys/...
Lösung: Den Pfad in key.table exakt prüfen — er muss auf die .private-Datei zeigen. Testen Sie: ls -la /etc/opendkim/keys/ihre-domain.de/default.private.
Signing-Table-Regex falsch
Problem: Die Signing-Table erwartet das Muster *@ihre-domain.de — wird stattdessen ihre-domain.de ohne *@-Präfix eingetragen, matched OpenDKIM keine Absenderadressen und signiert keine E-Mails. Es gibt keine Fehlermeldung — die E-Mails gehen einfach ohne DKIM-Signatur raus.
Lösung: Das Muster in signing.table muss mit *@ beginnen: *@ihre-domain.de default._domainkey.ihre-domain.de.
OpenDKIM nach Konfigurationsänderung nicht neu gestartet
Problem: Änderungen an opendkim.conf, key.table oder signing.table werden erst nach einem Neustart von OpenDKIM wirksam. Ein Reload von Postfix allein reicht nicht — OpenDKIM ist ein eigenständiger Dienst mit eigenem Prozess und eigenem Konfigurationscache.
Lösung: Nach jeder Konfigurationsänderung: systemctl restart opendkim. Prüfen Sie den Status anschließend: systemctl status opendkim.
milter_default_action = tempfail statt accept
Problem: Wenn milter_default_action auf tempfail steht und OpenDKIM ausfällt (Absturz, Neustart, Socket-Problem), lehnt Postfix alle E-Mails mit einem temporären Fehler ab. Kein einziger Mailversand funktioniert mehr, bis OpenDKIM wieder läuft.
Lösung: Setzen Sie milter_default_action = accept in /etc/postfix/main.cf. Damit werden E-Mails im Fehlerfall ohne DKIM-Signatur zugestellt — besser als gar keine Zustellung. Überwachen Sie OpenDKIM aktiv über Monitoring.
DKIM-Anleitung auch für:
Wie steht Ihre Domain bei DKIM?
Prüfen Sie es jetzt — kostenlos, ohne Registrierung, mit 165 Prüfpunkte.