Servidor de mail con Postfix, Dovecot, mailutils y Thunderbid
Para esta práctica realizaremos un servidor de correos SMTP e IMAP y lo haremos funcionar con clientes de correos. A continuación te dejo el índice de la guía:
Dovecot-imapd como servidor IMAP - (MDA)
Escenario de la práctica
Simularéis una empresa llamada empresa.local. El esquema de máquinas será:
servidor
Ubuntu Server 24.04
Postfix + Dovecot + Prosody
192.168.1.10
cliente1
Ubuntu Desktop 24.04
Thunderbird + Gajim
192.168.1.20
cliente2
Ubuntu Desktop 24.04
Thunderbird + Gajim
192.168.1.21
Ambas VMs deben estar en red interna (Host-Only o Internal Network en VirtualBox) y tener un adaptador puente para la conexión real. Añade al /etc/hosts del servidor y los clientes la resolución manual del dominio empresa.local:
192.168.1.10 servidor.empresa.local mail.empresa.local chat.empresa.localPostfix
- Instalación
- Configuración
Una práctica conveniente es hacer una copia de seguridad de los archivos de configuración que vayamos a modificar. Para ello, hacemos:
Dentro de la configuración, asegúrate de que las siguientes líneas estén configuradas adecuadamente:
Tienes aquí el documento completo con todas las configuraciones añadidas por si quieres copiar y pegar:
La línea de home_mailbox = Maildir/ nos servirá para que Postfix acepte Maildir.
En correos electrónicos, existen dos formatos muy extendidos para almacenar el correo electrónico: Mbox y Maildir:
Mboxpermite guardar todos los mensajes en un solo archivoMaildirutiliza un directorio para guardar los mensajes en ficheros individuales.
En la configuración por defecto de Postfix y mailutils se utiliza el formato Mbox, pero ambos soportan Maildir, así que vamos a utilizar este formato.
Postfix tiene un fichero de texto llamado /etc/aliases donde se definen alias de correo: redirecciones que permiten que un nombre de correo apunte a otro usuario o a una lista de usuarios pero postfix requiere un archivo compilado binario para funcionar por lo que este comando lee el fichero txt y genera el binario:
Para que funcionen los cambios, se reinicia Postfix:
Ahora ya puedes verificar la configuración sin errores:
Si no devuelve nada, la configuración es correcta. Cualquier línea de salida indica un problema.
Hay un aviso menor bastante común que viene dado por que Postfix se ejecuta dentro de una jaula de chroot, la solución al error pasa por actualizar sus copias de:
De paso actualiza también estos ficheros que suelen necesitarse:
Ahora sí, recarga Postfix y vuelve a comprobar:
Esta vez no debería aparecer ningún aviso pero ten presente que esto se puede dar cada ve que añadas usuarios al servidor.
Dovecot
- Instalación
Para la instalación de Dovecot, existen tres módulos principales (dovecot-core, dovecot-imapd y dovecot-pop3d) de las cuales usaremos el software principal "dovecot-imapd" principalmente para el trabajo de descarga de correos en local:
- Configuración
Para Dovecot, configuraremos la autenticación y, como antes, el uso del formato Maildir en sustitución de mBox. Una vez instalado podemos comprobar que Dovecot:
Está escuchando en los puertos 143 y 993 que corresponden a IMAP e IMAPS.
Utiliza el mismo log file /var/log/mail.log que Postfix (MTA).
La configuración está dividida en varios ficheros dentro del directorio /etc/dovecot .
/etc/dovecot/dovecot.conf — aquí solamente descomenta para escuchar en todas las interfaces de red:
/etc/dovecot/conf.d/10-auth.conf - configura las siguientes opciones para que se pueda hacer login con certificado autofirmado:
Ahora vamos a configurar los mailboxes para aceptar Maildir. Para ello primero realizaremos la copia de seguridad del archivo de configuración:
Observa en este punto del archivo de configuración 10-mail.conf que nos dice explícitamente que podemos hacer el cambio. Así que vamos y editamos el archivo:
y buscamos la directiva mail_location y descomentamos la que corresponde a esta:
y comentamos la que esta activa actualmente.
/etc/dovecot/conf.d/10-master.conf — por último, descomenta el bloque SASL para que pueda comunicarse la autenticación correctamente con Postfix:
- Comprobación
Por último, reinicia el servicio para que los cambios surtan efecto:
Para mostrar la configuración actual de Dovecot en formato legible (incluyendo todos los parámetros y valores configurados en los archivos de configuración) podemos usar el siguiente comando:
Mailutils
Mailutils nos servirá como MUA para poder enviar/recibir correos por línea de comandos. Maildir-utils son una serie de herramientas que nos facilitaran la navegación entre correos por terminal.
- Instalación
La instalación será como siempre:
Existen alternativas de clientes de correos por terminal como son mutt, alpine o notmuch
Implementación de certificados TLS autofirmados
Para entorno de laboratorio, generamos un certificado auto-firmado:
Añade al final de /etc/postfix/main.cf:
En /etc/postfix/master.cf, descomenta la línea del puerto 587 (submission):
En /etc/dovecot/conf.d/10-ssl.conf comenta lo que hay puesto y pega lo siguiente:
Por último, renicia los servicios:
Comprobación del funcionamiento
Configuración de usuarios de correo
Por ahora tendremos el handicap de que los usuarios de cliente de correo deben ser los mismos del servidor así que, para crear usuarios de correo, utilizamos el comando adduser para añadir el usuario "larios":
Puedes revisar todos los usuarios creados con getent passwd por ejemplo
Prueba de envío y recepción de correo
Puedes enviar un correo electrónico a una cuenta en tu servidor y luego comprobar si se ha recibido correctamente utilizando este cliente de correo electrónico usando comandos como mail.
Para probar el servicio de correo vía terminal basta escribir algo como lo siguiente:
Si vamos al home del único usuario instalado en el sistema, "ubuntu", veremos que existe un directorio llamado Maildir que contiene la estructura básica de un buzón de correos. Vamos a la carpeta o directorio /home/ubuntu/Maildir/new y vemos que hay dos correos sin enviar.
Si vamos a comprobar algún correo en cuestión:
Veremos ahora el correo recien llegado y podemos leerlo con:
Prueba con Thunderbird
Para la prueba con Thunderbird deberás acceder a la otra MV cliente y configurar:
Thunderbird instalado
Configuramos Thunderbird
Dentro de la interfaz de configuración de usuario de Thunderbird, deberemos añadir cualquiera de los dos usuarios creados con el dominio correspondiente.

Al clicar directamente en aceptar, hará la autodetección del servidor, en ese momento, si todo ha ido bien, se mostrará algo parecido a lo siguiente:

Si el dominio te da algun problema, puedes cambiarlo por la IP del servidor directamente.

Prueba de envío de Thunderbird
Ahora ya podemos dedicarnos a excribir y comunicarnos con el otro usuario creado:

Te puede poner varios problemas para enviarlo sin el correspondiente certificado pero obvia los mensajes y vuelve a intentarlo.
Desde el servidor, ahora podemos comprobar el mail. Si volvemos a /home/ubuntu/Maildir/new deberíamos ver un nuevo correo en almacenado en el inbox. Con un cat o un more podemos ver (a excepción de la imagen obviamente que s envía en base64 ) el contenido del mensaje:

El contenido del archivo será este:

Para revisar mejor el contenido del correo, podemos usar el comando mu view seguido de la ruta al archivo de mensaje dentro del directorio Maildir. Por ejemplo:
Deberías ver algo así:

Prueba de recibo de Thunderbird
Una vez completado esto, podemos hacer el proceso contrario; vamos a enviar correo del servidor por comandos al usuario con el cliente de Thunderbird conectado.
Empezamos por escribir un correo y le adjuntaremos algún archivo creado:

Ahora pasamos a crear el mail con el adjunto:
Esto nos desplegará las opciones;
lo primero que te pedirá será usuarios en copia (CC), pulsa
Enteral terminar.lo siguiente ingresar el asunto del correo electrónico en la primera línea, pulsa
Enteral terminar.Finalmente, escribir el cuerpo del correo electrónico, pula
Entery en la nueva linea, pulsaCtrl+Dpara enviar. El procedimiento sería algo así:
Al guardar no saldrá ningún mensaje de completado pero si vamos al cliente de Thunderbird, deberíamos ver ahora el mensaje:

PRACTICA: Habilita notificaciones de inicio de sesión por correo/alerta
Configurar un pequeño script para generar una alerta cada vez que alguien inicia sesión como root a través de SSH es una de las mejores cosas que puedes hacer para controlar las conexiones entrantes de SSH.
Entonces, primero abre el archivo de configuración SSH:
Luego, agrega o modifica las siguientes líneas para configurar notificaciones por correo:
Una vez configurado Postfix, puedes utilizar el servidor de correo para enviar notificaciones de inicio de sesión.
No olvides guardar los cambios realizados en /etc/ssh/sshd_config y reiniciar el servicio SSH para que los cambios surtan efecto:
+ Firma digital y cifrado
Para el uso de frimas cifradas a través de Thunderbird debemos instalar el plugin Enigmail o usar el soporte nativo de OpenPGP de Thunderbird (versión ≥78):
En Thunderbird → Configuración de cuenta → Cifrado extremo a extremo → importar clave. Los alumnos se intercambian las claves públicas y envían un correo firmado y uno cifrado.
Conclusiones
Como ves, tener un servidor de correos es una utilidad muy interesante y divertida para nuestro servidor. Aunque la mayoría de empresas externalicen el servidor de correo con outlook, gmail o cualquier servicio de dominio propio, como administradores de sistemas es importante saber manejar estos protocolos y software.
Como curiosidad, en la siguiente pagina puedes revisar el estado de tu dominio de correo: https://mxtoolbox.com/
Webgrafía
Última actualización