OpenDKIM (Ubuntu 18.04): Unterschied zwischen den Versionen
| (38 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
== Installation ==  | == Installation ==  | ||
| Zeile 9: | Zeile 6: | ||
== Konfiguration ==  | == Konfiguration ==  | ||
=== Verzeichnisse erstellen ===  | |||
<pre>  | |||
sudo mkdir -p /etc/opendkim/keys  | |||
sudo chown -R opendkim:opendkim /etc/opendkim  | |||
sudo chmod 700 /etc/opendkim/keys  | |||
</pre>  | |||
=== /etc/opendkim.conf ===  | === /etc/opendkim.conf ===  | ||
Die Datei <code>opendkim.conf</code> bearbeiten  | |||
<pre>  | <pre>  | ||
sudo vi /etc/opendkim.conf  | sudo vi /etc/opendkim.conf  | ||
</pre>  | </pre>  | ||
und folgende Werte anpassen/ergänzen:  | |||
<pre>  | <pre>  | ||
SyslogSuccess           yes  | |||
LogWhy                  yes  | |||
UMask                   002  | UMask                   002  | ||
Canonicalization        relaxed/simple  | |||
Socket                  inet:8892@localhost  | Socket                  inet:8892@localhost  | ||
| Zeile 27: | Zeile 41: | ||
AutoRestart             yes  | AutoRestart             yes  | ||
AutoRestartRate         10/1h  | 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  | |||
</pre>  | </pre>  | ||
=== /etc/default/opendkim ===  | === /etc/default/opendkim ===  | ||
Die Datei <code>opendkim</code> wird standardmäßig auch ausgewertet. Daher die Datei editieren  | |||
<pre>  | <pre>  | ||
| Zeile 35: | Zeile 66: | ||
</pre>  | </pre>  | ||
===   | und alle Einträge außer  | ||
<pre>  | |||
RUNDIR=/var/run/opendkim  | |||
</pre>  | |||
auskommentieren.  | |||
=== /etc/opendkim/trusted ===  | |||
Die Datei <code>trusted</code> erstellen  | |||
<pre>  | |||
sudo vi /etc/opendkim/trusted  | |||
</pre>  | |||
und darin alle Server eintragen die vertrauenswürdig sind und nicht geprüft werden sollen:  | |||
<pre>  | <pre>  | ||
127.0.0.1  | |||
::1  | |||
localhost  | |||
mail1  | |||
mail2  | |||
mail1.<domain>  | |||
mail2.<domain>  | |||
</pre>  | </pre>  | ||
=== 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 <code>signing.table</code> erstellen  | |||
<pre>  | |||
sudo vi /etc/opendkim/signing.table  | |||
</pre>  | |||
und mit folgenden Inhalt befüllen:  | |||
<pre>  | |||
# 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  | |||
</pre>  | |||
==== /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 <code>key.table</code> erstellen  | |||
<pre>  | |||
sudo vi /etc/opendkim/key.table  | |||
</pre>  | |||
und mit folgendem Inhalt befüllen:  | |||
<pre>  | |||
# 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  | |||
</pre>  | |||
==== Schlüssel generieren ====  | |||
{{note|Für mehrere Mailserver den selben Schlüssel verwenden.}}  | |||
<pre>  | |||
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  | |||
</pre>  | |||
Die Datei ''name.private'' enthält den privaten und ''name.txt'' den öffentlichen Schlüssel.  | |||
=== Service neu starten ===  | |||
<pre>  | |||
sudo systemctl restart opendkim.service  | |||
</pre>  | |||
== DNS-TXT-Eintrag hinzufügen ==  | |||
Mittels  | |||
<pre>  | |||
sudo cat /etc/opendkim/keys/kirner.txt  | |||
</pre>  | |||
den öffentlichen Schlüssel auslesen und den Teil vor ''IN'' als Name verwenden. Als Inhalt wird alles zwischen den runden Klammern eingefügt:   | |||
<pre>  | |||
202003._domainkey	 IN	TXT	( "v=DKIM1; h=sha256; k=rsa; s=email; " ... "... WDMLHi9cYwUKb0/SoBXIyNc4aQIDAQAB" )  ; ----- DKIM key 202003 for kirner.or.at  | |||
</pre>  | |||
Screenshot der Weboberfläche des DNS-Servers:  | |||
[[Datei:DomainKey.png]]  | |||
== OpenDKIM Testen ==  | |||
Mittels dem Komando ''host'' kann man testen, ob der Schlüssel am Domainserver schon verfügbar ist:  | |||
<pre>  | |||
host -t TXT 202003._domainkey.kirner.or.at  | |||
</pre>  | |||
Der Aufruf von <code>opendkim-testkey</code> sollte in etwa folgendes Ergebnis liefern:  | |||
<pre>  | |||
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  | |||
</pre>  | |||
Die Meldung ''Key not secure'' weist nur darauf hin, dass kein [https://de.wikipedia.org/wiki/Domain_Name_System_Security_Extensions DNSSEC] verwendet wurde.  | |||
== Postfix ==  | |||
Zum Einbinden von OpenDKIM in Postfix die Datei  | |||
<pre>  | |||
sudo vi /etc/postfix/main.cf  | |||
</pre>  | |||
bearbeiten und die oben definierte Schnittstelle <code>inet:localhost:8892</code> bei ''smtpd_milters'' und ''non_smtpd_milters'' (Komma-separiert) eintragen:  | |||
<pre>  | |||
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  | |||
</pre>  | |||
Zum Abschluss Postfix neu starten:  | |||
<pre>  | |||
sudo systemctl restart postfix.service  | |||
</pre>  | |||
== Finaler Test ==  | |||
Eine Mail an einen Server, der DKIM unterstützt, schicken.   | |||
Hier als Beispiel GMail - dort 'Original anzeigen' klicken - liefert folgende Anzeige:  | |||
{{note|Screenshot hinzufügen}}  | |||
== Links ==  | == Links ==  | ||
Aktuelle Version vom 27. März 2020, 18:21 Uhr
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
