Apuntes de Kirby
  • 👀whoami
  • 🦉Redes
    • Introducción Redes
      • Organizaciones
      • Historia
      • Puntos de conexión
      • Métodos de acceso a la red
    • Clasificación de las redes
    • Topología de las red
    • Direccionamiento IP
      • IPv4
        • Subredes IPv4
        • Superredes IPv4
        • VLSM
      • IPv6
      • MAC
      • NAT
    • Enrutamiento
      • Enrutamiento estático
      • Enrutamiento dinámico
        • RIPv1 & RIPv2
        • Tablas de enrutamiento
    • Redes conmutadas
    • Switches
      • Arranque
      • Recuperación
      • Administración básica
    • CML
      • 🚧1er CML lab
    • CISCO
      • ¿Qué son las VLAN?
        • Ejemplo 1 de VLAN
        • Ejemplo 2 de VLAN
      • Acceso y password
      • NAT / PAT
    • Firewalls
      • Tipos de firewalls
      • ZPF
        • Funcionamiento
        • Configurando un ZPF
      • Sophos Firewall XG
        • Sophos home
        • Aprendiendo a usar Sophos
      • pfSense
        • Instalando pfSense
        • OpenVPN en pfSense
        • Port Forward
        • Alias
    • Proxy
      • Squid en pfSense
        • Squid Proxy Server
        • SquidGuard Proxy
      • Proxy reverse Nginx
    • 🚧Suricata
  • 🐝Servicios
    • Servidores Web
      • Nginx
        • NGINX, hosts virtuales
        • Hosts virtuales basados en dominio
        • PHP-FPM
        • Nginx: PHP y MySQL
          • MySQLi - PHP
        • En Alpine linux
        • 🚧Proxy
    • Servidores de correo
      • Seguridad en el correo
      • Postfix
      • hMailServer
      • Clientes de correo
        • Mailutils
        • Mutt
    • Servidores de FTP
      • FileZilla
      • VSFTPD
      • FTP vía IIS
    • Servidores DNS
      • DNS - Windows Server 2016
      • DNS - Ubuntu Server 22.04
      • Systemd
    • Servidores DHCP
      • DHCP-Windows Server 2016
      • DHCP-Ubuntu Server 22.04
    • Servidores MySQL
    • 🚧Mensajería instantánea
      • Ejabberd
    • 🚧Imágenes - Vídeos
      • FFMPEG + YT-DLP
      • Plex
      • Jellyfin
      • Plesk
      • RTMP
      • SRT
    • Webmin + Virtualmin
  • NextCloud
  • 🔑Seguridad
    • NAS
      • Instalación Synology NAS en VirtualBox
        • Creación de volúmenes y su uso
        • Actualización Synology NAS
        • Creación de usuarios y carpetas compartidas
        • Funciones del panel de control
          • Acceso por SSH
          • Configuración de los servicios de archivos
          • Configuración de red
          • Copias de seguridad (restauración)
          • Seguridad
          • Personalizar páginas de inicio
          • Servicio de notificaciones
        • Centro de paquetes Synology
          • Servidores multimedia
          • Paquetes de utilidades
          • Cloud Sync
          • Hyper Backup
          • Synology Office
      • Truenas
        • Rsync en Truenas
      • OpenmediaVault
    • Backups
      • Rsync
        • Ejemplo de rsync
    • ¿Qué son las ACL?
    • SOPS/AGE
    • RAID
      • mdadm
  • 🐳Virtualización
    • Proxmox
      • Instalar en VMWare
      • Instalar en VirtualBox
      • Entorno Proxmox
      • Almacenamiento local
      • Añadir discos
      • Clonar
      • Qemu agent
      • Linux container - LXC
      • Clúster
      • Red Interna
      • 🚧Proxmox Backup
      • 🚧Otras consideraciones
    • Alpine Linux
    • Contenedores
      • Docker
        • YAML
        • Instalando Docker
        • Portainer
          • Instalando Portainer
          • Dentro de Portainer
        • Docker volumen
        • Docker compose
          • Docker: PHP y MySQL
          • Importar sitio web en Docker
          • Instalando Wordpress
      • Pi-hole
        • Instalando Pi-hole en Docker
        • Instalando Pi-hole en Debian
        • RDP
          • RDP - Docker
  • 🐞Misceláneas
    • Datos - codificación
    • IPTables
    • Túnel con Cloudflare
    • Servidor de video
    • Comandos de Linux
    • Anaconda & Spyder
    • CGI - NGINX
    • Arduino
      • Capítulo 0 Blink
      • Capítulo 1 Led
      • Capítulo 2 Botton & LED
  • ⁉️Interesante
    • Curioso
    • Ideas
Powered by GitBook
On this page
  • El entorno de la MV
  • Instalación
  • Postfix
  • Dovecot
  • Cliente de correo: Mailutils
  • Testeando
  • Cliente de correo: Thunderbird
  • Testeando
  • Verificando el servicio con telnet
  • Link

Was this helpful?

Edit on GitHub
  1. Servicios
  2. Servidores de correo

Postfix

Correo electrónico con Postfix + Dovecot + mailutils Thunderbird en Ubuntu 22.04

PreviousSeguridad en el correoNexthMailServer

Last updated 21 days ago

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:

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

El entorno de la MV

La idea es utilizar dos MV para realizar las pruebas: el cliente y el servidor.

  1. Adaptador: En modo red Nat de modo que ambas VM se puedan comunicar.

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

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

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

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

  1. no hay ningún filtro antispam, como por ejemplo Spamassassin.

  2. no hemos probado el servicio desde otro equipo que no sea el propio servidor

  3. no tenemos un servidor de DNS

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

  1. https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-postfix-as-a-send-only-smtp-server-on-ubuntu-20-04-es

  2. https://mailutils.org/manual/mailutils.pdf

  3. https://www.dovecot.org/

🐝
Postfix una vez instalado en el sistema
Editando el archivo main.cf de postfix
Archivos de configuración de Dovecot
Configuración de dovecot
Modificando el archivo de configuración 10-mail.conf
Email enviado utilizando telnet
Buzón de correo del usuario kirby
Buzón de correo del usuario pepe (la prueba realizada sobre un dominio haven.local con fecha 25 de febrero de 2024)