konstantin.saurbier.net

Domain Keys Identified Mail

1. Einleitung

Domain Keys Identified Mail (DKIM) ist eine Methode zur Bekämpfung von Spam. Hierbei werden alle ausgehenden Mails vom Absendenden Server kryptographisch signiert. Die Signatur kann vom Empfä geprüft werden.
So lässt sich feststellen ob eine Mail verändert wurde, oder vielleicht auch von einem nicht-autorisierten Server kam.
Weiteres ist unter Dkim.org nachzulesen.

2. Installation

DKIM wird über das Programm dkim-milter eingebunden, es prüft auf Wunsch sowohl eingehende Mails (auf vorhandene/gültige Signatur) und signiert ausgehende Mails.
Die Installation läuft über die Ports:

cd /usr/ports/mail/dkim-milter
make -DWITH_POSTFIX install distclean

3. Konfiguration

Damit DKIM genutzt werden kann müssen sowohl Postfix als auch dkim-milter erst konfiguriert werden. Außerdem müssen die Schlüssel erzeugt und im DNS der Absender-Domain eingetragen werden.

3.1 Konfiguration von dkim-milter

Als erstes muss natürlich der dkim-milter-Daemon aktiviert werden, damit man ihn über das RC-Skript starten kann.

echo "milterdkim_enable=\"YES\"" >> /etc/rc.conf

Anschließend muss die Konfiguration von dkim-milter selbst angepasst werden sie liegt unter /usr/local/etc/mail/dkim-filter.conf und ist gut dokumentiert.
Zusätzlich gibt es eine Manpage für die Datei:

man 5 dkim-filter.conf

Hier im einzelnen die Felder die geändert werden müssen:

ADSPDiscard No
ADSPNoSuchDomain No

AlwaysAddARHeader yes
AuthservIDWithJobId yes

Domain /usr/local/etc/postfix/dkim/domainlist
KeyList /usr/local/etc/postfix/dkim/keylist
Mode sv

On-Default accept
On-BadSignature accept
On-DNSError accept
On-InternalError accept
On-NoSignature accept
On-Security accept

Socket inet:10027@localhost

X-Header Yes

Die vollständige Datei kann hierheruntergeladen werden.

Dkim-milter erwartet nun einige Verzeichnisse und Dateien unterhalb des Konfigurationsverzeichnisses von Postfix. Diese müssen vor dem Starten des Daemons erstellt werden.

mkdir /usr/local/etc/postfix/dkim

In die Datei /usr/local/etc/postfix/dkim/domainlist schreiben wir alle Domains, für die dkim-milter die Mails signieren soll. Je eine Domain pro Zeile, leere Zeilen und Zeilen mit # am Anfang werden ignoriert.
Beispiel:

saurbier.net

Auch welcher Key für welche Domain/Absenderadresse genutzt werden soll muss dkim-milter gesagt werden. Dies teilt man dkim-milter in der Datei /usr/local/etc/postfix/dkim/keylist mit.
Dabei können für fur die Absenderadresse auch Platzhalter wie * genutzt werden.
Die Syntax der Datei lautet:

Absender:Domain in der der Schlüssel zu finden ist:Pfad zum Schlüssel

Dabei ist der Dateiname der sogenannte Selector, d.h. der Name des Schlüssels in der Zone. Daher sollte der Dateiname ohne Endung aufgeführt werden, dkim-milter hängt bei bedarf automatisch .pem oder .private an um die Datei zu finden. Beispiel:

# Ein Schlüssel für alle Domains
# Selector=2009, Datei ist 2009.pem, Zone in Domain: 2009._domainkey
*:saurbier.net:/usr/local/etc/postfix/dkim/saurbier.net/2009

# Ein Schlüssel für alle Absender einer Domain
*@saurbier.net:saurbier.net/usr/local/dkim/saurbier.net/2009

3.2 Erzeugen der Schlüssel

Jetzt werden die Schlüssel erzeugt. Dafür gibt es bereits ein Bequemes Skript, welches auch direkt den Eintrag für die Domain vorbereitet. Dieses Skript ist hier zu finden.

chmod +x dkim-genkey.sh
mkdir /usr/local/etc/postfix/dkim/saurbier.net
./dkim-genkey.sh -d saurbier.net -s 2009 -D /usr/local/etc/postfix/dkim/saurbier.net

Mit diesem Befehl erzeugt das Skript den Schlüssel für die Domain saurbier.net im passenden Verzeichnis. Die Datei heißt 2009.private und wird von dkim-milter gefunden. Außerdem erzeut es eine Textdatei (2009.txt) mit einem DNS-Record, welcher noch in die Zone von saurbier.net übernommen werden muss.

3.3 Konfiguration von Postfix

Für die Konfiguration von Postfix muss die main.cf angepasst werden. Dafü trägt man zwei Zeilen ein:

smtpd_milters = inet:127.0.0.1:10027
non_smtpd_milters = inet:127.0.0.1:10027

Wenn eingehende Mails bereits an einen Filterdienst (z.B. Spamassassin) übergeben werden und anschließ wieder zurück an Postfix geschickt werden, sollte die zweite Zeile (non_smtpd_milters) evtl. entfernt werden, da eingehende Mails sonst zweimal geprüft werden.

4. Starten des Dkim-milter-Daemons und neu-starten von Postfix

Als letzter Schritt müssen noch die Programme (neu-) gestartet werden damit die Änderungen wirksam werden:

/usr/local/etc/rc.d/milter-dkim start
postfix reload

Viel Spaß!

Permalink

Letzte Aktualisierung: 2012-08-28 09:55:11 CEST