STEPHANMUND.de

Mail

ePub

2008-07-07: DKIM- und DomainKeys Signaturen unter Debian mit Postfix

Dieser Artikel beschreibt die Installation und Einrichtung von DKIM- und DomainKeys-Signaturen von Emails unter Debian mit Postfix und DKIMproxy.

Einleitung

Immer mehr Provider, besonders im Ausland, verwenden ausser Content-Filtern, Black- und Whitelists sowie Spam-Filtern weitere Methoden, um sich vor SPAM zu schützen. Eine Art sind DNS-basierte Authentifizierungs-Methoden. Hierbei wird an Hand von Merkmalen in der Nachricht beim DNS-Server der Absender Domain überprüft, ob diese Email tatsächlich eine legitim versendete Mail für diese Domain ist.
Hier gibt es im Groben zwei Ansätze: Dieser Artikel beschäftigt sich mit der Implementierung der zweitgenannten Art.

Vorbereitung

Zunächst werden die Abhängigkeiten installiert:
# apt-get install postfix libssl-dev make autoconf gcc g++ libtool
Hierbei wird der Standard-Mailserver Exim deinstalliert. Danach werden die Perl-Module , installiert, die von DKIMproxy benötigt werden:
# cpan install Crypt::OpenSSL::RSA
# cpan install Mail::DKIM
# cpan install Error
# cpan install Net::Server

Installation DKIMproxy

Nachdem das Paket DKIMproxy heruntergeladen (Download) und extrahiert wurde, überprüft man mit dem Befehl
# ./configure --prefix=/usr/local/dkimproxy
die Erfüllung der Perl-Abhängigkeiten. Fehlen Module, kann man diese mit
# cpan install Modulname
nachinstallieren. Sind alle Abhängigkeiten erfüllt, wird das Paket mit
# make install
installiert.

Konfiguration DKIMproxy

Folgende Schritte sind nach der Installation nötig, damit DKIMproxy zuverlässig arbeitet: Sind diese Schritte erledigt, kann DKIMproxy konfiguriert werden. Folgende Konfiguration verwendet sowohl DKIM als auch DomainKeys zur Signatur. Die Domain muss natürlich nach eigenen Bedürfnissen angepasst werden:
# IP/Port auf dem DKIMproxy hört
listen 127.0.0.1:10027
# IP/Port an den DKIMproxy die signierte Mail weitergibt
relay 127.0.0.1:10028
# Domains, für die DKIMproxy signiert
domain example.org
# Signaturen, die durchgeführt werden sollen
signature dkim(c=relaxed)
signature domainkeys(c=nofws)
# Pfad zum Private Key
keyfile /usr/local/dkimproxy/etc/private.key
# Name des Selectors
selector dkim
# Benutzer und Gruppe
user dkimproxy
group dkimproxy
Diese Datei speichert man unter /usr/local/dkimproxy/etc/dkimproxy_out.cnf
DKIMproxy kann nun gestartet werden:
# /usr/local/dkimproxy/dkimproxy.out \
--conf_file=/usr/local/dkimproxy/etc/dkimproxy_out.cnf \
-daemonize

Konfiguration Postfix

Damit ausgehende Mails nun durch DKIMproxy signiert werden, müssen in der Datei /etc/postfix/master.cf folgende Abschnitte geändert bzw. hinzugefügt werden:
submission inet n - - - - smtpd
  -o smtpd_etrn_restrictions=reject
  -o smtpd_sasl_auth_enable=yes
  -o content_filter=dksign:[127.0.0.1]:10027
  -o receive_override_options=no_address_mappings
  -o smtpd_recipient_restrictions=permit_mynetworks,
    permit_sasl_authenticated,reject
dksign unix - - n - 10 smtp
  -o smtp_send_xforward_command=yes
127.0.0.1:10028 inet n - n - 10 smtpd
  -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
Alle Mails, die auf Port 587 eingereicht werden, werden nun durch DKIMproxy signiert, wenn die Absenderdomain mit der konfigurierten übereinstimmt.

Test

Um die Signatur zu testen, eignet sich der Versand einer Mail an einen Yahoo- und einen GoogleMail-Account. Bei Yahoo wird der Absender mit einem Schlüssel-Symbol gekennzeichnet, wenn die Signaturprüfung erfolgreich war:
Yahoo Absender-Signatur geprüft
Bei GoogleMail enthält die Quelltext-Ansicht der Empfangenen Nachricht ein zusätzliches Header-Feld "Authentication-Results", das bei erfolgreicher DKIM-Signatur-Prüfung den Eintrag "dkim=pass header.i=@domain.de" enthält. Eine weitere Test-Möglichkeit bieten verschiedene "Reflectors", Email-Adressen, an die man eine DKIM-Signierte Mail versendet und von denen man automatisch eine Antwort mit dem Überprüfungs-Ergebnis erhält. Beispiele für solche Adressen:

DKIM-Signaturprüfung

Mit DKIMproxy lassen sich auch eingehende Nachrichten auf eine gültige DKIM-Signatur prüfen. Hierzu erstellt man eine Konfigurationsdatei /usr/local/dkimproxy/etc/dkimproxy_in.conf mit folgendem Inhalt:
# IP/Port, auf dem DKIMproxy hört
listen 127.0.0.1:10025
# IP/Port, zu dem DKIMproxy überprüfte Nachrichten weiterleitet
relay 127.0.0.1:10026
Nun startet man DKIMproxy:
# /usr/local/dkimproxy/bin/dkimproxy.in \
--conf_file=/usr/local/dkimproxy/etc/dkimproxy_in.conf \
--daemonize

Auch zur Signaturprüfung bedarf es einiger Anpassungen in der master.cf von postfix:
smtp inet n - n - - smtpd
  -o smtpd_proxy_filter=127.0.0.1:10025
  -o smtpd_client_connection_count_limit=10
127.0.0.1:10026 inet n - n - - smtpd
  -o smtpd_authorized_xforward_hosts=127.0.0.0/8
  -o smtpd_client_restrictions=
  -o smtpd_helo_restrictions=
  -o smtpd_sender_restrictions=
  -o smtpd_recipient_restrictions=permit_mynetworks,reject
  -o smtpd_data_restrictions=
  -o mynetworks=127.0.0.0/8
  -o receive_override_options=no_unknown_recipient_checks
Erklärung: Direkt nach dem Eingang der Nachricht an Port 25 wird die Mail zur Überprüfung an DKIMproxy an Port 10025 weitergeleitet. Nach der Überprüfung wird die Mail an Port 10026 wieder durch postfix entgegengenommen und weiter verarbeitet. Ob die Signaturprüfung erfolgreich war, erkennt man an einem zusätzlichen Header-Feld "Authentication-Results", das den Signaturstatus enthält.
DKIM
DomainKeys Library
DKIMproxy

ePub

Kommentare

Kommentieren
Bisher keine Kommentare.
Wegen eines übermäßigen Spam-Aufkommens ist die Kommentar-Funktion bis auf weiteres deaktiviert.
Zurück zu Technik | Mail
Hat Ihnen der Artikel weitergeholfen? Sie wollen sich in irgendeiner Art für die geleistete Hilfe erkenntlich zeigen? Schauen Sie doch einmal auf meiner Amazon-Wunschliste vorbei, ich freue mich immer über eine kleine Sachspende:
Zur Wunschliste