Cómo configurar un servidor de correo usando Postfix, Dovecot, MySQL y SpamAssassin

Introducción

En este tutorial, vamos a configurar un servidor de correo usando Postfix, Dovecot, MySQL y SpamAssassin en Ubuntu.

Siguiendo este tutorial podrás agregar dominios virtuales, usuarios y alias. Además, tu servidor virtual estará seguro desde el centro de spam.

Prerrequisitos

Antes de configurar tu servidor de correo, es necesario que tu VPS tenga lo siguiente:

El dominio que reenvía a tu servidor.
MySQL instalado y configurado (configurar mysql )
Un usuario con privilegios de root
Debes configurar e identificar tu FQDN

Opcional: certificado SSL (configuración de certificado SSL)

Opcional (Iniciar sesión como usuario root)

Instalar paquetes como usuario root es útil porque tienes todos los privilegios.

Introduce la contraseña de tu usuario. Una vez que tengas éxito, verás que el símbolo $ cambia a #.

Paso 1: Instalar paquetes

Cuando se solicite la configuración de Postfix, debes elegir Internet Site:

La configuración de Postfix te preguntará sobre el nombre de correo del sistema; puedes usar tu FDQN o dominio principal.

Paso 2: crear una base de datos MySQL, dominios virtuales, usuarios y alias

Una vez que finalice la instalación, vamos a crear una base de datos MySQL para configurar tres tablas diferentes: una para dominios, una para usuarios y la última para alias.

Vamos a nombrar la base de datos servermail, pero puedes usar el nombre que desees.

Crear la base de datos servermail:

Inicia sesión como usuario root de MySQL

Ingresa tu contraseña de root de MySQL; Si tienes éxito, verás:

Primero debemos crear un nuevo usuario, específico para la autenticación de correo, y le daremos permiso a SELECT.

Después de eso, necesitamos volver a cargar los privilegios de MySQL para asegurarnos de que aplica esos permisos con éxito:

Finalmente, necesitamos usar la base de datos para crear tablas e introducir nuestros datos:

Es momento de crear una tabla para los dominios específicos reconocidos como dominios autorizados.

Vamos a crear una tabla para presentar a los usuarios. Aquí agregarás la dirección de correo electrónico y las contraseñas. Es necesario asociar a cada usuario con un dominio.

Como último paso, crearemos una tabla de alias virtuales para especificar todos los correos electrónicos que reenviará al otro correo electrónico.

Hemos creado las tres tablas con éxito. Ahora vamos a introducir los datos.

Dominios virtuales

Aquí vamos a introducir tus dominios dentro de la tabla virtual_domains. Puedes agregar todos los dominios que desees, pero en este tutorial presentaremos solo el dominio principal (example.com) y tu FQDN (hostname.example.com).

Correos electrónicos virtuales

Vamos a introducir la dirección de correo electrónico y las contraseñas asociadas a cada dominio. Asegúrate de cambiar toda la información con tu información específica.

Alias ​​virtuales

Vamos a introducir la dirección de correo electrónico (origen) que vamos a reenviar a la otra dirección de correo electrónico (destino).

Debes salir de MySQL

Paso 3: Configurar Postfix

Vamos a configurar Postfix para manejar las conexiones SMTP y enviar los mensajes para cada usuario introducido en la base de datos MySQL.

Primero debemos crear una copia del archivo predeterminado, en caso de que desees volver a la configuración predeterminada.

Abre el archivo main.cf para modificarlo:

Primero debemos comentar los parámetros TLS y añadir otros parámetros. En este tutorial, estamos utilizando los certificados SSL gratuitos, pero puedes modificarlos según tus configuraciones personales.

Luego, vamos a agregar los siguientes parámetros debajo de la configuración de TLS que hemos cambiado en el paso anterior:

Necesitamos comentar la configuración mydestination predeterminada y reemplazarla con localhost. Este cambio le permite a tu VPS usar los dominios virtuales dentro de la tabla MySQL.

Verifica que el parámetro myhostname esté configurado con tu FQDN.

Agrega la siguiente línea para la entrega de correo local a todos los dominios virtuales listados dentro de la tabla MySQL.

Finalmente, necesitamos agregar estos tres parámetros para decirle a Postfix que configure los dominios virtuales, los usuarios y los alias.

Nota:

Necesitamos comparar estos cambios con este archivo para detectar errores o fallas:

https://www.dropbox.com/s/x9fpm9v1dr86gkw/etc-postfix-main.cf.txt

Vamos a crear los tres archivos finales que agregamos en el archivo main.cf para decirle a Postfix cómo conectarse con MySQL.

Primero necesitamos crear el archivo mysql-virtual-mailbox-domains.cf. Es necesario cambiar los valores dependiendo de tu configuración personal.

Ahora necesitamos reiniciar Postfix.

Debemos asegurarnos de que Postfix encuentre tu dominio, por lo que debemos probarlo con el siguiente comando. Si tiene éxito, debería devolver 1:

Entonces necesitamos crear el archivo mysql-virtual-mailbox-maps.cf.

Necesitamos reiniciar Postfix de nuevo.

En este momento, nos aseguraremos de que Postfix encuentre tu primera dirección de correo electrónico con el siguiente comando. Debería devolver 1 si tiene éxito:

Para finalizar, vamos a crear el último archivo para configurar la conexión entre Postfix y MySQL.

Reinicia Postfix

Necesitamos verificar que Postfix pueda encontrar tus alias. Ingresa el siguiente comando y debería devolver el correo que se reenvía al alias:

Si deseas habilitar el puerto 587 para conectarse de forma segura con los clientes de correo electrónico, es necesario modificar el archivo /etc/postfix/master.cf

Necesitamos descomentar estas líneas y añadir otros parámetros:

En algunos casos, necesitamos reiniciar Postfix para asegurarnos de que el puerto 587 esté abierto.

Nota:

Puedes usar esta herramienta para escanear los puertos de tu dominio y verificar que los puertos 25 y 587 estén abiertos ( http://mxtoolbox.com/SuperTool.aspx )

Paso 4: Configurar Dovecot

Vamos a copiar los 7 archivos que vamos a modificar, para que puedas revertirlos a los valores predeterminados si lo necesitas. Ingresa los siguientes comandos uno por uno:

Debes editar el archivo de configuración de Dovecot.

Verifica que esta opción esté sin comentar.

Vamos a habilitar los protocolos (agregar pop3 si quieres) debajo de !include_try /usr/share/dovecot/protocols.d/*.protocol line.

Nota:

Es necesario comparar estos cambios con este archivo para detectar errores o fallas:

https://www.dropbox.com/s/wmbe3bwy0vcficj/etc-dovecot-dovecot.conf.txt

Luego vamos a editar el archivo de configuración de correo:

Encuentre la línea mail_location, descoméntala y coloca el siguiente parámetro:

Busca y encuentra la línea mail_privileged_group, elimina el comentario y agrega el parámetro de correo así:

Nota:

Compara estos cambios con este archivo para detectar errores o fallas:

https://www.dropbox.com/s/hnfeieuy77m5b0a/etc.dovecot.conf.d-10-mail.conf.txt

Verificar permisos

Ingresa este comando:

Asegúrate de que los permisos esten así:

Vamos a crear una carpeta para cada dominio que registramos en la tabla MySQL:

Debes crear un usuario y grupo de vmail con un ID de 5000

Necesitamos cambiar el propietario de la carpeta /var/mail al usuario de vmail.

Entonces necesitamos editar el archivo /etc/dovecot/conf.d/10-auth.conf:

Quita el comentario de plain text authentication y agrega esta línea:

Modifica el parámetro auth_mechanisms:

Comenta esta línea:

Habilita la autorización de MySQL sin comentar esta línea:

Nota:

Compara estos cambios con este archivo para detectar errores o fallas:

https://www.dropbox.com/s/4h472nqrj700pqk/etc.dovecot.conf.d.10-auth.conf.txt

Necesitamos crear el archivo /etc/dovecot/dovecot-sql.conf.ext con tu información para la autenticación:

Ingresa el siguiente código en el archivo:

Necesitamos modificar el archivo /etc/dovecot/dovecot-sql.conf.ext con nuestra información personalizada de MySQL:

Descomenta el parámetro del controlador y configura mysql como parámetro:

Elimina el comentario de la línea de conexión e introduce tu información específica de MySQL:

Descomenta la línea default_pass_scheme y cámbiala a SHA-512.

Debes descomentar la línea password_query y agregar esta información:

Nota:

Es momento de comparar estos cambios con este archivo para detectar errores o fallas:

https://www.dropbox.com/s/48a5r0mtgdz25cz/etc.dovecot.dovecot-sql.conf.ext.txt

Cambia el propietario y el grupo de la carpeta dovecot al usuario de vmail:

Abre y modifica el archivo /etc/dovecot/conf.d/10-master.conf (ten cuidado porque se cambiarán diferentes parámetros).

Modifica el parámetro unix_listenerservice_auth así:

Modifica service auth-worker así:

Nota:

Compara estos cambios con este archivo para detectar errores o fallas:

https://www.dropbox.com/s/g0vnt233obh6v2h/etc.dovecot.conf.d.10-master.conf.txt

Finalmente, vamos a modificar el archivo de configuración SSL de Dovecot (omite este paso si vas a utilizar la configuración predeterminada).

Cambia el parámetro ssl a requerido:

Y modifica la ruta para ssl_cert y ssl_key:

Reinicia Dovecot

Debes verificar que el puerto 993 esté abierto y en funcionamiento (en caso de que habilites pop3; también debes verificar el puerto 995).

Felicidades. 

Has configurado correctamente tu servidor de correo y puedes probar tu cuenta utilizando un cliente de correo electrónico:

Nota: usa el puerto 993 para IMAP seguro y el puerto 587 o 25 para SMTP.

Paso 5: Configurar SpamAssassin

Primero necesitamos instalar SpamAssassin.

Ahora necesitamos crear un usuario para SpamAssassin.

Para configurar con éxito SpamAssassin, es necesario abrir y modificar los ajustes de configuración.

Necesitamos cambiar el parámetro ENABLED para habilitar el demonio SpamAssassin.

Necesitamos configurar los parámetros de inicio y opciones.

Aquí necesitamos especificar el parámetro PID_File como este:

Finalmente, debemos especificar que las reglas de SpamAssassin’s se actualizarán automáticamente.

Nota: Compara estos cambios con este archivo para detectar errores o fallas:

https://www.dropbox.com/s/ndvpgc2jipdd4bk/etc.default.spamassassin.txt

Necesitamos abrir /etc/spamassassin/local.cf para configurar las reglas antispam.

SpamAssassin puntuará cada correo y, si determina que este correo electrónico es superior a 5.0 en su comprobación de correo no deseado, automáticamente se considerará como correo no deseado. Podrías usar los siguientes parámetros para configurar las reglas antispam:

Necesitamos cambiar el archivo Postfix /etc/postfix/master.cf para indicar que cada correo electrónico se verificará con SpamAssassin.

Luego debemos encontrar la siguiente línea y agregar el filtro spamassassin:

Finalmente necesitamos añadir los siguientes parámetros:

Es necesario iniciar SpamAssassin y reiniciar Postfix para comenzar a verificar el spam de los correos electrónicos.

¡Felicidades! 

¡Has configurado con éxito tu servidor de correo con Postfix y Dovecot con autenticación MySQL y filtrado de spam con SpamAssassin!