OpenDKIM (Ubuntu 18.04)

Aus Tutorials
Zur Navigation springen Zur Suche springen

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:

DomainKey.png

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