DKIM mit Postfix und OpenDKIM

Kürzlich stand ich vor der Anforderung, einen Mailserver auf Basis von Postfix unter einem Debian-artigen Linux mit DKIM (DomainKeys Identified Mail) zu versorgen und bin dabei wie nachfolgend beschrieben vorgegangen.

1. Installation OpenDKIM

OpenDKIM ist in der Regel als Paket verfügbar und kann mit apt installiert werden:

apt-get install opendkim opendkim-tool

2. Konfiguration

Die folgende Konfiguration ist für den Betrieb mit mehreren Domains gedacht. Ich empfehle sie generell, da man sich so auch bei nur einer Domain auf dem Server die Option offen hält, später leicht weitere Domains ergänzen zu können.

2.1 Allgemeine Einstellungen von OpenDKIM

Die Konfiguration von OpenDKIM erfolgt in der Datei /etc/opendkim.conf. Diese sollte folgende Einträge enthalten:

Syslog			yes
UMask			002
Canonicalization        relaxed/simple
Mode                    sv
SubDomains              yes
OversignHeaders		From
KeyTable                /etc/opendkim/KeyTable
SigningTable            /etc/opendkim/SigningTable
ExternalIgnoreList      /etc/opendkim/TrustedHosts
InternalHosts           /etc/opendkim/TrustedHosts

Den Ordner /etc/opendkim muss man ggf. noch manuell anlegen.

2.2 Verbindung zwischen OpenDKIM und Postfix

In der Datei /etc/default/opendkim wird folgender Eintrag ergänzt:

SOCKET="inet:8891@localhost"

Damit wird festgelegt, dass der OpenDKIM-Daemon lokal Verbindungen auf Port 8891 entgegennimmt. Analog dazu trägt man in der Postfix-Konfiguration /etc/postfix/main.cf folgenden Abschnitt ein, um OpenDKIM als Mailfilter zu nutzen:

milter_default_action = accept
milter_protocol = 6
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891

Anmerkung: falls Port 8891 bereits für andere Anwendungen benötigt wird, kann dieser natürlich auch geändert werden. Man muss nur daran denken, das sowohl bei OpenDKIM als auch bei Postfix entsprechend einzutragen.

2.3 OpenDKIM-Domainkonfiguration

Nun erstellt man die Datei /etc/opendkim/TrustedHosts mit folgenden Einträgen:

127.0.0.1
localhost
192.168.1.1
example.com

Statt 192.168.1.1 und example.com gibt man die öffentliche IP-Adresse und den Namen der eigenen Domain an, für die man DKIM einrichten möchte. Wenn es mehrere IP-Adressen und Domains gibt, sind diese hier alle entsprechend einzutragen.

2.4 Schlüssel für eine Domain

Zunächst erstellt man ein Verzeichnis für den öffentlichen und privaten Schlüssel und generiert dann die Schlüssel mit folgenden Kommandos:

mkdir -p /etc/opendkim/keys/example.com
cd /etc/opendkim/keys/example.com
opendkim-genkey -r -d example.com

Statt example.com gibt den Namen der Domain an.

Danach ändert man den Besitzer der Datei für den privaten Schlüssel auf OpenDKIM:

chown opendkim.opendkim /etc/opendkim/keys/example.com/default.private

Diesen Schlüssel kann man nun in der Datei /etc/opendkim/KeyTable wie folgt eintragen:

default._domainkey.example.com example.com:default:/etc/opendkim/keys/example.com/default.private

Und schließlich auch noch in der Datei /etc/opendkim/SigningTable wie folgt:

example.com default._domainkey.example.com

2.5 DNS-Eintrag für eine Domain ergänzen

Damit Empfänger die DKIM-Signaturen prüfen können, muss der öffentliche Schlüssel als zusätzlicher TXT-Eintrag für die Domain im Nameserver hinterlegt werden. Dieser Eintrag kann der Datei /etc/opendkim/keys/example.com/default.txt entnommen werden, der etwa wie folgt aussieht (hier stark gekürzt):

default._domainkey IN TXT "v=DKIM1; k=rsa; p=MIGfMA...DAQAB"

Je nach dem, wie man die DNS-Einträge bearbeitet, kann man den Eintrag entweder direkt als zusätzliche Angabe in die DNS-Konfiguration für die jeweilige Domain übernommen oder man legt einen TXT-Eintrag mit dem Namen default._domainkey und als Inhalt alles, was zwischen den Anführungszeichen steht, an – also beginnend mit v=DKIM; k=rsa; p=.

Ob die Änderung erfolgreich war, kann man z.B. mit der „MxToolbox“ auf https://mxtoolbox.com/dkim.aspx testen. Als „Selector“ gibt man hier default ein. Man sollte dabei beachten, dass es einige Zeit dauern kann, bis Änderungen in DNS-Einträgen weltweit sichtbar sind.

3. Server neu starten und testen

Nach Abschluss der Konfiguration startet man die Dienste opendkim und postfix neu.

Auf der Website http://dkimvalidator.com kann man dann eine temporäre E-Mail-Adresse bekommen, an die man eine Testnachricht schickt, deren Header dann dort angezeigt und geprüft werden können, sobald die Nachricht dort angekommen ist.

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.