# Servidor de Correo en Ubuntu 24.04: Instalación y Configuración
- [Introducción](#Introducción)
- [Requisitos previos](#Requisitos-previos)
- [Preparar el entorno](#Preparar-el-entorno)
- [Índice de secciones](#Índice-de-secciones)
## Introducción
<p style="text-align: justify;">
En un mundo donde el correo electrónico sigue siendo una herramienta esencial tanto para la comunicación personal como para la profesional, configurar tu propio servidor de correo puede ser una experiencia enriquecedora. No solo te permite tener control total sobre tus mensajes, sino que también te ayuda a entender cómo funciona esta tecnología detrás de escena.
<p style="text-align: justify;">
Un servidor de correo es, en términos simples, un sistema que gestiona el envío, recepción y almacenamiento de correos electrónicos. Cuando envías un correo, este pasa por varios servidores antes de llegar a su destinatario. Tener tu propio servidor te da el poder de decidir cómo se almacenan los correos, cómo se maneja la seguridad y cómo proteger tus datos contra amenazas como spam o virus.
<p style="text-align: justify;">
En esta guía, te llevaré paso a paso por la configuración de un servidor de correo completo en Ubuntu 24.04 , actualizando y adaptando los pasos de una guía publicada originalmente en el <a href="https://blog.tiraquelibras.com/?p=601">blog.tiraquelibras.com</a> en 2019. Aunque esa guía fue muy útil en su momento, las versiones de software han cambiado, y algunos comandos o configuraciones ya no son compatibles. Además, mi enfoque será diferente: lo haré en un entorno local , lo que significa que no me preocuparé por configurar cosas como iptables (ya que no estará expuesto a internet). Esto hace que sea ideal para pruebas, aprendizaje o proyectos internos.
<p style="text-align: justify;">
El resultado final será un servidor de correo robusto y seguro, con todas las funcionalidades necesarias para gestionar correos de manera eficiente. Además, incluiremos una interfaz web moderna gracias a Apache y Rainloop , lo que permitirá acceder a tus correos desde cualquier navegador.
<p style="text-align: justify;">
Así que, si estás interesado en aprender cómo funciona un servidor de correo por dentro, o simplemente quieres tener el control absoluto sobre tus mensajes electrónicos, ¡sigue leyendo! Vamos a construirlo juntos, paso a paso, explicando cada detalle para que todo tenga sentido, incluso si eres nuevo en este mundo.
---
## Requisitos previos
<p style="text-align: justify;">
Antes de comenzar con la configuración del servidor de correo, asegúrate de cumplir con los siguientes requisitos. Esto garantizará que tengas todo lo necesario para completar el proceso sin problemas.
1. Conocimientos básicos necesarios
* Linux : Debes estar familiarizado con el uso de la terminal de Ubuntu y tener conocimientos básicos sobre cómo navegar por el sistema de archivos, instalar software y modificar archivos de configuración.
* Redes : Entender conceptos básicos como DNS, puertos, protocolos (IMAP, SMTP, POP3) y cómo funcionan las direcciones IP.
* Seguridad : Tener nociones sobre la importancia de proteger tu servidor contra accesos no autorizados y ataques.
2. Herramientas y software requeridos
Para llevar a cabo esta configuración, necesitarás los siguientes componentes:
* Sistema operativo : Una instalación limpia de Ubuntu 24.04 (o una máquina virtual con este sistema).
* Acceso a internet : Para descargar los paquetes necesarios durante la instalación.
* Un editor de texto : Puedes usar nano, vim o cualquier otro editor de texto que prefieras para modificar los archivos de configuración.
* Un cliente SSH (opcional): Si trabajas en una máquina remota, necesitarás un cliente SSH para conectarte al servidor.
* Una cuenta de usuario con privilegios sudo : Para poder realizar cambios en el sistema.
3. Servicios y software que instalaremos
Servicios y herramientas que utilizaremos en esta guía:
* Bind9 : Servidor DNS local para resolver nombres de dominio internamente.
* Apache : Servidor web para alojar la interfaz de correo web (Rainloop).
* MySQL : Base de datos para almacenar usuarios, dominios y contraseñas.
* Postfix : Manejo del envío y recepción de correos.
* PostfixSRS : Soporte para el estándar SRS (Sender Rewriting Scheme).
* Dovecot : Acceso a correos mediante IMAP y POP3.
* SIEVE y ManageSIEVE : Gestión de filtros de correo.
* SPF, DKIM y DMARC : Mejoras en la autenticación y seguridad del correo.
* Postgrey : Sistema antispam basado en listas grises.
* Amavis con ClamAV y SpamAssassin : Filtros antispam y antivirus.
* Fail2ban : Protección contra intentos de acceso malintencionados.
* Rainloop : Interfaz web moderna para acceder a tus correos.
---
## Preparar el entorno
<p style="text-align: justify;">
Antes de comenzar con la instalación y configuración de los servicios, es importante preparar el entorno para asegurarte de que todo funcione correctamente. Sigue estos pasos:
### Configurar el nombre del servidor (hostname)
<p style="text-align: justify;">
El nombre del servidor debe estar correctamente configurado para que los servicios de correo funcionen sin problemas. En este caso, usaremos el nombre ccuellar. Ejecuta los siguientes comandos en la terminal:
sudo hostnamectl set-hostname ccuellar
<p style="text-align: justify;">
Aplicar los cambios sin reiniciar el sistema:
sudo systemctl restart systemd-hostnamed
Luego, edita el archivo /etc/hosts para asegurarte de que el nombre del servidor coincida con la dirección IP local. Abre el archivo con tu editor de texto preferido:
sudo vi /etc/hosts
<p style="text-align: justify;">
Asegúrate de que contenga una línea similar a esta (ajusta la IP según tu configuración):
127.0.0.1 localhost
127.0.0.1 ccuellar
*Nota : Cambiar el hostname y actualizar /etc/hosts es crucial porque muchos servicios dependen de que el sistema tenga un nombre consistente y resuelva correctamente su propia dirección IP.*
### Configurar las interfaces de red con Netplan
<p style="text-align: justify;">
Usaremos tres interfaces de red en este entorno, cada una con un propósito específico:
* Interfaz para salida a internet : Esta será la interfaz principal que conectará nuestro servidor al mundo exterior.
* Interfaz para WireGuard : Esta interfaz estará dedicada a la configuración de una red privada virtual (VPN) usando WireGuard.
* Interfaz con IP fija para DNS local : Esta interfaz tendrá una dirección IP estática y se usará exclusivamente para el servidor DNS (Bind9). Es una buena práctica asignar una IP fija para el DNS local porque garantiza que los servicios internos siempre puedan resolver nombres de dominio de manera confiable.
<p style="text-align: justify;">
Para configurar estas interfaces, edita el archivo de configuración de Netplan. Por ejemplo, si el archivo es /etc/netplan/01-network-manager-all.yaml.
sudo vi /etc/netplan/01-network-manager-all.yaml
Aquí tienes un ejemplo de cómo podrías configurarlo:
network:
version: 2
renderer: NetworkManager
ethernets:
enp3s0:
dhcp4: no
addresses:
- 10.24.153.2/24
nameservers:
addresses:
- 10.24.153.2
- 8.8.8.8
- 8.8.4.4
search:
- ccuellar.test
Verificar la sintaxis:
sudo netplan generate
Aplicar la configuración:
sudo netplan apply
### Cambiar systemd-resolved a unlink para usar Bind9
<p style="text-align: justify;">
Por defecto, Ubuntu utiliza systemd-resolved para manejar las consultas DNS, lo que puede interferir con nuestro servidor DNS local (Bind9). Para evitar esto, debemos cambiar la configuración de systemd-resolved para que use nuestro DNS local en lugar del predeterminado.
Edita el archivo /etc/systemd/resolved.conf:
sudo vi /etc/systemd/resolved.conf
Busca la línea que dice DNSStubListener y cámbiala a no:
DNSStubListener=no
*Puedes añadir tu DNS que apunte a tu dirección IP y añadir el nombre de tu dominio en Domains.*
Aplicar la configuración:
sudo systemctl restart systemd-resolved
<p style="text-align: justify;">
Finalmente, asegúrate de que /etc/resolv.conf tenga tu DNS dirección IP de primero:
resolvectl
cat /etc/resolv.conf
### Instalar los paquetes
<p style="text-align: justify;">
Para facilitar el proceso posterior, vamos a instalar de antemano los paquetes que utilizaremos en esta guía. Ejecuta el siguiente comando:
sudo apt update && sudo apt install -y \
dnsutils \
postfix postfix-mysql \
dovecot-core dovecot-imapd dovecot-pop3d dovecot-lmtpd dovecot-mysql \
mysql-server \
apache2 \
bind9
<p style="text-align: justify;">
Al instalar Postfix, el sistema nos pide que configuremos el tipo de instalación para el correo. Escogemos la opción 'Internet Site' y especificamos el nombre de dominio completo (FQDN) que tendrá nuestro servidor de correo.

Las versiones de paquetes instalados que usaré son:
* mail_version = 3.8.6
* dovecot versión 2.3.21 (47349e2482)
* mysql Ver 8.0.41-0ubuntu0.24.04.1 for Linux on x86_64 ((Ubuntu))
<p style="text-align: justify;">
Con estos pasos, tu entorno estará listo para comenzar la configuración del servidor de correo. En las siguientes secciones, nos enfocaremos en la instalación y configuración de cada uno de los servicios mencionados.
---
# Índice de secciones
## <a href="https://hackmd.io/@ccuellar/SkfRjrwake">Configuración DNS</a>
## <a href="https://hackmd.io/@ccuellar/r1NBq0F61l">Apache2 y certificado SSL autofirmado</a>
## [Configuración MySQL e instalación phpMyAdmin](https://hackmd.io/@ccuellar/ryMRcAFT1g)
## [Configuración de Postfix y PostfixSRS](https://hackmd.io/@ccuellar/SkKQiAY61g)
## [Configuración de Dovecot, SIEVE y ManageSIEVE](https://hackmd.io/@ccuellar/BJJyhAYpye)
## [Configuración de cuotas de correo](https://hackmd.io/@ccuellar/Bk6H2CYTyx)
## [Instalación y configuración de SPF, DKIM y DMARC](https://hackmd.io/@ccuellar/rkUthRYp1l)
## [Instalación y configuración de Postgrey](https://hackmd.io/@ccuellar/rkm3hAKpJl)
## [Instalación y configuración de Amavis, ClamAV y SpamAssassin](https://hackmd.io/@ccuellar/Bk_9y19p1g)
## [Instalación de Webmail Rainloop](https://hackmd.io/@ccuellar/Bkx1l19Tye)
## [Instalación y configuración de Fail2ban ](https://hackmd.io/@ccuellar/B1PLNBwTyl)
---
# Recurso
[Completo servidor de correo en Debian 9 – Índice de contenidos](https://blog.tiraquelibras.com/?p=601)