OpenDKIM (Ubuntu 18.04)
Installation
sudo apt-get install -y opendkim opendkim-tools
Konfiguration
Verzeichnisse erstellen
sudo mkdir -p /etc/opendkim/keys sudo chown -R opendkim:opendkim /etc/opendkim sudo chmod 700 /etc/opendkim/keys
/etc/opendkim.conf
Die Datei opendkim.conf
bearbeiten
sudo vi /etc/opendkim.conf
und folgende Werte anpassen/ergänzen:
SyslogSuccess yes LogWhy yes UMask 002 Canonicalization relaxed/simple Socket inet:8892@localhost UserID opendkim:opendkim # OpenDKIM bei Problemen neustarten, # aber max. 10 mal pro Stunde AutoRestart yes AutoRestartRate 10/1h # interne Mails (signieren, nicht verifizieren) InternalHosts refile:/etc/opendkim/trusted # Hosts, denen vertraut wird (vermeidet Warnungen beim Logging) ExternalIgnoreList refile:/etc/opendkim/trusted # welche Verschlüsselungs-Keys sollen für welche # Domains verwendet werden # (refile: für Dateien mit regulären Ausdrücke) SigningTable refile:/etc/opendkim/signing.table KeyTable /etc/opendkim/key.table # diesen Signatur-Algorithmus verwenden SignatureAlgorithm rsa-sha256
/etc/default/opendkim
Die Datei opendkim
wird standardmäßig auch ausgewertet. Daher die Datei editieren
sudo vi /etc/default/opendkim
und alle Einträge außer
RUNDIR=/var/run/opendkim
auskommentieren.
/etc/opendkim/trusted
Die Datei trusted
erstellen
sudo vi /etc/opendkim/trusted
und darin alle Server eintragen die vertrauenswürdig sind und nicht geprüft werden sollen:
127.0.0.1 ::1 localhost mail1 mail2 mail1.<domain> mail2.<domain>
Schlüssel
/etc/opendkim/signing.table
signing.table gibt an, für welche From-Adressen welcher Schlüssel verwendet werden soll. Die zweite Spalte in signing.table bezieht sich dabei auf die erste Spalte in key.table.
Dazu die Datei signing.table
erstellen
sudo vi /etc/opendkim/signing.table
und mit folgenden Inhalt befüllen:
# Datei /etc/opendkim/signing.table # für E-Mails von xxx@kirner.or.at den Schlüssel 'kirner' # zum Signieren verwenden *@kirner.or.at kirner
/etc/opendkim/key.table
Die Datei key.table gibt dann den tatsächlichen Ort der Schlüsseldateien an und besteht dabei aus drei Teilen: Dem Hostnamen, dem Selektor (hier 202003) und dem eigentlichen Dateinamen.
Dazu wieder die Datei key.table
erstellen
sudo vi /etc/opendkim/key.table
und mit folgendem Inhalt befüllen:
# Datei /etc/opendkim/key.table # der Schlüssel 'kirner' befindet sich in # des Datei /etc/opendkim/keys/kirner.private kirner kirner.or.at:202003:/etc/opendkim/keys/kirner.private
Schlüssel generieren
Für mehrere Mailserver den selben Schlüssel verwenden.
cd /etc/opendkim sudo opendkim-genkey -d kirner.or.at -b 2048 -r -s 202003 sudo mv 202003.private keys/kirner.private sudo mv 202003.txt keys/kirner.txt sudo chown -R opendkim:opendkim /etc/opendkim sudo chmod -R 750 /etc/opendkim/keys
Die Datei name.private enthält den privaten und name.txt den öffentlichen Schlüssel.
Service neu starten
sudo systemctl restart opendkim.service
DNS-TXT-Eintrag hinzufügen
Mittels
sudo cat /etc/opendkim/keys/kirner.txt
den öffentlichen Schlüssel auslesen und den Teil vor IN als Name verwenden. Als Inhalt wird alles zwischen den runden Klammern eingefügt:
202003._domainkey IN TXT ( "v=DKIM1; h=sha256; k=rsa; s=email; " ... "... WDMLHi9cYwUKb0/SoBXIyNc4aQIDAQAB" ) ; ----- DKIM key 202003 for kirner.or.at
Screenshot der Weboberfläche des DNS-Servers:
OpenDKIM Testen
Mittels dem Komando host kann man testen, ob der Schlüssel am Domainserver schon verfügbar ist:
host -t TXT 202003._domainkey.kirner.or.at
Der Aufruf von opendkim-testkey
sollte in etwa folgendes Ergebnis liefern:
opendkim-testkey -d kirner.or.at -s 202003 -vvv opendkim-testkey: using default configfile /etc/opendkim.conf opendkim-testkey: checking key '202003._domainkey.kirner.or.at' opendkim-testkey: key not secure opendkim-testkey: key OK
Die Meldung Key not secure weist nur darauf hin, dass kein DNSSEC verwendet wurde.
Postfix
Zum Einbinden von OpenDKIM in Postfix die Datei
sudo vi /etc/postfix/main.cf
bearbeiten und die oben definierte Schnittstelle inet:localhost:8892
bei smtpd_milters und non_smtpd_milters (Komma-separiert) eintragen:
smtpd_milters = inet:localhost:11332, inet:localhost:8892 non_smtpd_milters = inet:localhost:11332, inet:localhost:8892 milter_protocol = 6 milter_mail_macros = i {mail_addr} {client_addr} {client_name} {auth_authen} milter_default_action = accept
Zum Abschluss Postfix neu starten:
sudo systemctl restart postfix.service
Finaler Test
Eine Mail an einen Server, der DKIM unterstützt, schicken.
Hier als Beispiel GMail - dort 'Original anzeigen' klicken - liefert folgende Anzeige:
Screenshot hinzufügen
Links
https://adminforge.de/mailserver/postfix-dkim-und-spf-einrichten/
https://kofler.info/dkim-konfiguration-fuer-postfix/
Zurück zu Mailserver einrichten