Page cover

Mailing

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:

Funcionamiento servicio de mailing

Postfix

- Instalación

sudo apt update
sudo apt install postfix

Durante la instalación de Postfix, se te pedirá que elijas el tipo de configuración. Selecciona "Sitio de Internet" para configurar Postfix como un servidor de correo independiente. Como dominio usaremos el que configuramos en el servidor DNS, alexdns.local

- 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:

sudo cp /etc/postfix/main.cf /etc/postfix/main.cf.BKP

Dentro de la configuración, asegúrate de que las siguientes líneas estén configuradas adecuadamente:

myhostname = mail.alexdns.local  # Cambia este por el nombre de tu servidor
mydomain = alexdns.local         # Cambia este por tu dominio
myorigin = $mydomain
inet_interfaces = all
inet_protocols = all

#Añade esto:
home_mailbox = Maildir/

La última linea 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:

  • Mbox permite guardar todos los mensajes en un solo archivo

  • 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 que funcionen los cambios, se reinicia Postfix:

sudo systemctl restart postfix

Dovecot

- Instalación

Para la instalación de Dovecot, existen tres modulos principales (dovecot-core, dovecot-imapd y dovecot-pop3d) de las cuales instalaremos el software principal "dovecot-imapd" que es el que usaremos principalmente para el trabajo de descarga de correos en local:

sudo apt install dovecot-imapd

- 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 .

Ahora vamos a configurar los mailboxes para aceptar Maildir. Para ello primero realizaremos 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. Así que vamos y editamos el archivo:

sudo nano /etc/dovecot/conf.d/10-mail.conf

y buscamos la directiva mail_location y descomentamos la que corresponde a esta:

mail_location = maildir:~/Maildir

y comentamos la que esta activa actualmente.

- Comprobación

Por último, reinicia el servicio para que los cambios surtan efecto:

sudo systemctl restart dovecot

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:

dovecot -n

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:

sudo apt-get install mailutils maildir-utils

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":

sudo adduser larios

Puedes revisar todos los usuarios creados con getent passwd por ejemplo

Verificación

Puedes verificar si Postfix y Dovecot están funcionando correctamente con los siguientes comandos:

sudo postfix check

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:

echo "Este es el body del email" | mail -s "Este el asunto" ubuntu@alexdns.local

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:

ls -R ~/Maildir

Veremos ahora el correo recien llegado y podemos leerlo con:

more /home/ubuntu/Maildir/new/16589874301.V587458I62M354.ubuntu

Prueba con Thunderbird

Para la prueba con Thunderbird deberás acceder a la otra MV cliente y configurar:

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.

El dominio deberá ser el configurado en el dns

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:

Esto está usando la información de Dovecot con el protocolo IMAP configurado y Postfix para el SMTP, ambos con STARTTLS básico.
A resultas de lo anteriormente mencionado, saldrá este mensaje de desconfianza del certificado, más adelante veremos como implementar un certificado SSL útil. De momento confirmaremos.
Si todo ha ido bien, veremos este mensaje

Prueba de envío de Thunderbird

Ahora ya podemos dedicarnos a excribir y comunicarnos con el otro usuario creado:

Ejemplo de envío de mail

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:

En el Maildir veremos todos los mensajes almacenados

El contenido del archivo será este:

Como ves, no solo contiene el mensaje, sino toda la información relativa al email en un solo archivo como ya se ha explicado con el formato Maildir.

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:

mu view /home/ubuntu/Maildir/new/1712214375.Vfd00I47d4dM557656.jupiter 

Deberías ver algo así:

Como ves, la imagen sigue sin poder reproducirse. Con maildir-utils ahora vemos solo el contenido del mensaje con la información básica.

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:

sudo nano laranamagica.txt
Añadamos un archivo de ASCII art por ejemplo

Ahora pasamos a crear el mail con el adjunto:

mail -A /home/laranamagica.txt larios@alexdns.local

Esto nos desplegará las opciones;

  1. lo primero que te pedirá será usuarios en copia (CC), pulsa Enter al terminar.

  2. lo siguiente ingresar el asunto del correo electrónico en la primera línea, pulsa Enter al terminar.

  3. Finalmente, escribir el cuerpo del correo electrónico, pula Enter y en la nueva linea, pulsa Ctrl+D para enviar. El procedimiento sería algo así:

Cc: [Enter]
Subject: Mira lo que hace la rana![Enter]
Para verlo tendrás que abrir el adjunto.[Enter]
[Enter]
Ánimo![Return]
[Ctrl+D]

Al guardar no saldrá ningún mensaje de completado pero si vamos al cliente de Thunderbird, deberíamos ver ahora el mensaje:

Como ves, el adjunto se encuentra en la parte inferior del 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:

sudo nano /etc/ssh/sshd_config

Luego, agrega o modifica las siguientes líneas para configurar notificaciones por correo:

# Habilita la notificación de inicio de sesión por correo
UsePAM yes

# Especifica la dirección de correo para recibir notificaciones
AddressNotificationAddress correo@dominio.com

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:

sudo service ssh restart

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