Postfix Configuration · 4 min read · Nov 28, 2025

Postfix avec dkfilter (Implémentation de DomainKeys)

Postfix avec dkfilter (Implémentation de DomainKeys)

Auteur : Sohail Riaz

DomainKeys est une application logicielle anti-spam en développement chez Yahoo qui utilise une forme de cryptographie à clé publique pour authentifier le domaine de l'expéditeur. dkfilter est un proxy SMTP conçu pour Postfix. Il implémente la signature et la vérification des messages DomainKeys. Il comprend deux filtres distincts, un filtre "sortant" pour signer les e-mails sortants sur le port 587, et un filtre "entrant" pour vérifier les signatures des e-mails entrants sur le port 25. Ce document a pour but de décrire étape par étape comment installer dkfilter pour postfix afin de déployer la signature et la vérification DomainKeys. ### 1 Installer Postfix Installez postfix pour votre domaine afin d'envoyer et de recevoir des mails. ### 2 Résoudre les dépendances - Installer les modules Perl Dkfilter est écrit en Perl. Il nécessite les modules Perl suivants de l'archive CPAN. ``` * Crypt::OpenSSL::RSA * Mail::Address * MIME::Base64 * Net::DNS * Test::More * Text::Wrap * Mail::DomainKeys ``` Les commandes suivantes peuvent aider. ``` 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")' ``` Remarque : Résolvez également tout module Perl dépendant requis pour l'installation des modules Perl ci-dessus. ### 3 Installer dkfilter Les étapes suivantes sont recommandées pour installer dkfilter : i. Téléchargez dkfilter depuis l'URL suivante : http://jason.long.name/dkfilter/dkfilter-0.11.tar.gz ii. Installer dkfilter ``` tar xvf dkfilter-0.11.tar.gz cd dkfilter-0.11 ./configure --prefix=/usr/local/dkfilter make install useradd dkfilter ``` Les scripts de filtre seront installés dans /usr/local/dkfilter/bin et les fichiers de module Perl seront dans /usr/local/dkfilter/lib. ### 4 Configuration du filtre entrant Nous devons apporter les modifications pertinentes dans les fichiers de configuration de Postfix pour vérifier les e-mails entrants pour la signature. vi /etc/postfix/master.cf ``` # # Serveur SMTP avant filtre. Recevez des mails du réseau et # passez-les au filtre de contenu sur le port localhost 10025. # smtp inet n - n - - smtpd -o smtpd_proxy_filter=127.0.0.1:10025 -o smtpd_client_connection_count_limit=10 # # Serveur SMTP après filtre. Recevez des mails du filtre de contenu sur # le port localhost 10026. # 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 ``` Insérez les lignes ci-dessus à la fin des fichiers. Ici, nous définissons que le mail sera reçu après smtp pour vérification sur 127.0.0.1 avec le port 10026. Vous pouvez définir votre propre adresse IP souhaitée sur laquelle vous souhaitez écouter pour la vérification de la signature. ### 5 Configuration du filtre sortant Le filtre sortant a besoin d'accéder à la clé privée utilisée pour signer les messages. De plus, il doit connaître le nom du sélecteur de clé utilisé et pour quel domaine il doit signer les messages. Ces informations sont spécifiées avec des arguments de ligne de commande à dkfilter.out. 1. Générez une paire de clés privée/publique et publiez la clé publique dans DNS. ``` cd /usr/local/dkfilter openssl genrsa -out private.key 1024 openssl rsa -in private.key -pubout -out public.key ``` Cela crée les fichiers private.key et public.key dans le répertoire actuel, contenant la clé privée et la clé publique. Assurez-vous que private.key n'est pas lisible par tout le monde, mais reste lisible par l'utilisateur dkfilter. 2. Choisissez un nom de sélecteur... par exemple m1 3. Mettez les données de la clé publique dans DNS, dans votre domaine, en utilisant le nom de sélecteur que vous avez choisi. Copiez le contenu du fichier public.key, supprimez l'en-tête et le pied PEM, et collez-le dans le fichier de zone DNS en créant une entrée TXT, comme ceci : ``` _domainkey.sohailriaz.com IN TXT “t=y; o=-;” m1._domainkey.sohailriaz.com IN TXT "g=; k=rsa; p=MHwwDQYJK ... OprwIDAQAB;" ``` où m1 est le nom du sélecteur choisi à l'étape précédente et le paramètre p= contient la clé publique sous forme d'une longue chaîne de caractères. Enfin, configurez Postfix pour filtrer uniquement les messages sortants autorisés via le service dkfilter.out sur le port 10027. Dans l'exemple suivant, les messages envoyés via SMTP sur le port 587 (le port de soumission) passeront par un filtre de contenu After-Queue qui signe les messages avec DomainKeys. ``` vi /etc/postfix/master.cf ``` ``` # # modifiez le service de soumission par défaut pour spécifier un filtre de contenu # et le restreindre uniquement aux clients locaux et aux clients authentifiés SASL # 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 # # spécifiez l'emplacement du filtre de signature DomainKeys # dksign unix - - n - 10 smtp -o smtp_send_xforward_command=yes -o smtp_discard_ehlo_keywords=8bitmime # # service pour accepter les messages DE filtre de signature DomainKeys # 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 ``` Exécutez postfix reload pour que Postfix réponde aux changements dans /etc/postfix/master.cf. ``` postfix reload ``` ### 6 Script de démarrage Téléchargez un script de démarrage/arrêt depuis le site suivant : http://www.enterux.com/files/dkfilter Copiez ce script dans /etc/rc.d/init.d et modifiez-le selon vos besoins. ### 7 Références http://www.postfix.org http://antispam.yahoo.com/domainkeys http://jason.long.name/dkfilter/
Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.