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/interfacesEl 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.1Reinicia el servicio de red para que estos cambios surtan efecto:
/etc/init.d/networking restartEdita el archivo resolv.conf para agregar servidores DNS:
vi /etc/resolv.confAsegú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.2vi /etc/hostsLa parte superior del archivo debería verse algo así:
127.0.0.1 localhost.localdomain localhost
192.168.0.100 sfp.example.com sfpDado 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.defaultReemplázalo con el siguiente archivo sources.list:
vi /etc/apt/sources.listdeb 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 multiverseNecesitamos actualizar/actualizar la caché de apt e instalar algún software. Para actualizar la caché ejecuta:
apt-get updateNota: 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 sshUna 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 --systohcAhora 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 spamassassinSelecciona 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.debAhora 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 mailagent1.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.backupAhora 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 removeDesactiva 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 discardEl último puede preguntarte sobre “entradas múltiples”, responde que sí (y).
Verifica que hayamos cubierto todo:
lsof -i | grep LISTENEl único demonio que deberías ver en este punto es *:ssh. Puede que tengas que ejecutar esto de nuevo:
update-inetd --disable discardSi hay otros programas mostrados, intenta reiniciar y prueba de nuevo.
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.