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ß!