Email Configuration · 4 min read · Nov 28, 2025

Postfix com dkfilter (Implementação do DomainKeys)

Postfix com dkfilter (Implementação do DomainKeys)

Autor: Sohail Riaz

DomainKeys é um aplicativo de software anti-spam em desenvolvimento na Yahoo que usa uma forma de criptografia de chave pública para autenticar o domínio do remetente. dkfilter é um proxy SMTP projetado para Postfix. Ele implementa a assinatura e verificação de mensagens DomainKeys. Compreende dois filtros separados, um filtro "outbound" para assinar e-mails de saída na porta 587, e um filtro "inbound" para verificar assinaturas de e-mails recebidos na porta 25. Este documento descreve passo a passo como instalar o dkfilter para postfix para implantar a assinatura e verificação do domainkeys. ### 1 Instalar Postfix Instale o postfix para seu domínio para enviar e receber e-mails. ### 2 Resolvendo Dependências - Instalando Módulos Perl Dkfilter é escrito em Perl. Ele requer os seguintes Módulos Perl do arquivo CPAN. ``` * Crypt::OpenSSL::RSA * Mail::Address * MIME::Base64 * Net::DNS * Test::More * Text::Wrap * Mail::DomainKeys ``` Os seguintes comandos ajudariam. ``` 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: Também resolva qualquer Módulo Perl dependente necessário na instalação dos módulos Perl acima. ### 3 Instalando dkfilter Os seguintes passos são recomendados para instalar o dkfilter: i. Baixe o dkfilter do seguinte URL: http://jason.long.name/dkfilter/dkfilter-0.11.tar.gz ii. Instalando dkfilter ``` tar xvf dkfilter-0.11.tar.gz cd dkfilter-0.11 ./configure --prefix=/usr/local/dkfilter make install useradd dkfilter ``` Os scripts do filtro serão instalados em /usr/local/dkfilter/bin e os arquivos do módulo Perl estarão em /usr/local/dkfilter/lib. ### 4 Configurando o Filtro Inbound Precisamos fazer as alterações relevantes nos arquivos de configuração do Postfix para verificar os e-mails recebidos quanto à assinatura. vi /etc/postfix/master.cf ``` # # Servidor SMTP antes do filtro. Receber e-mail da rede e # passá-lo para o filtro de conteúdo na porta 10025 do localhost. # smtp inet n - n - - smtpd -o smtpd_proxy_filter=127.0.0.1:10025 -o smtpd_client_connection_count_limit=10 # # Servidor SMTP após o filtro. Receber e-mail do filtro de conteúdo na # porta 10026 do localhost. # 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 ``` Insira as linhas acima no final dos arquivos. Aqui definimos que o e-mail será recebido após o smtp para verificação em 127.0.0.1 com a porta 10026. Você pode definir seu próprio endereço IP desejado no qual deseja escutar para verificação de assinatura. ### 5 Configurando o filtro outbound O filtro outbound precisa de acesso à chave privada usada para assinar mensagens. Além disso, ele precisa saber o nome do seletor de chave que está sendo usado e para qual domínio deve assinar mensagens. Essas informações são especificadas com argumentos de linha de comando para dkfilter.out. 1. Gere um par de chaves privada/pública e publique a chave pública no DNS. ``` cd /usr/local/dkfilter openssl genrsa -out private.key 1024 openssl rsa -in private.key -pubout -out public.key ``` Isso cria os arquivos private.key e public.key no diretório atual, contendo a chave privada e a chave pública. Certifique-se de que private.key não seja legível por todos, mas ainda legível pelo usuário dkfilter. 2. Escolha um nome de seletor... por exemplo, m1 3. Coloque os dados da chave pública no DNS, no seu domínio, usando o nome do seletor que você escolheu. Copie o conteúdo do arquivo public.key e remova o cabeçalho e rodapé PEM, e cole-o no arquivo de zona DNS criando uma entrada TXT, assim: ``` _domainkey.sohailriaz.com IN TXT “t=y; o=-;” m1._domainkey.sohailriaz.com IN TXT "g=; k=rsa; p=MHwwDQYJK ... OprwIDAQAB;" ``` onde m1 é o nome do seletor escolhido na última etapa e o parâmetro p= contém a chave pública como uma longa string de caracteres. Finalmente, configure o Postfix para filtrar mensagens autorizadas de saída apenas através do serviço dkfilter.out na porta 10027. No exemplo a seguir, as mensagens enviadas via SMTP na porta 587 (a porta de submissão) passarão por um filtro de conteúdo After-Queue que assina mensagens com DomainKeys. ``` vi /etc/postfix/master.cf ``` ``` # # modifique o serviço de submissão padrão para especificar um filtro de conteúdo # e restringi-lo apenas a clientes locais e clientes autenticados por 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 # # especifique a localização do filtro de assinatura DomainKeys # dksign unix - - n - 10 smtp -o smtp_send_xforward_command=yes -o smtp_discard_ehlo_keywords=8bitmime # # serviço para aceitar mensagens DO filtro de assinatura 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 ``` Execute postfix reload para que o Postfix responda às alterações em /etc/postfix/master.cf. ``` postfix reload ``` ### 6 Script de Inicialização Baixe um script de inicialização/desligamento do seguinte site: http://www.enterux.com/files/dkfilter Copie esse script em /etc/rc.d/init.d e edite-o conforme sua necessidade. ### 7 Referências http://www.postfix.org http://antispam.yahoo.com/domainkeys http://jason.long.name/dkfilter/
Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.