E-Mail Sicherheit · 5 min read · Oct 14, 2025
DKIM (DomainKeys Identified Mail) mit Postfix auf CentOS mit OpenDKIM einrichten
DKIM (DomainKeys Identified Mail) mit Postfix auf CentOS mit OpenDKIM einrichten
Version 1.0
Autor: Eladio Martinez < [email protected] >
http://twitter.com/mafecsllc
Dieses Tutorial zeigt, wie man DKIM auf einem CentOS-Server, der Postfix verwendet, mit OpenDKIM zum Laufen bringt. Ich werde auch einige einfache Tipps zur Fehlersuche und Ratschläge für zukünftige Upgrades Ihrer OpenDKIM-Installation behandeln.
1 Anforderungen
Dieses Tutorial geht davon aus, dass Sie eine voll funktionsfähige CentOS-Installation haben, die die folgenden Dienste ausführt:
- Postfix 2.3.3 oder besser, der derzeit funktioniert.
- Sendmail ist deaktiviert.
2 Vorbemerkungen
Ich führe alle Schritte in diesem Tutorial mit Root-Rechten aus. Ich verwende derzeit CentOS 6.3 mit OpenDKIM Version 2.4.2 und werde example.com als primäre Domain für dieses Tutorial verwenden.
3 OpenDKIM herunterladen und installieren
Sie müssen auch die Entwicklungs-Pakete von OpenSSL und Sendmail installieren, da sie einige “Bibliotheken” enthalten, die Sie benötigen, um OpenDKIM zum Laufen zu bringen.
yum install sendmail-devel openssl-devel
Laden Sie OpenDKIM in das Verzeichnis /usr/local/src herunter:
cd /usr/local/src
wget http://sourceforge.net/projects/opendkim/files/opendkim-2.4.2.tar.gz
Entpacken, konfigurieren, kompilieren und installieren Sie OpenDKIM mit:
tar zxvf opendkim-2.4.2.tar.gz
cd opendkim-2.4.2
./configure –sysconfdir=/etc –prefix=/usr/local –localstatedir=/var
make
make install
Beachten Sie, dass der Befehl ./configure einige sehr wichtige Flags enthält, die in das Startskript übergeben werden, das erstellt wird, wenn der Konfigurationsbefehl ausgeführt wird. Das erste gibt dem System an, wo sich die Konfigurationsdatei von OpenDKIM befindet, das zweite legt das bevorzugte Präfix für einige andere wichtige Dateipfade fest, und das letzte steuert das Verzeichnis, in dem die PID-Datei für OpenDKIM gespeichert wird.
4 Einen neuen Benutzer erstellen
Fügen Sie einen neuen Benutzer für DKIM namens opendkim mit den folgenden Optionen hinzu:
useradd -r -U -s /sbin/nologin opendkim
Dieser Befehl erstellt ein neues Systemkonto (-r) und eine Gruppe (-g) namens opendkim und weist diesem Benutzer keinen Shell-Zugriff zu (-s).
5 Arbeitsverzeichnisse erstellen
Erstellen Sie einige neue Verzeichnisse für OpenDKIM und geben Sie ihnen die richtigen Eigentumsrechte und Berechtigungen mit:
mkdir -p /etc/opendkim/keys
chown -R opendkim:opendkim /etc/opendkim
chmod -R go-wrx /etc/opendkim/keys
6 Das Startskript nach /etc/init.d/ kopieren
Das Quellpaket von OpenDKIM enthält ein contrib-Verzeichnis, das ein benutzerdefiniertes Init-Skript für alle RedHat-kompatiblen Systeme, einschließlich Fedora und CentOS, enthält. Sie können es in Ihr Verzeichnis /etc/init.d/ kopieren, um das Starten, Stoppen, Neustarten und Neuladen von OpenDKIM zu erleichtern:
cp /usr/local/src/opendkim-2.4.2/contrib/init/redhat/opendkim /etc/init.d/
Setzen Sie nun die richtigen Berechtigungen für das Init-Skript:
chmod 755 /etc/init.d/opendkim7 Schlüssel zum Signieren generieren
Sie müssen einen privaten und einen öffentlichen Schlüssel für jede der Domains generieren, für die Sie E-Mails signieren möchten. Der private Schlüssel wird auf Ihrem Server gespeichert, während der öffentliche Schlüssel in den DNS-Einträgen Ihrer Domain veröffentlicht wird, damit empfangende Mailserver Ihre DKIM-signierten E-Mails verifizieren können.
Sie müssen jetzt entscheiden, wie der Name Ihres Selectors lauten soll. Ein Selector ist ein einzigartiges Schlüsselwort, das mit beiden Schlüsseln (öffentlich und privat) verbunden ist, in allen Signaturen enthalten ist und in Ihren DNS-Einträgen veröffentlicht wird. Zur Vereinfachung verwende ich das Wort default als meinen Standard-Selector. Fühlen Sie sich frei, etwas anderes zu wählen, aber wenn Sie das tun, müssen Sie es konsequent in Ihrer gesamten Einrichtung verwenden. Außerdem sollten Sie, auch wenn es selbstverständlich sein sollte, Ihre Mail-Domain anstelle von example.com in den folgenden Schritten verwenden.
Erstellen Sie Ihre Schlüssel:
mkdir /etc/opendkim/keys/example.com
/usr/local/bin/opendkim-genkey -D /etc/opendkim/keys/example.com/ -d example.com -s default
chown -R opendkim:opendkim /etc/opendkim/keys/example.com
mv /etc/opendkim/keys/example.com/default.private /etc/opendkim/keys/example.com/default
In diesem Beispiel habe ich die Optionen -D (Verzeichnis), -d (Domain) und -s (Selector) verwendet. Das ist alles, was Sie brauchen, um dies zum Laufen zu bringen.
8 Konfigurationsdateien bearbeiten
Sie müssen vier Dateien erstellen oder bearbeiten:
- 1 /etc/opendkim.conf –- Hauptkonfigurationsdatei von OpenDKIM
- 2 /etc/opendkim/KeyTable –- eine Liste der verfügbaren Schlüssel zum Signieren
- 3 /etc/opendkim/SigningTable – eine Liste der Domains und Konten, die zum Signieren berechtigt sind
- 4 /etc/opendkim/TrustedHosts –- eine Liste von Servern, die beim Signieren oder Verifizieren “vertraut” werden
Erstellen Sie die Datei /etc/opendkim.conf:
vi /etc/opendkim.conf
Stellen Sie sicher, dass Ihre Datei so aussieht:
##
## opendkim.conf -- Konfigurationsdatei für OpenDKIM-Filter
##
AutoRestart Yes
AutoRestartRate 10/1h
Canonicalization relaxed/simple
ExternalIgnoreList refile:/etc/opendkim/TrustedHosts
InternalHosts refile:/etc/opendkim/TrustedHosts
KeyTable refile:/etc/opendkim/KeyTable
LogWhy Yes
Mode sv
PidFile /var/run/opendkim/opendkim.pid
SignatureAlgorithm rsa-sha256
SigningTable refile:/etc/opendkim/SigningTable
Socket inet:8891@localhost
Syslog Yes
SyslogSuccess Yes
TemporaryDirectory /var/tmp
UMask 022
UserID opendkim:opendkimErstellen Sie die Datei /etc/opendkim/KeyTable:
vi /etc/opendkim/KeyTable
Stellen Sie sicher, dass Ihre Datei so aussieht:
default._domainkey.example.com example.com:default:/etc/opendkim/keys/example.com/defaultDie KeyTable-Datei sagt OpenDKIM, wo es Ihre Schlüssel finden kann. Jeder Eintrag in der KeyTable-Datei ist eine einzelne Zeile für jeden Schlüsselstandort (zum Beispiel sollte der gesamte Text im obigen Beispiel in Ihrer Datei auf einer einzigen Zeile stehen). Wenn Sie mehrere Schlüssel verwenden möchten (um E-Mails für virtuelle Domains mit unterschiedlichen Schlüsseln zu signieren), müssen Sie für jede Domain eine separate Zeile in der KeyTable-Datei erstellen.
Erstellen Sie die Datei /etc/opendkim/SigningTable:
vi /etc/opendkim/SigningTable
Stellen Sie sicher, dass Ihre Datei so aussieht:
*@example.com default._domainkey.example.comDie SigningTable-Datei sagt OpenDKIM, wie es Ihre Schlüssel verwenden soll, also welche Absender welche Selector für ihre Signaturen verwenden sollten. Im obigen Beispiel sage ich, dass jeder () der E-Mails vom Server “example.com” sendet, den Selector namens “default” verwenden sollte. Es ist wichtig zu beachten, dass das Wildcardsymbol nur funktioniert, wenn die SigningTable-Option das refile:-Präfix vor dem Dateinamen verwendet.
Erstellen Sie die Datei /etc/opendkim/TrustedHosts:
vi /etc/opendkim/TrustedHosts
Stellen Sie sicher, dass Ihre Datei so aussieht:
127.0.0.1
hostname1.example1.com
example1.com
hostname1.example2.com
example2.comDie TrustedHosts-Datei sagt OpenDKIM, wem es erlaubt ist, Ihre Schlüssel zu verwenden. Da sie durch die Direktive ExternalIgnoreList in Ihrer Konfigurationsdatei referenziert wird, ignoriert OpenDKIM diese Liste von Hosts, wenn es eingehende E-Mails verifiziert, und da sie auch durch die Direktive InternalHosts referenziert wird, wird diese gleiche Liste von Hosts als “intern” betrachtet, und OpenDKIM signiert deren ausgehende E-Mails.
WICHTIG: Stellen Sie sicher, dass Sie die IP-Adresse für localhost (127.0.0.1) in der TrustedHosts-Datei auflisten, da OpenDKIM sonst keine von diesem Server gesendeten E-Mails signiert. Wenn Sie mehrere Server im selben Netzwerk haben, die E-Mails über diesen Server weiterleiten, und Sie deren E-Mails ebenfalls signieren möchten, müssen sie in der TrustedHosts-Datei aufgeführt werden. Setzen Sie jeden Eintrag in eine eigene Zeile. Ein Eintrag kann ein Hostname, ein Domainname (z. B. “example.com”), eine IP-Adresse, eine IPv6-Adresse (einschließlich einer IPv4-mapped-Adresse) oder eine CIDR-ähnliche IP-Spezifikation (z. B. “192.168.1.0/24”) sein.
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.