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/opendkim

7 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:opendkim

Erstellen 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/default

Die 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.com

Die 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.com

Die 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.

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.