DomainKeys / DKIM
Inhaltsverzeichnis |
DomainKeys & DKIM
DomainKeys und DKIM wurden mit dem Ziel der Eindämmung von E-Mail Spam entwickelt. Die entsprechende Technik muss beim Postausgangsserver und DNS-Server der versendenden Seite sowie beim Spamfilter der empfangenden Seite installiert werden. Der Empfänger kann dann feststellen, ob ihm die E-Mail von einem autorisierten E-Mail Server zugestellt wurde, oder möglicherweise gefälscht ist.
Funktionsweise
Der versendete Server signiert die ausgehende E-Mail und schreibt die Signatur in spezielle Tags im Header. Der empfangende Server besorgt sich zur Prüfung der Signatur zunächst den dazugehörigen öffentlichen Schlüssel (Public Key) vom für die Absenderdomain zuständigen DNS-Server und kann anhand dessen die Gültigkeit der Signatur prüfen.
Es ist dabei durchaus möglich, E-Mails von mehreren Absenderdomains mit ein und demselben Zertifikat zu signieren. Jede Absenderdomain benötigt lediglich die entsprechenden TXT DNS-Records im Nameserver.
Einrichtung / Installation unter Postfix
Die Einrichtung von (ausgehenden) DomainKeys mit Postfix besteht aus folgenden Schritten:
1. Installation der DomainKeys/DKIM-Lösung für den MTA, zum Beispiel "DomainKeys filter for Postfix" von Jason Long (http://jason.long.name/dkfilter/). Diese Lösung agiert als eigenständiger Server, der lediglich für die Signierung der E-Mails zuständig ist und per master.cf in die Postfix-Pipe eingebunden wird.
Installation benötigter Module
# apt-get install libmail-dkim-perl # cpan install Mail::DKIM
Herunterladen, entpacken, installieren
# wget http://surfnet.dl.sourceforge.net/sourceforge/dkimproxy/dkimproxy.tar.gz # tar -xvf dkimproxy-1.0.1.tar.gz # cd dkimproxy-1.0.1 # ./configure --prefix=/usr/local/dkimproxy # make install # useradd dkim # cp sample-dkim-init-script.sh /etc/init.d/dkim
Generieren des privaten und des öffentlichen Schlüssels
# cd /usr/local/dkimproxy/etc # openssl genrsa -out private.key 1024 # openssl rsa -in private.key -pubout -out public.key
Konfigurieren von dkimproxy
# cd /usr/local/dkimproxy/etc # cp dkimproxy_out.conf.example dkimproxy_out.conf
In der Datei dkimproxy_out.conf müssen folgende Anpassungen vorgenommen werden:
- domain - Hier muss die Liste der zu signierenden Absenderdomains eingetragen werden (z. B. domain line5.tv,line5.de,line5.eu). Wichtig ist, dass kein Leerzeichen zwischen den Domains steht, sondern nur jeweils ein Komma.
- Die Zeile "keyfile" soll wie folgt aussehen: keyfile /usr/local/dkimproxy/etc/private.key
Der Rest kann bleiben, wie er ist. DKIMproxy kann nun - für ausgehende E-Mails - gestartet werden:
# /etc/init.d/dkim start-out
Konfigurieren von Postfix
In der Datei <hh>/etc/postfix/master.cf</hh> müssen einige Anpassungen vorgenommen werden:
a)
# Die erste "smtp"-Zeile muss durch eine -o .... Zeile ergänzt werden:
smtp inet n - n - - smtpd
-o content_filter=dksign:[127.0.0.1]:10027
# Bitte die Leerzeichen / Tabs vor dem "-o" übernehmen.
# Postfix wird hier angewiesen, E-Mails an DKIMproxy weiterzuleiten.
b)
# Diese Zeilen können weiter unten eingefügt werden, z. B. am Ende:
dksign unix - - n - 10 smtp
-o smtp_send_xforward_command=yes
c)
# Diese Zeilen können nach (b) eingefügt werden:
127.0.0.1:10028 inet n - n - 10 smtpd
-o content_filter=
-o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
-o smtpd_helo_restrictions=
-o smtpd_client_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks=127.0.0.0/8
-o smtpd_authorized_xforward_hosts=127.0.0.0/8
-o smtpd_use_tls=no
Hinzufügen der DNS-Records
Dem entsprechenden Nameserver müssen zwei DNS-Records hinzugefügt werden:
| selector1._domainkey.line5.tv | TXT | t=y; o=~; n=http://antispam.yahoo.com/domainkeys |
| _domainkey.line5.tv | TXT | k=rsa; t=y; p=MIGfMA...DAQAB |
"MIGfMA...DAQAB" muss durch den öffentlichen Schlüssel (Public Key) ersetzt werden. Dieser befindet sich in der Datei /usr/local/dkimproxy/etc/public.key. Der Public Key ist der Abschnitt zwischen den Zeichenfolgen -----BEGIN PUBLIC KEY----- und -----END PUBLIC KEY----- ohne Zeilenumbrüche (diese müssen unbedingt vor Einfügen in den DNS-Record gelöscht werden).
Für die Klassifizierung von eingehenden E-Mails sollte eine Erweiterung des Spamfilters genügen, da lediglich DNS-Abfragen und die Überprüfung von Zertifikaten notwendig sind.
DomainKeys-DNS / DKIM-DNS
Argumente DomainKeys DNS-Eintrag
Hostname: _domainkeys.meinedomain.de
Die Parameter werden durch Semikolon und Leerzeichen voneinander getrennt, z. B.: t=y; o=~
| Parameter | Erklärung |
| n | Kommentar
n=http://antispam.yahoo.com/domainkeys |
| o | Gibt an, ob alle oder manche (~) E-Mails signiert sind
o=~ |
| t | Gibt an, ob die Domain im Testmodus (y) ist
t=y |
Argumente DomainKeys Selector-DNS-Eintrag
Hostname: selector1._domainkeys.meinedomain.de ("selector1" ggf. durch anderen Selector ersetzen)
Die Parameter werden durch Semikolon und Leerzeichen voneinander getrennt, z. B. t=y; k=rsa
| Parameter | Erklärung |
| k | Key-Typ
k=rsa |
| n | Kommentar
n=http://antispam.yahoo.com/domainkeys |
| p | Public Key
p=MIGfMA0GCSqGSIb3DQEBAQUAA4...US+bZNm5cXgAmqb27wzqCTcfDXEb3AwIDAQAB Der Key darf keine Leerzeichen und/oder Zeilenumbrüche enthalten. |
| t | Gibt an, ob die Domain im Testmodus (y) ist
t=y |
Weitere Einstellungen: http://dkim.org/specs/rfc4871-dkimbase.html#key-text
Beispiel DNS-Einträge
Mit diesen DNS Records werden die E-Mails von Yahoo akzeptiert ("Dieser Absender wurde mit DomainKeys überprüft").
Record |
Inhalt |
| selector1._domainkey.line5.tv | t=y; o=~; n=http://antispam.yahoo.com/domainkeys |
| _domainkey.line5.tv | k=rsa; t=y; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDiNcEarFkyAZOz16d2JVlcwNXoUyUhcUuztka43it+Cq+TY/PLLLVHIe6KqNLd5B66AmXjbdLLfQHU41PWQ/grf8Bgdqn9ZB0+B2qKl7OTqsTVYoSYuV69JJSxUy8ZywJ0ic20B7G1F44US+bZNm5cXgAmqb27wzqCTcfDXEb3AwIDAQAB |
DNS Check
Mit diesen Werkzeugen lassen sich die DomainKeys DNS-Einträge prüfen:
- DomainKey Policy Record Tester: http://domainkeys.sourceforge.net/policycheck.html
- DomainKey Selector Record Tester: http://domainkeys.sourceforge.net/selectorcheck.html
Vorsicht: Beide Tools haben eine sehr lange Refresh-Zeit. Try-And-Error kann sich hinziehen...
Links
- DomainKeys Projektseite bei Sourceforge (Projekt eingestellt) http://domainkeys.sourceforge.net/
- DKIM http://www.dkim.org
- DKIM und DomainKeys für Postfix: http://jason.long.name/dkfilter/
- Anleitung: http://bliki.rimuhosting.com/space/knowledgebase/linux/mail/dkfilter+setup (englisch)
- Anleitung: http://www.howtoforge.com/how-to-implement-domainkeys-in-postfix-using-dk-milter-centos5.1 (englisch)
- Anleitung: http://anothersysadmin.wordpress.com/2008/01/16/domainkeysdkim-with-postfix/ (englisch)