Servidor de correo · 6 min read · Nov 13, 2025

Filtro de Spam de Postfix usando Ubuntu Dapper, MailScanner, SpamAssassin, Razor, Pyzor, DCC y ClamAV

Introducción

Esta es una versión similar del HOWTO que se puede encontrar aquí: http://www200.pair.com/mecham/spam/spamfilter20050628.html. Si estás viendo este howto, se asume que tienes algún nivel de experiencia con servidores de correo, DNS, TCP/IP, cortafuegos y Linux en general.

1 Configurando el Servidor Ubuntu

Por favor, consulta la documentación ya disponible en línea para obtener detalles sobre cómo configurar un servidor Ubuntu. HowToForge tiene un par de HowTo’s que son muy detallados. Sin embargo, hay un par de configuraciones de instalación que se describen aquí y que deben tenerse en cuenta al configurar el servidor, que pueden diferir de otros howto’s.

NOTA: Ubuntu se instala como un sistema setuid por defecto. Lo que eso significa es que la cuenta root está deshabilitada y tienes que ejecutar todo con un 'sudo' delante para ejecutarlo como root. La forma de evitar esto es ejecutar 'sudo su -' y ya no tendrás que escribir 'sudo' delante del comando porque estás en una sesión bash como root. Para el resto de este documento se asume que has hecho esto y estás ejecutando una sesión bash como root, por lo que no se darán comandos sudo. La moraleja es que, cuando inicies sesión en Ubuntu a través de SSH o consola, recuerda ejecutar 'sudo su -' antes de comenzar a editar archivos del sistema, mover/crear directorios o instalar/desinstalar software y servicios.

1.1 Particiones

Particionar el disco de esta manera no es un requisito, pero evitará que tu servidor se quede sin espacio por completo si algo sale mal en el directorio /var. Además, particionar el disco de esta manera te permitirá crear algunos gráficos adicionales con MailScannerMRTG que pueden observar /var, /var/log y /var/spool por separado. MailScannerMRTG no comprobará el espacio en disco en directorios, solo puede calcular el tamaño por particiones.

Ejemplo de mi tabla de particiones:
/boot       50MB        Partición de Arranque       EXT3 (PRIMARIA)
Swap        2GB     Partición de Intercambio (El tamaño depende de tu memoria, el doble de tu memoria debería estar bien) (PRIMARIA)
/       2GB     Partición Raíz      EXT3 (LÓGICA)
/var        1GB     Partición de Datos Variables    EXT3 (LÓGICA)
/var/log    3GB     Partición de Datos Variables    EXT3 (LÓGICA)
/var/spool  2GB     Partición de Datos Variables Spool  EXT3 (LÓGICA)
/usr        4GB     Programas instalados por el usuario     EXT3 (LÓGICA)
/usr/local  2GB     Programas instalados por el usuario     EXT3 (LÓGICA)
/home       CUALQUIERA  Directorios de Inicio (Buen lugar para poner cualquier espacio extra, puedes volver a particionar si te quedas sin espacio y usar esto.)    EXT3 (LÓGICA)

1.2 Verificar Configuraciones de Red

Necesitamos asegurarnos de que el sistema esté configurado con una IP estática válida, los servidores DNS correctos están en /etc/resolv.conf y tu servidor está identificado en el archivo /etc/hosts.

vi /etc/network/interfaces

El archivo de Interfaces de Red debería verse algo así:

auto lo eth0
iface lo inet loopback
# La interfaz de red primaria
iface eth0 inet static
        address  192.168.1.100
        netmask  255.255.255.0
        network  192.168.1.0
        broadcast 192.168.1.255
        gateway  192.168.1.1

Reinicia el servicio de red para que estos cambios surtan efecto:

/etc/init.d/networking restart

Edita el archivo resolv.conf para agregar servidores DNS:

vi /etc/resolv.conf

Asegúrate de que tu nombre de dominio esté en la parte superior del resolv.conf, debería verse algo así:

search example.com
nameserver 192.168.0.1
nameserver 192.168.0.2
vi /etc/hosts

La parte superior del archivo debería verse algo así:

127.0.0.1 localhost.localdomain localhost
192.168.0.100 sfp.example.com sfp

Dado que estamos aquí, también podrías agregar cualquier otro host que te gustaría que nuestro filtro de spam conociera. Agrega cualquier servidor de correo interno aquí. Simplemente agrega cualquier otra entrada al final de la lista.

1.3 APT y Otros Ajustes

Apt necesita ser configurado para buscar en los repositorios universe y multiverse. Haz una copia de seguridad de tu actual /etc/apt/sources.list:

cp /etc/apt/sources.list /etc/apt/sources.list.default

Reemplázalo con el siguiente archivo sources.list:

vi /etc/apt/sources.list
deb http://us.archive.ubuntu.com/ubuntu dapper main restricted
deb-src http://us.archive.ubuntu.com/ubuntu dapper main restricted
deb http://us.archive.ubuntu.com/ubuntu dapper-updates main restricted
deb-src http://us.archive.ubuntu.com/ubuntu dapper-updates main restricted
deb http://us.archive.ubuntu.com/ubuntu dapper universe multiverse
deb-src http://us.archive.ubuntu.com/ubuntu dapper universe multiverse
deb http://security.ubuntu.com/ubuntu dapper-security main restricted
deb-src http://security.ubuntu.com/ubuntu dapper-security main restricted
deb http://security.ubuntu.com/ubuntu dapper-security universe multiverse
deb-src http://security.ubuntu.com/ubuntu dapper-security universe multiverse

Necesitamos actualizar/actualizar la caché de apt e instalar algún software. Para actualizar la caché ejecuta:

apt-get update

Nota: Este es un buen momento para cambiar tu imagen de kernel a la correcta, lo más probable es que necesites el ‘linux-image-i686’. Si no sabes lo que significa, búscalo. Ejecuta un apt-get upgrade y tómate un momento para solucionar cualquier error o problema que puedas estar teniendo. Queremos eliminar cualquier cosa que pueda causar problemas en el futuro. Recuerda reiniciar una vez que todo esté listo y ejecutar un dmesg | less, puede ser de gran ayuda.

apt-get install ssh

Una vez que ssh esté instalado, deberías conectarte al servidor a través de ssh usando PuTTY desde tu escritorio linux o windows. Esto facilitaría terminar el resto de este howto porque podrás copiar/pegar en la terminal desde el escritorio. Así que adelante, ssh a este servidor.

Normalmente solo configuro el reloj de la BIOS a la hora local y luego ejecuto lo siguiente para sincronizar el reloj.

apt-get install ntpdate  

hwclock --systohc

Ahora instalamos la mayoría de las cosas que necesitaremos. Dividí la lista en 4 ejecuciones de instalación de APT. 5-15 instalaciones a la vez parece prudente, depende de ti:

apt-get install libc6-dev dpkg-dev db4.3-util libdb4.3-dev vim lynx bzip2 unzip perl-doc libwww-perl ntp-simple  
  
apt-get install zlib1g-dev zip libdbi-perl libconvert-binhex-perl gcc make autoconf automake libtool libmail-spf-query-perl rblcheck libnet-ident-perl  
  
apt-get install flex bison libcompress-zlib-perl pax libberkeleydb-perl ncftp unzoo arj lzop nomarch arc zoo  
  
apt-get install postfix postfix-pcre postfix-mysql postfix-ldap cabextract lha unrar razor pyzor spamassassin

Selecciona NO CONFIGURACIÓN cuando aparezca Debconf para Postfix.

Instala unarj:

wget http://archive.ubuntu.com/ubuntu/pool/universe/a/arj/unarj_3.10.21-2_all.deb  
  
dpkg -i unarj_3.10.21-2_all.deb

Ahora también necesitamos eliminar algunos programas, con suerte no necesitas soporte para PCMCIA o impresoras. Este servidor tampoco necesitará soporte de acceso telefónico. No necesariamente tendrás todos estos programas instalados.

Desinstala el siguiente software (todo en una línea):

apt-get remove ipchains lpr nfs-common portmap pidentd pcmcia-cs pcmciautils pppoe pppoeconf ppp pppconfig uw-imapd qpopper mailagent

1.6 Limpiando servicios

Algunos servicios pueden seguir presentes incluso después de desinstalar los demonios. Primero necesitamos hacer una copia de seguridad de inet.d:

cp -R /etc/init.d /etc/init.d.backup

Ahora podemos detener todos los servicios que podrían estar en ejecución y que no necesitamos:

/etc/init.d/lpd stop  
update-rc.d -f lpd remove  
  
/etc/init.d/nfs-common stop  
update-rc.d -f nfs-common remove  
  
/etc/init.d/portmap stop  
update-rc.d -f portmap remove  
  
/etc/init.d/pcmcia stop  
update-rc.d -f pcmcia remove  
  
/etc/init.d/pcmciautils stop  
update-rc.d -f pcmciautils remove  
  
/etc/init.d/ppp stop  
update-rc.d -f ppp remove  
  
/etc/init.d/exim4 stop  
update-rc.d -f exim4 remove  
  
update-rc.d -f ntpdate remove

Desactiva todos los servicios que detuvimos:

update-inetd --disable time  
  
update-inetd --disable daytime  
  
update-inetd --disable echo  
  
update-inetd --disable chargen  
  
update-inetd --disable ident  
  
update-inetd --disable discard

El último puede preguntarte sobre “entradas múltiples”, responde que sí (y).

Verifica que hayamos cubierto todo:

lsof -i | grep LISTEN

El único demonio que deberías ver en este punto es *:ssh. Puede que tengas que ejecutar esto de nuevo:

update-inetd --disable discard

Si hay otros programas mostrados, intenta reiniciar y prueba de nuevo.

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

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