OpenDKIM (Ubuntu 18.04): Unterschied zwischen den Versionen
(41 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
== Installation == | |||
<pre> | |||
sudo apt-get install -y opendkim opendkim-tools | |||
</pre> | |||
== 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 === | |||
Die Datei <code>opendkim.conf</code> bearbeiten | |||
<pre> | |||
sudo vi /etc/opendkim.conf | |||
</pre> | |||
und folgende Werte anpassen/ergänzen: | |||
<pre> | |||
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 | |||
</pre> | |||
=== /etc/default/opendkim === | |||
Die Datei <code>opendkim</code> wird standardmäßig auch ausgewertet. Daher die Datei editieren | |||
<pre> | |||
sudo vi /etc/default/opendkim | |||
</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> | |||
127.0.0.1 | |||
::1 | |||
localhost | |||
mail1 | |||
mail2 | |||
mail1.<domain> | |||
mail2.<domain> | |||
</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> | <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> | </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> | <pre> | ||
sudo vi /etc/postfix/main.cf | |||
</pre> | </pre> | ||
bearbeiten und die oben definierte Schnittstelle <code>inet:localhost:8892</code> bei ''smtpd_milters'' und ''non_smtpd_milters'' (Komma-separiert) eintragen: | |||
<pre> | <pre> | ||
sudo | 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> | </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