Postfix · 3 min read · Nov 28, 2025

Postfix mit dkfilter (DomainKeys-Implementierung)

Postfix mit dkfilter (DomainKeys-Implementierung)

Autor: Sohail Riaz

DomainKeys ist eine Anti-Spam-Softwareanwendung, die bei Yahoo entwickelt wird und eine Form der Public-Key-Kryptographie verwendet, um die Domain des Absenders zu authentifizieren. dkfilter ist ein SMTP-Proxy, der für Postfix entwickelt wurde. Es implementiert die Signierung und Überprüfung von DomainKeys-Nachrichten. Es besteht aus zwei separaten Filtern, einem "Outbound"-Filter zum Signieren von ausgehenden E-Mails über Port 587 und einem "Inbound"-Filter zur Überprüfung von Signaturen eingehender E-Mails über Port 25. Dieses Dokument beschreibt Schritt für Schritt, wie man dkfilter für Postfix installiert, um die Signierung und Überprüfung von DomainKeys bereitzustellen. ### 1 Postfix installieren Installieren Sie Postfix für Ihre Domain, um E-Mails zu senden und zu empfangen. ### 2 Abhängigkeiten auflösen - Perl-Module installieren Dkfilter ist in Perl geschrieben. Es benötigt die folgenden Perl-Module aus dem CPAN-Archiv. ```     * Crypt::OpenSSL::RSA     * Mail::Address     * MIME::Base64     * Net::DNS     * Test::More     * Text::Wrap     * Mail::DomainKeys ``` Die folgenden Befehle helfen dabei. ``` perl -MCPAN -e'CPAN::Shell->install("Crypt::OpenSSL::RSA")' perl -MCPAN -e'CPAN::Shell->install("Mail::Address")' perl -MCPAN -e'CPAN::Shell->install("MIME::Base64")' perl -MCPAN -e'CPAN::Shell->install("Net::DNS")' perl -MCPAN -e'CPAN::Shell->install("Test::More")' perl -MCPAN -e'CPAN::Shell->install("Text::Wrap")' perl -MCPAN -e'CPAN::Shell->install("Email::Address")' perl -MCPAN -e'CPAN::Shell->install("Mail::DomainKeys")' ``` Hinweis: Lösen Sie auch alle abhängigen Perl-Module, die zur Installation der oben genannten Perl-Module erforderlich sind. ### 3 dkfilter installieren Die folgenden Schritte werden für die Installation von dkfilter empfohlen: i. Laden Sie dkfilter von folgender URL herunter: http://jason.long.name/dkfilter/dkfilter-0.11.tar.gz ii. dkfilter installieren ``` tar xvf dkfilter-0.11.tar.gz cd dkfilter-0.11 ./configure --prefix=/usr/local/dkfilter make install useradd dkfilter ``` Die Filter-Skripte werden in /usr/local/dkfilter/bin installiert und die Perl-Moduldateien befinden sich in /usr/local/dkfilter/lib. ### 4 Eingehenden Filter einrichten Wir müssen relevante Änderungen in den Postfix-Konfigurationsdateien vornehmen, um eingehende E-Mails auf die Signatur zu überprüfen. vi /etc/postfix/master.cf ``` # # Vorfilter SMTP-Server. E-Mails vom Netzwerk empfangen und # an den Inhaltsfilter auf localhost Port 10025 weiterleiten. # smtp inet n - n - - smtpd -o smtpd_proxy_filter=127.0.0.1:10025 -o smtpd_client_connection_count_limit=10 # # Nachfilter SMTP-Server. E-Mails vom Inhaltsfilter auf # localhost Port 10026 empfangen. # 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 ``` Fügen Sie die obigen Zeilen am Ende der Datei ein. Hier definieren wir, dass E-Mails nach dem SMTP zur Überprüfung auf 127.0.0.1 mit Port 10026 empfangen werden. Sie können Ihre eigene gewünschte IP-Adresse definieren, auf der Sie auf Signaturprüfungen hören möchten. ### 5 Ausgehenden Filter einrichten Der ausgehende Filter benötigt Zugriff auf den privaten Schlüssel, der zum Signieren von Nachrichten verwendet wird. Darüber hinaus muss er den Namen des verwendeten Schlüsselauswählers und die Domain kennen, für die er Nachrichten signieren soll. Diese Informationen werden mit Befehlszeilenargumenten an dkfilter.out übergeben. 1. Erstellen Sie ein privates/öffentliches Schlüsselpaar und veröffentlichen Sie den öffentlichen Schlüssel in DNS. ``` cd /usr/local/dkfilter openssl genrsa -out private.key 1024 openssl rsa -in private.key -pubout -out public.key ``` Dies erstellt die Dateien private.key und public.key im aktuellen Verzeichnis, die den privaten Schlüssel und den öffentlichen Schlüssel enthalten. Stellen Sie sicher, dass private.key nicht für alle lesbar ist, aber dennoch vom dkfilter-Benutzer lesbar ist. 2. Wählen Sie einen Selektornamen... z.B. m1 3. Geben Sie die öffentlichen Schlüssel-Daten in DNS, in Ihrer Domain, unter Verwendung des von Ihnen gewählten Selektornamens ein. Kopieren Sie den Inhalt der Datei public.key, entfernen Sie den PEM-Header und -Footer und fügen Sie ihn in die DNS-Zonendatei ein, indem Sie einen TXT-Eintrag erstellen, wie folgt: ``` _domainkey.sohailriaz.com IN TXT “t=y; o=-;” m1._domainkey.sohailriaz.com IN TXT "g=; k=rsa; p=MHwwDQYJK ... OprwIDAQAB;" ``` wobei m1 der Name des im letzten Schritt gewählten Selektors ist und der p=-Parameter den öffentlichen Schlüssel als eine lange Zeichenkette enthält. Schließlich konfigurieren Sie Postfix so, dass nur ausgehende, autorisierte Nachrichten über den Dienst dkfilter.out auf Port 10027 gefiltert werden. Im folgenden Beispiel werden Nachrichten, die über SMTP auf Port 587 (dem Übermittlungsport) gesendet werden, durch einen After-Queue-Inhaltsfilter geleitet, der Nachrichten mit DomainKeys signiert. ``` vi /etc/postfix/master.cf ``` ``` # # Ändern Sie den Standardübermittlungsdienst, um einen Inhaltsfilter anzugeben # und beschränken Sie ihn nur auf lokale Clients und SASL-authentifizierte Clients # submission inet n - 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 # # Geben Sie den Standort des DomainKeys-Signierungsfilters an # dksign unix - - n - 10 smtp -o smtp_send_xforward_command=yes -o smtp_discard_ehlo_keywords=8bitmime # # Dienst zum Akzeptieren von Nachrichten VON dem DomainKeys-Signierungsfilter # 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 ``` Führen Sie postfix reload aus, damit Postfix auf Änderungen in /etc/postfix/master.cf reagiert. ``` postfix reload ``` ### 6 Startskript Laden Sie ein Start-/Herunterfahrskript von folgender Seite herunter: http://www.enterux.com/files/dkfilter Kopieren Sie dieses Skript in /etc/rc.d/init.d und bearbeiten Sie es nach Ihren Anforderungen. ### 7 Referenzen http://www.postfix.org http://antispam.yahoo.com/domainkeys http://jason.long.name/dkfilter/
Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.