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

Postfix con dkfilter (Implementación de DomainKeys)

Postfix con dkfilter (Implementación de DomainKeys)

Autor: Sohail Riaz

DomainKeys es una aplicación de software anti-spam en desarrollo en Yahoo que utiliza una forma de criptografía de clave pública para autenticar el dominio del remitente. dkfilter es un proxy SMTP diseñado para Postfix. Implementa la firma y verificación de mensajes DomainKeys. Comprende dos filtros separados, un filtro "saliente" para firmar correos electrónicos salientes en el puerto 587, y un filtro "entrante" para verificar las firmas de los correos electrónicos entrantes en el puerto 25. Este documento describe paso a paso cómo instalar dkfilter para postfix para implementar la firma y verificación de domainkeys. ### 1 Instalar Postfix Instala postfix para tu dominio para enviar y recibir correos. ### 2 Resolviendo Dependencias - Instalando Módulos de Perl Dkfilter está escrito en Perl. Requiere los siguientes Módulos de Perl del archivo CPAN. ```     * Crypt::OpenSSL::RSA     * Mail::Address     * MIME::Base64     * Net::DNS     * Test::More     * Text::Wrap     * Mail::DomainKeys ``` Los siguientes comandos ayudarán. ``` 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: También resuelve cualquier Módulo de Perl dependiente requerido para instalar los módulos de Perl anteriores. ### 3 Instalando dkfilter Los siguientes pasos se recomiendan para instalar dkfilter: i. Descarga dkfilter desde la siguiente 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 ``` Los scripts de filtro se instalarán en /usr/local/dkfilter/bin y los archivos de módulo Perl estarán en /usr/local/dkfilter/lib. ### 4 Configurando el Filtro Entrante Necesitamos hacer los cambios relevantes dentro de los archivos de configuración de Postfix para verificar los correos entrantes por la firma. vi /etc/postfix/master.cf ``` # # Servidor SMTP antes del filtro. Recibe correo de la red y # lo pasa al filtro de contenido en localhost puerto 10025. # smtp inet n - n - - smtpd -o smtpd_proxy_filter=127.0.0.1:10025 -o smtpd_client_connection_count_limit=10 # # Servidor SMTP después del filtro. Recibe correo del filtro de contenido en # localhost puerto 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 ``` Inserta las líneas anteriores al final de los archivos. Aquí definimos que el correo será recibido después de smtp para verificación en 127.0.0.1 con el puerto 10026. Puedes definir tu propia dirección IP deseada en la que quieras escuchar para la verificación de firmas. ### 5 Configurando el filtro saliente El filtro saliente necesita acceso a la clave privada utilizada para firmar mensajes. Además, necesita conocer el nombre del selector de clave que se está utilizando y qué dominio debe firmar mensajes. Esta información se especifica con argumentos de línea de comandos a dkfilter.out. 1. Genera un par de claves privada/pública y publica la clave pública en DNS. ``` cd /usr/local/dkfilter openssl genrsa -out private.key 1024 openssl rsa -in private.key -pubout -out public.key ``` Esto crea los archivos private.key y public.key en el directorio actual, conteniendo la clave privada y la clave pública. Asegúrate de que private.key no sea legible por el mundo, pero aún así sea legible por el usuario dkfilter. 2. Elige un nombre de selector... por ejemplo, m1 3. Coloca los datos de la clave pública en DNS, en tu dominio, usando el nombre de selector que elegiste. Copia el contenido del archivo public.key y elimina el encabezado y pie de PEM, y pégalo en el archivo de zona DNS creando una entrada TXT, así: ``` _domainkey.sohailriaz.com IN TXT “t=y; o=-;” m1._domainkey.sohailriaz.com IN TXT "g=; k=rsa; p=MHwwDQYJK ... OprwIDAQAB;" ``` donde m1 es el nombre del selector elegido en el último paso y el parámetro p= contiene la clave pública como una larga cadena de caracteres. Finalmente, configura Postfix para filtrar solo los mensajes salientes autorizados a través del servicio dkfilter.out en el puerto 10027. En el siguiente ejemplo, los mensajes enviados a través de SMTP en el puerto 587 (el puerto de envío) pasarán por un filtro de contenido After-Queue que firma mensajes con DomainKeys. ``` vi /etc/postfix/master.cf ``` ``` # # modifica el servicio de envío predeterminado para especificar un filtro de contenido # y restringirlo solo a clientes locales y 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 # # especifica la ubicación del filtro de firma de DomainKeys # dksign unix - - n - 10 smtp -o smtp_send_xforward_command=yes -o smtp_discard_ehlo_keywords=8bitmime # # servicio para aceptar mensajes DEL filtro de firma de 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 ``` Ejecuta postfix reload para que Postfix responda a los cambios en /etc/postfix/master.cf. ``` postfix reload ``` ### 6 Script de Inicio Descarga un script de inicio/apagado desde el siguiente sitio: http://www.enterux.com/files/dkfilter Copia ese script en /etc/rc.d/init.d y edítalo según tus requisitos. ### 7 Referencias http://www.postfix.org http://antispam.yahoo.com/domainkeys http://jason.long.name/dkfilter/
Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.