Postfix
Correo electrónico con Postfix + Dovecot + mailutils Thunderbird en Ubuntu 22.04
Last updated
Was this helpful?
Correo electrónico con Postfix + Dovecot + mailutils Thunderbird en Ubuntu 22.04
Last updated
Was this helpful?
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 POP3
Postfix
como servidor de correo SMTP - (MTA)
Mailutils
como cliente para el terminal (MUA)
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.
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:
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:
Una vez actualizado el sistema, procedemos con la instalación. Yo prefiero instalar paquete a paquete.
Utilizaremos como nombre de dominio: arrakis.local
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:
Editamos el archivo main.cf y vamos a agregar las siguientes líneas al final del mismo.
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.
Para probar vamos a instalar el protocolo imap
para lo cual hacemos como siempre:
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 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:
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:
y buscamos esta directiva mail_location
y la sustituimos por lo que nos dice. Esto es:
Procederemos a la instalación del cliente de correo mailutils
. Para ello ejecutamos:
Nota: Puedes utilizar otro cliente de correo por terminal como por ejemplo: Mutt
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, "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.
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:
Lo más probable es que no necesites hacer la instalación porque viene por defecto en Ubuntu Desktop.
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.
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:
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