Servidor de correo · 3 min read · Oct 05, 2025
Solución Completa de Servidor de Correo con Dominios y Usuarios Virtuales (Debian Etch, Postfix, Mysql, Dovecot, DSpam, ClamAV, Postgrey, RBL) - Página 6
V. Servidor de Entrega de Correo
El servidor de entrega de correo es el servidor que verifica el SPAM utilizando un algoritmo bayesiano a través de un servicio conocido como DSPAM. DSPAM es increíblemente capaz y viene con una buena cantidad de documentación sobre sus diversas configuraciones. Nuestra configuración particular es bastante simple. MX-1 y MX-2 entregan correo a postman.internal.example.com a través de LMTP. LMTP es el Protocolo de Transferencia de Correo Local, puedes encontrar información básica aquí. DSPAM recibe el correo, verifica contra sus propios algoritmos y pasa el correo a ClamAV para la detección de virus. Suponiendo que todo esté bien, el correo se entrega a Dovecot para la entrega final.
Vamos a repasar las secciones una a la vez. Así que, pongamos en marcha postman.internal.example.com.
A. Configuraciones de NFS
Dado que Dovecot entregará nuestro correo, vamos a querer mapear el directorio vmail en el servidor de entrega de correo.
Ve y crea el usuario y directorio vmail así:
# useradd -r -u 150 -g mail -d /var/vmail -s /sbin/nologin -c "Buzón Virtual" vmail
# mkdir /var/vmail
# chmod 770 /var/vmail/
# chown vmail:mail /var/vmail/Ahora necesitamos instalar las herramientas del cliente NFS:
# apt-get install nfs-common portmapLuego, el directorio necesita ser montado en el recurso compartido NFS. Para hacer una prueba simple, ejecuta lo siguiente:
# mount files-1.internal.example.com:/vmail /vmailAhora deberías tener acceso al recurso compartido /vmail desde files-1. Intenta escribir un archivo:
# cd /vmail
# touch tmpDebería funcionar bien esta vez (postman tiene acceso de lectura y escritura al montaje NFS… los servidores MX solo tenían acceso de lectura).
Suponiendo que todo esté funcionando, ve y desmonta el NFS:
# cd /
umount /vmailY luego haz que el montaje sea permanente poniendo lo siguiente en tu /etc/fstab:
[...]
files-1.internal.example.com:/vmail /vmail nfs rw,rsize=4096,wsize=4096,hard,intr,tcp,noatime,nodev,async 0 0Ve y monta el sistema de archivos una última vez:
# mount /vmail… ¡y estás listo para comenzar!
B. Instalar DSPAM
Una vez más, debian hace esto ridículamente simple:
# apt-get install dspam dspam-doc libdspam7-drv-mysqlSe te preguntará si deseas configurar la base de datos para libdspam7-drv-mysql con dbconfig-common, elige ‘No’. Honestamente, si deseas usar dbconfig, no hay nada que te lo impida, pero por el bien de la documentación, voy a detallar la configuración.
C. Configurar la Base de Datos MySQL
Vas a necesitar configurar algunas tablas en la base de datos MySQL, así que inicia sesión en sql-1.internal.example.com y abre el cliente mysql como root:
# mysql -u root -pLuego ve y crea la nueva base de datos y usuario DSPAM:
MYSQL> CREATE DATABASE dspam_db;
MYSQL> GRANT ALL PRIVILEGES ON dspam_db.* TO 'dspam_user'@'postman.internal.example.com' IDENTIFIED BY 'dspam_user_password';NOTA: ¡Cambia dspam_user_password por una contraseña segura!
D. Configurar DSPAM para MySQL
Ahora que MySQL tiene una base de datos DSPAM y una cuenta de usuario, podemos proceder a importar las tablas del controlador MySQL de DSPAM. Estas se almacenan en /usr/share/doc/libdspam7-drv-mysql en el servidor de entrega de correo (postman.internal.example.com). Hay dos versiones diferentes de los esquemas, uno construido para velocidad, el otro para ahorrar espacio en disco duro. Usaremos el de velocidad, pero puedes elegir el que desees. Recuerda, ¡lee la documentación, para eso está!
Instala el esquema principal:
# mysql -u dspam_user -h sql-1.internal.example.com -p dspam_db < /usr/share/doc/libdspam7-drv-mysql/mysql_objects-speed.sqlSi obtienes errores de permisos, vuelve al servidor mysql y verifica que hayas creado el usuario correctamente.
Suponiendo que todo haya ido bien, también queremos introducir las tablas para usuarios virtuales:
# mysql -u dspam_user -h sql-1.internal.example.com -p dspam_db < /usr/share/doc/libdspam7-drv-mysql/virtual_users.sqlAhora, solo necesitamos decirle a DSPAM cómo comunicarse con nuestra base de datos MySQL. Esto se hace a través del archivo /etc/dspam/dspam.d/mysql.conf. Edítalo en consecuencia:
[...]
MySQLServer sql-1.internal.example.com
MySQLPort 3306
MySQLUser dspam_user
MySQLPass dspam_user_password
MysqLDb dspam_db
[...]
MySQLVirtualTable dspam_virtual_uids
MySQLVirtualUIDField uid
MySQLVirtualUsernameField username
[...] Ahora DSPAM almacenará toda su información dentro de la base de datos MySQL.
NOTA: Esta es una configuración temporal, solo porque no habíamos terminado la instalación del usuario virtual de DSPAM antes de escribir esta guía. Idealmente, querrías que DSPAM mirara la misma tabla de usuarios virtuales que Postfix para obtener toda la información de tokens almacenada correctamente. Actualizaré la guía tan pronto como hayamos completado ese cambio.
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.