Postfix
Correo electrónico con Postfix + Dovecot + mailutils Thunderbird en Ubuntu 22.04
El objetivo es mostrar el funcionamiento de un servidor de correo electrónico. Para ello usaremos una MV con Ubuntu Server 22.04. Vamos a necesitar instalar los siguientes servicios:
Dovecot
como servidor IMAP y POP3Postfix
como servidor de correo SMTP - (MTA)Mailutils
Thunderbird
como cliente, en un entorno gráfico
Como se trata de un ejercicio académico, intentaremos simplificar la instalación para lo cual se utilizará la configuración más sencilla posible.
Os propongo hacer la instalación en una VM de Ubuntu Server 22.04 donde tengamos configurado el dominio haven.local
y los servicios de DNS y DCHP.
El entorno de la MV
La idea es utilizar dos MV para realizar las pruebas: el cliente y el servidor.
Adaptador: En modo
red Nat
de modo que ambas VM se puedan comunicar.Vamos a fijar el dominio del correo:
arrakis.local
en el archivo/etc/hosts
. Para ello hacemos lo siguiente:

Instalación
Tenemos que preparar el sistema antes de hacer las instalaciones de:
el servidor SMTP: Postfix
el servidor IMAP: Dovecot
y para gestionar los correos: MailUtils y Thunderbird
Lo primero será actualizar el sistema:
sudo apt update
Una vez actualizado el sistema, procedemos con la instalación. Yo prefiero instalar paquete a paquete.
Postfix
sudo apt install postfix

Utilizaremos como nombre de dominio: arrakis.local

Configuración de Postfix
En /etc/postfix
están los archivos de configuración del servicio:

Existen dos formatos muy extendidos para almacenar el correo electrónico. Estos formatos son Mbox y Maildir.
Mbox permite guardar todos los mensajes en un solo archivo, y Maildir utiliza 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. Para ello vamos a modificar el archivo main.cf de Postfix.
Una práctica conveniente es hacer una copia de seguridad de los archivos de configuración que vayamos a modificar. Para ello, hacemos:
sudo cp /etc/postfix/main.cf /etc/postfix/main.cf.BKP
Editamos el archivo main.cf y vamos a agregar las siguientes líneas al final del mismo.

Dovecot
Antes de hacer la instalación expliquemos un mínimo en qué consiste.
Dovecot es un MDA que tiene como función almacenar los correos y servirlos mediante los protocolos POP3 o IMAP4 al programa cliente MUA.
POP3. Protocolo sencillo pensado para descargar el correo desde el servidor y después borrarlo, aunque es posible mantenerlo en el servidor. No está pensado para funcionar en escenarios en los que varios dispositivos comprueben el correo del mismo buzón.
IMAP4. Protocolo más complejo, puesto que se tiene en cuenta la posibilidad que varios clientes puedan acceder al mismo buzón de manera simultánea. Esto hace que el protocolo deba permitir realizar operaciones para mantener ordenado el buzón de correo desde el cliente, descargando tan solo, aquellos ficheros a los que el usuario tiene acceso.
Lógicamente, ambos protocolos cuentan con su versión TLS.
Instalación de Dovecot
Para probar vamos a instalar el protocolo imap
para lo cual hacemos como siempre:
sudo apt install dovecot-core dovecot-imapd dovecot-pop3d
Una vez instalado hagamos las comprobaciones pertinentes. Podemos observar 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 el MTA.
La configuración está dividida en varios ficheros dentro del directorio /etc/dovecot

El archivo principal se encuentra en: /etc/dovecot/dovecot.conf
e incluye a los otros ficheros.
Para ver los cambios que se han hecho en alguno de los ficheros, ejecuta el siguiente comando y te mostrará un fichero de configuración con los cambios:
dovecot -n

Dovecot puede trabajar tanto con mbox como con mailbox y como es de suponer, la configuración por defecto es con mbox, pero podemos hacer el cambio. Para ello buscamos la directiva mail_location
en el archivo: /etc/dovecot/conf.d/10-mail.conf
.
Hacemos la copia de seguridad del archivo de configuración:
sudo cp /etc/dovecot/conf.d/10-mail.conf /etc/dovecot/conf.d/10-mail.conf.BKP
Observa en este punto del archivo de configuración 10-mail.conf
que nos dice explícitamente que podemos hacer el cambio que os digo. Así que vamos allá.

Editamos el archivo:
sudo nano /etc/dovecot/conf.d/10-mail.conf
y buscamos esta directiva mail_location
y la sustituimos por lo que nos dice. Esto es:
mail_location = maildir:~/Maildir

Cliente de correo: Mailutils
Procederemos a la instalación del cliente de correo mailutils
. Para ello ejecutamos:
sudo apt-get install mailutils

Nota: Puedes utilizar otro cliente de correo por terminal como por ejemplo: Mutt
Testeando
Para probar el servicio de correo vía terminal basta escribir algo como lo siguiente:
echo "Este es el body del email" | mail -s "Este el asunto" pepe@haven.local
Si vamos al home del único usuario instalado en el sistema, "kirby", 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/kirby/Maildir/new
y vemos que hay dos correos sin enviar.

Observemos el contenido del primero:

y nos percatamos que no ha sido posible la entrega del correo enviado. Es evidente que todavía nos queda mucho por configurar.

Cliente de correo: Thunderbird
Vamos a probar el envío del correo utilizando un cliente como Thunderbird, pero me preguntarás dónde. Lo correcto sería desde la VM que estés utilizando como cliente.
La instalación de Thunderbird les muy sencilla desde el propio terminal:
sudo apt install thunderbird
Lo más probable es que no necesites hacer la instalación porque viene por defecto en Ubuntu Desktop.
Testeando
Probemos el servidor IMAP con Thunderbird como MUA. Lo primero que tendremos que hacer es configurar la cuenta de correo de uno de los usuarios locales.
Quiero hacer énfasis en esto de usuarios locales, porque se trata de los propios usuarios del sistema, del servidor de correos. Hay un modo de configurar un servidor de correos con Postfix sin necesidad de tener los usuarios en el sistema, sino que estarían en una DB como MySQL. Intentaré hacer la adaptación para ese caso porque resulta muy interesante.
Entonces, voy a crear otro usuario en el sistema, además del usuario kirby
. Para ello, puedes hacer:
sudo adduser pepe
y ya lo tenemos:

Configuramos la cuenta de Pepa en Thunderbird. La contraseña es la misma del sistema, claro está. Un detalle adicional, es evidente que es necesario aceptar una excepción para el certificado digital porque tampoco está configurado.

Hace las verificaciones y encuentra que:

Entre otros datos nos dice que se pueden cifrar los datos de extremo a extremo y agregar una firma. Se puede utilizar GPG
para crear una par de claves pública - privada
que permita cifrar los mensajes.

Desde el usuario pepe@arrakis.local enviamos un correo a pepa@arrakis.local (recuerda que ambos están en el sistema):

Y enseguida podemos observar que llega un correo nuevo al buzón de Pepa:

Sin lugar a dudas, faltan muchos detalles por configurar. Entre los tantos detalles:
no hay ningún filtro antispam, como por ejemplo Spamassassin.
no hemos probado el servicio desde otro equipo que no sea el propio servidor
no tenemos un servidor de DNS
etc.
Nos queda mucho por trabajar pero hemos aprendido algo.
Verificando el servicio con telnet
Para poder comprobar que efectivamente esto es así, en el servidor de correos he modificado el adaptador de red al modo puente
para estar en la misma red que el equipo anfitrión.
Hacemos telnet a la IP o nombre del servidor de correos a través del puerto 25 de SMTP:
telnet 192.168.1.30 25
Una vez dentro nos responde lo siguiente:
220 kirby.home ESMTP Postfix (Ubuntu)
Si observamos, no está respondiendo con el dominio arrakis.local que le asignamos (detalle a corregir)
Por otra parte, una forma de comunicarnos con el servidor es escribiendo:
ehlo kirby
o ehlo localhost
Y nos responde con:

Como se muestra en la figura, podemos escribir un correo electrónico utilizando:
mail from: usuario@dominio
Si nos responde con un 250 2.1.0 OK
entonces podemos escribir el destinatario. Observa que he escrito kirby@kirby
y esto es porque el usuario que tengo en el sistema es kirby
y el nombre del equipo también (por el error que ya he comentado).
rcpt to: kirby@kirby
Y como está correcto, nos responde con un 250 2.1.5 OK
Ahora podemos escribir:
DATA
Subject: Mi mensaje
Hola, este es el cuerpo del email
.
y en la siguiente línea escribir el cuerpo del mensaje. Para finalizar, clicamos enter
y ponemos un punto
. Observa que nos responde el servidor con un 250 2.0.0 OK
con el mensaje enviado. El comando quit
sirve para finalizar la conexión.
El siguiente pantallazo muestra el proceso realizado, solo te pido que tengas en cuenta que lo hice en otro momento y utilizando otra VM con otro nombre de dominio:

¿Y ahora qué? Pues vayamos a nuestro servidor de correos y miremos en la carpeta /home/kirby/Mailbox/new/1658955914.....kirby
y veremos que es nuestro correo que ha llegado al servidor.


Está claro que tenemos ciertos puertos abiertos para la recepción y envío de los correos en el servidor:
sudo nmap -ST -O 192.168.1.30

Link
Last updated
Was this helpful?