[2024-feb-29] Sad news: Eric Layton aka Nocturnal Slacker aka vtel57 passed away on Feb 26th, shortly after hospitalization. He was one of our Wiki's most prominent admins. He will be missed.

Welcome to the Slackware Documentation Project

Creación de un servidor de correo virtual con Postfix, Dovecot y MySQL

Este artículo muestra cómo construir y configurar un servidor de correo virtual seguro utilizando Postfix, Dovecot y MySQL en una plataforma Slackware 14.1.

Debido a que las plataformas compiladas e instaladas pueden ser muy diferentes, y la configuración puede parecer compleja para aquellos que no están familiarizados con postfix, dovecot y mysql, he organizado este artículo de una manera que espero le ayude a separar y probar tareas individuales, sin perderse en el camino!

El artículo fue escrito como resultado de mi propia experiencia en la configuración de un servidor de correo virtual en mi propio VPS de Linode.com, pero he evitado muchas referencias abiertas a las herramientas o configuraciones específicas de Linode.com, por lo que debería ser fácilmente adaptado para cualquier plataforma. La única referencia de Linode.com será enumerar algunos paquetes adicionales que serán necesarios para su base Slackware 14.1.

Nuestro servidor de correo virtual de destino

Lo que entendemos por servidor de correo virtual es que los buzones de correo no necesitan corresponder a las cuentas de usuario en la máquina, sino que pertenecen a usuarios virtuales definidos en la base de datos. Esto permite servir el correo para muchos buzones de correo y en múltiples dominios.

¡La ejecución de un servidor de correo virtual puede no ser la mejor opción para muchos casos de uso, ya que presenta algunos riesgos y requisitos de seguridad adicionales! En particular, ¡no debe ejecutar un servidor de correo virtual en una máquina que proporcione cuentas de inicio de sesión para múltiples usuarios! ¡Un MTA de correo virtual solo debe configurarse en un host bien seguro dedicado al propósito!

Por seguridad, configuraremos Dovecot para proporcionar autenticación para Postfix a través de SASL en base a las credenciales del buzón de correo virtual. También requeriremos TLS/SSL para el acceso de todos los usuarios y, por supuesto, ¡nos aseguraremos de que no se convierta en un envío de correo no deseado abierto!

Para comenzar, solo necesita una instalación básica de Slackware 14.1, con parches de seguridad actualizados, en particular para bash, openssl, openssl-solibs y gnutls.

Si está instalando en un VPS de Linode.com con su base Slackware 14.1, deberá agregar algunos paquetes faltantes además de mariadb, dovecot y postfix. Durante mi propia configuración (que incluye fail2ban, no se trata aquí) necesitaba agregar: db48, cyrus-sasl, libaio, pidentd y sqlite

Hay muchas partes en nuestro servidor de correo virtual que se cubrirán en secciones separadas. Pero la mejor manera de organizarlos todos es con un gráfico simple que muestre los principales componentes instalados y sus relaciones. La figura 1, a continuación, representa una vista general del sistema de correo virtual de destino descrito en este artículo.

Figura 1: Descripción general del correo electrónico virtual

Instalación de componentes

La lista de elementos principales de la Figura 1 proporciona una lista de verificación de tareas pendientes para instalar los componentes principales de nuestro servidor de correo virtual.

Siga los enlaces que se enumeran aquí y complete cuidadosamente cada elemento . Cuando termine, tendrá un servidor de correo virtual seguro y en funcionamiento, que luego podrá ser configurado para satisfacer sus necesidades específicas.

DNS, MX Records y Hosts File

Para que su servidor de correo se encuentre en una red más amplia, debe configurar correctamente los registros DNS y MX para el dominio de su host. Estos registros son externos al propio host y, por lo tanto, están fuera del alcance de este artículo.

En general, deberá configurar el archivo de zona DNS para su dominio y crear registros MX dentro de ese archivo de zona que apunten a su servidor de correo. Si su sistema de destino es una plataforma alojada como un VPS, entonces el proveedor proporcionará las herramientas y las guías para hacerlo. También debe asegurarse de proporcionar un registro PTR para la búsqueda de direcciones inversas, muchos sistemas no recibirán correo de hosts que no puedan identificar.

Una búsqueda en Internet también producirá muchos recursos útiles, que les dejaré como ejercicio.

Además, en la propia máquina host, deberá asegurarse de que el archivo de hosts incluya las líneas correspondientes a su dirección IP, nombre de host, FQDN y dominio, ya que son utilizados por postfix y dovecot para resolver la disposición de los mensajes:

cat /etc/hosts
...
127.0.0.1       localhost
127.0.0.1       localhost.localdomain   localhost
xx.xx.xx.xx     darkstar
xx.xx.xx.xx     darkstar.my-domain.com   my-domain.com

Inicio y solución de problemas

Una vez que haya completado cada una de las tareas principales enumeradas anteriormente en la Figura 1, debe estar listo para iniciar su servidor de correo virtual.

Debe verificar cada aspecto del sistema por separado y en orden, de modo que pueda resolver cualquier problema potencial de forma metódica.

Si algo parece no funcionar como se espera, tómese el tiempo para entender por qué y evite la tentación de simplemente “probar esto o aquello”: ¡solo corromperá y comprometerá su sistema con ese método!

Primero, comencemos dovecot y postfix y busquemos cualquier mensaje de error; realmente no debería haber ninguno.

chmod +x /etc/rc.d/rc.dovecot
/etc/rc.d/rc.dovecot start
Firing up dovecot

tail /var/log/maillog
...
Feb 16 01:48:45 darkstar dovecot: master: Dovecot v2.2.13 starting up for imap, pop3, lmtp (core dumps disabled)

Si recibe cualquier otro mensaje o error del shell o del archivo de registro, investigue y corrija antes de continuar.

A continuación, hagamos lo mismo para postfix:

chmod +x /etc/rc.d/rc.postfix
/etc/rc.d/rc.postfix start
postfix/postfix-script: starting the Postfix mail system

tail /var/log/maillog
...
Feb 16 01:51:55 darkstar postfix/postfix-script[6931]: starting the Postfix mail system
Feb 16 01:51:55 darkstar postfix/master[6933]: daemon started -- version 2.11.3, configuration /etc/postfix

Igual que antes, si recibe cualquier otro mensaje o error del shell o del archivo de registro, ¡investigue y corrija antes de continuar!

A continuación, con postfix y dovecot ejecutándose, use netstat para confirmar que las cosas son como se esperaba:

netstat -plntu
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
...
tcp        0      0 0.0.0.0:587             0.0.0.0:*               LISTEN      6933/master
tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      6933/master
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      6933/master
tcp        0      0 0.0.0.0:993             0.0.0.0:*               LISTEN      6843/dovecot
tcp        0      0 0.0.0.0:995             0.0.0.0:*               LISTEN      6843/dovecot

Debería ver el master (el proceso maestro de postfix) escuchando en los puertos 25, 465 y 587, y dovecot en los puertos 993 y 995.

También debe verificar que sus reglas de firewall estén de hecho cargadas. ¡No desea ejecutar su servidor de correo sin el firewall, ni siquiera brevemente!

iptables -L
...

Si todo se ve bien hasta ahora, verifique si puede conectarse al servidor de correo desde el mundo exterior. Deberíamos usar el puerto 25 para esto, pero muchos ISP bloquean el puerto 25 por lo que es difícil obtener un resultado de prueba confiable. Así que vea si puede conectarse al puerto 465 o 587 usando telnet.

Escriba la línea “telnet my-domain.com 465” y presione la tecla enter:

telnet my-domain.com 465
Trying xx.xx.xx.xx...
Connected to my-domain.com.
Escape character is '^]'.
220 darkstar.my-domain.com ESMTP Postfix

# Use Ctl-] quit to end the connection

Si no recibe una respuesta similar a la que se muestra, es probable que no se pueda acceder a su host desde su ubicación.

En la mayoría de los casos, esto se debe a un mal registro de DNS o una configuración incorrecta del servidor de nombres en el registrador de dominios. Verifique que estos sean correctos.

También puede resultar de reglas de firewall incorrectas o en conflicto. Recuerde que las reglas de iptables se evalúan de arriba a abajo y la primera coincidencia determina el destino de cada solicitud. ¡Mire cuidadosamente para ver si alguna regla preexistente puede estar eliminando sus solicitudes antes de que alcancen la regla deseada!

Si se conecta, ¡ya está listo para configurar una bandeja de entrada en un cliente de correo como Thunderbird y realizar una prueba final!

Cuando cree una bandeja de entrada en su cliente de correo, recuerde utilizar las conexiones seguras de imap y pop3, no estamos escuchando en los puertos de servicio inseguros. Debe usar el nombre completo del buzón, nombre@dominio.com, como nombre de usuario y la contraseña debe ser la que se usó en las consultas de INSERTO o ACTUALIZACIÓN de MySQL que crearon al usuario virtual.

Y recuerde: aunque esta configuración es tan segura como la máquina en la que se está ejecutando, ¡todavía es una configuración mínima!

Definitivamente también querrá instalar fail2ban (disponible desde SBo). También querrá una aplicación de filtrado de spam y posiblemente un programa de detección de virus para el correo electrónico entrante y saliente.

Debe pensar detenidamente sus propios requisitos específicos, leer detenidamente la documentación de postfix y dovecot, suscribirse a sus listas de correo y aprender a interpretar los registros. ¡Observe cuidadosamente el sistema y desconéctelo a la primera señal de compromiso!

¡Ejecutar un servidor de correo electrónico en Internet definitivamente no es un clic y olvidarse del tiempo pasado!

Fuentes

 es:howtos:network_services:postfix_dovecot_mysql ()