Postfix, dkfilter · 4 min read · Nov 28, 2025

Postfix con dkfilter (Implementazione di DomainKeys)

Postfix con dkfilter (Implementazione di DomainKeys)

Autore: Sohail Riaz

DomainKeys è un'applicazione software anti-spam in fase di sviluppo presso Yahoo che utilizza una forma di crittografia a chiave pubblica per autenticare il dominio del mittente. dkfilter è un proxy SMTP progettato per Postfix. Implementa la firma e la verifica dei messaggi DomainKeys. Comprende due filtri separati, un filtro "in uscita" per firmare le email in uscita sulla porta 587 e un filtro "in entrata" per verificare le firme delle email in arrivo sulla porta 25. Questo documento descrive passo dopo passo come installare dkfilter per postfix per implementare la firma e la verifica dei domainkeys. ### 1 Installare Postfix Installa postfix per il tuo dominio per inviare e ricevere email. ### 2 Risoluzione delle dipendenze - Installazione dei moduli Perl Dkfilter è scritto in Perl. Richiede i seguenti moduli Perl dall'archivio CPAN. ```     * Crypt::OpenSSL::RSA     * Mail::Address     * MIME::Base64     * Net::DNS     * Test::More     * Text::Wrap     * Mail::DomainKeys ``` I seguenti comandi possono aiutare. ``` 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")' ``` Nota: Risolvi anche eventuali moduli Perl dipendenti richiesti per l'installazione dei moduli Perl sopra. ### 3 Installare dkfilter I seguenti passaggi sono raccomandati per installare dkfilter: i. Scarica dkfilter dal seguente URL: http://jason.long.name/dkfilter/dkfilter-0.11.tar.gz ii. Installazione di dkfilter ``` tar xvf dkfilter-0.11.tar.gz cd dkfilter-0.11 ./configure --prefix=/usr/local/dkfilter make install useradd dkfilter ``` Gli script del filtro saranno installati in /usr/local/dkfilter/bin e i file del modulo Perl saranno in /usr/local/dkfilter/lib. ### 4 Configurare il filtro in entrata Dobbiamo apportare le modifiche pertinenti all'interno dei file di configurazione di Postfix per controllare le email in arrivo per la firma. vi /etc/postfix/master.cf ``` # # Server SMTP prima del filtro. Ricevi email dalla rete e # passale al filtro di contenuto sulla porta localhost 10025. # smtp inet n - n - - smtpd -o smtpd_proxy_filter=127.0.0.1:10025 -o smtpd_client_connection_count_limit=10 # # Server SMTP dopo il filtro. Ricevi email dal filtro di contenuto su # localhost porta 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 ``` Inserisci le righe sopra alla fine dei file. Qui definiamo che la mail sarà ricevuta dopo smtp per la verifica su 127.0.0.1 con porta 10026. Puoi definire il tuo indirizzo IP desiderato su cui vuoi ascoltare per il controllo della firma. ### 5 Configurare il filtro in uscita Il filtro in uscita ha bisogno di accesso alla chiave privata utilizzata per firmare i messaggi. Inoltre, deve sapere il nome del selettore di chiave utilizzato e per quale dominio deve firmare i messaggi. Queste informazioni sono specificate con argomenti da riga di comando a dkfilter.out. 1. Genera una coppia di chiavi privata/pubblica e pubblica la chiave pubblica in DNS. ``` cd /usr/local/dkfilter openssl genrsa -out private.key 1024 openssl rsa -in private.key -pubout -out public.key ``` Questo crea i file private.key e public.key nella directory corrente, contenenti la chiave privata e la chiave pubblica. Assicurati che private.key non sia leggibile da tutti, ma ancora leggibile dall'utente dkfilter. 2. Scegli un nome di selettore... ad esempio m1 3. Metti i dati della chiave pubblica in DNS, nel tuo dominio, utilizzando il nome del selettore scelto. Copia il contenuto del file public.key e rimuovi l'intestazione e il footer PEM, e incollalo nel file di zona dns creando un'entrata TXT, in questo modo: ``` _domainkey.sohailriaz.com IN TXT “t=y; o=-;” m1._domainkey.sohailriaz.com IN TXT "g=; k=rsa; p=MHwwDQYJK ... OprwIDAQAB;" ``` dove m1 è il nome del selettore scelto nell'ultimo passaggio e il parametro p= contiene la chiave pubblica come una lunga stringa di caratteri. Infine, configura Postfix per filtrare solo i messaggi autorizzati in uscita attraverso il servizio dkfilter.out sulla porta 10027. Nell'esempio seguente, i messaggi inviati tramite SMTP sulla porta 587 (la porta di invio) passeranno attraverso un filtro di contenuto After-Queue che firma i messaggi con DomainKeys. ``` vi /etc/postfix/master.cf ``` ``` # # modifica il servizio di invio predefinito per specificare un filtro di contenuto # e limitarlo solo ai client locali e ai client autenticati 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 # # specifica la posizione del filtro di firma DomainKeys # dksign unix - - n - 10 smtp -o smtp_send_xforward_command=yes -o smtp_discard_ehlo_keywords=8bitmime # # servizio per accettare messaggi DA parte del filtro di firma 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 ``` Esegui il caricamento di postfix per far sì che Postfix risponda alle modifiche in /etc/postfix/master.cf. ``` postfix reload ``` ### 6 Script di avvio Scarica uno script di avvio/arresto dal seguente sito: http://www.enterux.com/files/dkfilter Copia quello script in /etc/rc.d/init.d e modificalo secondo le tue esigenze. ### 7 Riferimenti http://www.postfix.org http://antispam.yahoo.com/domainkeys http://jason.long.name/dkfilter/
Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.