OpenDKIM (Ubuntu 18.04): Unterschied zwischen den Versionen

Aus Tutorials
Zur Navigation springen Zur Suche springen
 
(42 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 ==


== Installation ==
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>
<pre>
sudo apt-get install opendkim opendkim-tools
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>
</pre>


== Konfigurtion ==
Zum Abschluss Postfix neu starten:


<pre>
<pre>
mkdir -p /etc/opendkim/keys
sudo systemctl restart postfix.service
chown -R opendkim:opendkim /etc/opendkim
chmod 700 /etc/opendkim/keys
</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:

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