OpenDKIM (Ubuntu 18.04): Unterschied zwischen den Versionen

Aus Tutorials
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „{{note|Noch in Bearbeitung}} == Links == [https://adminforge.de/mailserver/postfix-dkim-und-spf-einrichten/ https://adminforge.de/mailserver/postfix-dkim-un…“)
 
 
(46 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
{{note|Noch in Bearbeitung}}
== 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>
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 ==


[https://adminforge.de/mailserver/postfix-dkim-und-spf-einrichten/ https://adminforge.de/mailserver/postfix-dkim-und-spf-einrichten/]
[https://adminforge.de/mailserver/postfix-dkim-und-spf-einrichten/ https://adminforge.de/mailserver/postfix-dkim-und-spf-einrichten/]
[https://kofler.info/dkim-konfiguration-fuer-postfix/ https://kofler.info/dkim-konfiguration-fuer-postfix/]




Zurück zu [[Mailserver einrichten (Ubuntu 18.04)#Einrichtung|Mailserver einrichten]]
Zurück zu [[Mailserver einrichten (Ubuntu 18.04)#Einrichtung|Mailserver einrichten]]

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:

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