Postfix unter Gentoo mit DKIM ausrüsten

DomainKeys ist ein Identifikationsprotokoll zur Sicherstellung der Authentizität von E-Mail-Absendern, das von Yahoo entwickelt wurde und seit Ende 2004 in Erprobung ist. Es wurde konzipiert, um bei der Eindämmung von unerwünschter E-Mail wie Spam oder Phishing zu helfen.

[Quelle: Wikipedia]

Dieses Protokoll wird inzwischen zum Beispiel von Google in GMail zur Identifizierung eingesetzt. Deswegen hier mal ein mini-HowTo zum Einbau von DKIM in Postfix unter Gentoo. Mit einigen Änderungen sollte das Ganze auch auf anderen Distributionen einsetzbar sein...

Als erstes brauchen wir zur Einrichtung das Paket mail-filter/dkim-milter, welches die DKIM-Funktionalität bereit stellt:

# echo "mail-filter/dkim-milter ~x86" >> /etc/portage/package.keywords
# emerge mail-filter/dkim-milter
Als nächstes muss, da es sich hierbei um eine Signierung mit Keyfiles handelt, ein Schlüssel generiert werden:
# emerge --config mail-filter/dkim-milter
Dabei wird nach dem Namen des "Selektor" gefragt. Dieser wird später in der Konfiguration ebenfalls angegeben um den Schlüssel auszuwählen. Damit können für verschiedene Zwecke verschiedene Schlüssel verwendet werden. Das ganze sieht dann ungefähr so aus:
Enter the selector name (default YourHostname): default
* Select the size of private key:
*   [1] 512 bits
*   [2] 1024 bits
Press 1 or 2 on the keyboard to select the key size
Ich verwende in dieser Anleitung den Namen "default" und einen 1024bit-Schlüssel. Wenn bei der Generierung ein anderer Verwendet wird, müsst Ihr natürlich diesen eintragen.

Die Generierung des Schlüsselpaars wird von einigen Anweisungen gefolgt, die eigentlich 1:1 übernommen werden können:

* Make sure you have the following settings in your dkim-filter.conf:
*   Keyfile /etc/mail/dkim-filter/default.private
*   Selector default
Die hier erwähnte Datei ist die Datei "/etc/mail/dkim-filter/dkim-filter.conf". Dort sucht Ihr nach den oben erwähnten Anweisungen und ändert diese entsprechend. Was netterweise von den Scripten nicht erwähnt wird ist, dass die Anweisung "Domain" auch angepasst werden muss. Da wird Kommasepariert jede Domain eingetragen, für die die Signierung durchgeführt werden soll. Ohne die Liste gibt es keine Signierung. Sollen verschiedene Schlüssel verwendet werden, muss die Anweisung "KeyList" angepasst werden. Darauf gehe ich hier allerdings nicht weiter ein.
* If you are using Postfix, add following lines to your main.cf:
*   smtpd_milters     = unix:/var/run/dkim-filter/dkim-filter.sock
*   non_smtpd_milters = unix:/var/run/dkim-filter/dkim-filter.sock
* After you configured your MTA, publish [...]
Diese beiden Anweisungen habe ich nicht so übernommen, da der Zugriff via Socket-Dateien aufgrund von Berechtigungsproblemen nicht funktionierte. Bei mir sehen die Anweisungen wie folgt aus:
smtpd_milters         = inet:127.0.0.1:10050
non_smtpd_milters     = inet:127.0.0.1:10050
Dabei muss allerdings in der DKIM-Konfiguration die "Socket"-Anweisung ebenfalls angepasst werden:
Socket                  inet:10050@127.0.0.1
Danach kann dann der dkim-filter in den Autostart aufgenommen werden:
# rc-update add dkim-filter default
Natürlich müssen die Dienste danach (neu)gestartet werden:
# /etc/init.d/dkim-filter start
# /etc/init.d/postfix restart
Als letzter Schritt wird dann für jede Domain, die in der "Domain"-Anweisung steht ein TXT-DNS Record angelegt. Da kommt der Inhalt rein, der vom Konfigurationsscript schon vorbereitet wurde:
default._domainkey IN TXT "v=DKIM1; g=*; k=rsa; p=[...]"
Der Record für die Domain example.com lautet dann halt "default._domainkey.example.com" mit dem Inhalt, der zwischen den Anführungszeichen aufgelistet wurde. (Bitte nicht meine drei Punkte abschreiben sondern das, was Ihr vom Script in der Konsole stehen habt!)

Zum Testen des ganzen könnt Ihr dann nach einiger Zeit (DNS braucht ja nunmal seine Zeit) indem Ihr eine leere Mail (Oder mit komischem Zeugs drin) an die Adresse "autorespond+dkim@dk.elandsys.com" schickt. Ein paar Minuten später kommt eine Antwort von dem Autoresponder in der er eure Mail mit den Headern einträgt und sein Prüfungsresultat. Das Resultat sollte dann so aussehen:

DKIM Test: pass
Wenn nicht sind weiter unten noch Meldungen enthalten anhand derer Ihr schauen könnt warum es nicht funktioniert. Sollte es wie erwartet geklappt haben: Herzlichen Glückwunsch. Ihr habts geschafft!

(Wer Fehler im HowTo findet schiebt mir die bitte unauffällig unter dem Tisch durch zu damit ich sie korrigieren kann ;) )