Instalación de Mailcow en un VPS: Guía completa de correo self-hosted con Docker y Let's Encrypt
TL;DR
En esta guía detallada, configuraremos paso a paso un servidor de correo Mailcow completo en su Virtual Private Server (VPS), utilizando Docker y certificados SSL generados automáticamente por Let's Encrypt. Obtendrá control total sobre su correo electrónico, garantizando privacidad, fiabilidad y flexibilidad, lo que es ideal para desarrolladores, fundadores en solitario y empresas que buscan independencia de proveedores de correo externos.
- La configuración de Mailcow en un VPS permite crear su propio servicio de correo con control total sobre los datos.
- El uso de Docker simplifica el despliegue, el aislamiento y la actualización de todos los componentes de Mailcow.
- La integración automática de Let's Encrypt proporciona certificados SSL/TLS gratuitos y actualizados para proteger el tráfico.
- La guía cubre todas las etapas: desde la elección del VPS y la configuración básica del servidor hasta la instalación de Mailcow, la configuración de DNS, la copia de seguridad y la resolución de problemas comunes.
- Obtendrá un servidor de correo completamente funcional, que incluye interfaz web, antispam, antivirus y soporte para protocolos modernos.
- Todos los comandos y configuraciones son válidos para 2026 y están diseñados para su ejecución inmediata.
Qué configuramos y por qué
En esta guía, instalaremos y configuraremos Mailcow, una solución integral para crear su propio servidor de correo. Mailcow es un potente servicio de correo totalmente contenedorizado (basado en Docker) que proporciona todos los componentes necesarios para trabajar con correo electrónico: SMTP, IMAP/POP3, interfaz web (SOGo), antispam (Rspamd), antivirus (ClamAV), calendario, contactos, así como integración con Let's Encrypt para la emisión automática de certificados SSL/TLS.
El objetivo es desplegar Mailcow en su propio VPS o servidor dedicado, lo que le dará control total sobre su infraestructura de correo. Al final, obtendrá un servidor de correo fiable y seguro que podrá servir dominios y usuarios de su elección. Podrá crear buzones de correo, gestionar alias, configurar reglas de filtrado de spam y estar seguro de la confidencialidad de sus datos, ya que se almacenarán en su propio hardware y no en el de un proveedor externo.
¿Por qué correo self-hosted en un VPS y no servicios en la nube?
Existen muchas alternativas al correo self-hosted, como Gmail, Outlook 365, ProtonMail o Yandex.Mail para dominios. Ofrecen comodidad y facilidad de uso, pero tienen sus desventajas:
- Control de datos: Al utilizar servicios en la nube, sus datos se almacenan en servidores de terceros, lo que puede plantear problemas de privacidad y seguridad. Una solución self-hosted le da control total sobre dónde y cómo se almacenan sus correos electrónicos.
- Flexibilidad y personalización: Los servicios en la nube ofrecen opciones de configuración limitadas. Mailcow, al estar desplegado en su servidor, permite ajustar finamente todos los aspectos del funcionamiento del correo, desde las reglas de filtrado hasta la integración con otros sistemas.
- Costo a largo plazo: Para equipos grandes o muchos buzones de correo, el costo de los servicios de correo en la nube puede aumentar significativamente. Un servidor propio, con la configuración adecuada, puede ser una solución más rentable.
- Independencia: No depende de las políticas, fallos o cambios en el funcionamiento de proveedores externos. Su servidor de correo funcionará tal como lo configuró.
Esta guía es ideal para quienes valoran la privacidad, desean control total sobre su infraestructura o tienen requisitos específicos que no pueden ser satisfechos por las ofertas estándar en la nube. Los desarrolladores pueden configurar el correo para sus proyectos, los emprendedores para la comunicación en equipo y los entusiastas de las criptomonedas para garantizar la privacidad.
Qué configuración de VPS se necesita para esta tarea
Para un despliegue exitoso y estable de Mailcow, es crucial elegir un VPS o servidor dedicado adecuado. Mailcow, aunque optimizado para funcionar en contenedores, es una aplicación que consume bastantes recursos debido a la multitud de componentes incluidos (base de datos, servidor web, antispam, antivirus, etc.).
Requisitos mínimos (para 1-5 usuarios, tráfico bajo):
- CPU: 2 núcleos x86-64. Los procesadores modernos con alta frecuencia de reloj son preferibles.
- RAM: 4 GB. Este es el mínimo absoluto; con antispam y antivirus activos, puede ser insuficiente. Parte de la RAM será utilizada por Docker y el SO.
- Disco: 50 GB SSD. El SSD es crucial para el rendimiento de la base de datos y el acceso rápido a los archivos de correo. Tenga en cuenta que los correos electrónicos llenan rápidamente el espacio en disco.
- Red: 100 Mbit/s con tráfico ilimitado o un gran volumen (mínimo 1 TB/mes). Dirección IP estable, preferiblemente sin historial de spam.
Plan de VPS recomendado (para 5-20 usuarios, tráfico moderado):
- CPU: 4 núcleos x86-64.
- RAM: 8 GB. Esto garantizará un funcionamiento cómodo de todos los componentes, incluidos Rspamd y ClamAV.
- Disco: 100-200 GB SSD. Con margen para el crecimiento de los buzones de correo y el almacenamiento de registros.
- Red: 1 Gbit/s con tráfico ilimitado.
Para estas características, se puede considerar un VPS con las características indicadas. Al elegir, preste siempre atención al tipo de disco (solo SSD) y a la disponibilidad de tráfico ilimitado o de gran volumen.
¿Cuándo se necesita un servidor dedicado y no un VPS?
Un servidor dedicado (dedicated server) se vuelve necesario si:
- Gran número de usuarios: Más de 50 usuarios activos que generan un tráfico significativo.
- Alto volumen de correo: El servidor procesa cientos de miles de correos al día.
- Requisitos de rendimiento: Se necesita el máximo rendimiento para antispam, antivirus o integraciones específicas.
- SLA estrictos y aislamiento: Se requiere aislamiento físico completo para seguridad y estabilidad, así como recursos garantizados sin "vecinos ruidosos".
- Almacenamiento de grandes volúmenes de datos: Buzones de correo con terabytes de datos.
Para estos escenarios, es aconsejable considerar un servidor dedicado adecuado que proporciona control total sobre el hardware y garantiza recursos dedicados.
Ubicación: en qué influye
La elección de la ubicación del servidor puede influir en varios factores:
- Latencia: Cuanto más cerca esté el servidor de la mayoría de sus usuarios, menor será la latencia al acceder a la interfaz web y a IMAP/POP3.
- Legislación: Las leyes sobre almacenamiento de datos y privacidad varían en diferentes países. Elija una ubicación que cumpla con sus requisitos y normativas.
- Reputación de la dirección IP: Algunos rangos de IP en ciertos países pueden tener una peor reputación con los filtros de spam, lo que puede afectar la entregabilidad de su correo. Es preferible elegir proveedores con buena reputación y la posibilidad de obtener una dirección IP "limpia".
- Resolución DNS: La proximidad a los nodos principales de Internet puede acelerar ligeramente las consultas DNS, pero esto es menos crítico que la latencia para los usuarios.
Generalmente, se recomienda elegir una ubicación lo más cercana posible a su audiencia principal o a la ubicación de su negocio.
Preparación del servidor
Antes de instalar Mailcow, es necesario realizar una preparación básica del servidor. Utilizaremos Ubuntu 24.04 LTS como un sistema operativo estable y ampliamente utilizado. Asegúrese de tener acceso SSH al servidor con privilegios de root o de un usuario con sudo.
1. Actualización del sistema e instalación de utilidades básicas
Primero, actualizaremos el sistema e instalaremos los paquetes necesarios.
sudo apt update # Actualizamos la lista de paquetes
sudo apt upgrade -y # Actualizamos los paquetes instalados
sudo apt install -y curl wget git # Instalamos utilidades básicas: curl, wget, git
2. Creación de un nuevo usuario con permisos sudo (recomendado)
Trabajar como root no se recomienda para tareas diarias. Crearemos un nuevo usuario y lo añadiremos al grupo sudo.
sudo adduser mailuser # Creamos un nuevo usuario 'mailuser'
sudo usermod -aG sudo mailuser # Añadimos el usuario 'mailuser' al grupo 'sudo'
Ahora, salga de la sesión de root e inicie sesión como mailuser. Todos los comandos posteriores que requieran privilegios se ejecutarán con sudo.
3. Configuración de claves SSH (opcional, pero muy recomendable)
Para mejorar la seguridad, se recomienda utilizar claves SSH en lugar de contraseñas. Si aún no tiene un par de claves, genérelas en su máquina local:
ssh-keygen -t rsa -b 4096 # Generamos una nueva clave SSH en la máquina local
Luego, copie la clave pública al servidor:
ssh-copy-id mailuser@ВАШ_IP_СЕРВЕРА # Copiamos la clave pública al servidor para 'mailuser'
Después de esto, puede deshabilitar la autenticación por contraseña en el archivo /etc/ssh/sshd_config, estableciendo PasswordAuthentication no y reiniciando el servicio SSH.
4. Configuración del firewall (UFW)
Instalaremos y configuraremos UFW (Uncomplicated Firewall) para proteger el servidor. Por defecto, todas las conexiones entrantes estarán prohibidas, excepto las que permitamos explícitamente.
sudo apt install -y ufw # Instalamos UFW
sudo ufw default deny incoming # Denegamos todas las conexiones entrantes por defecto
sudo ufw default allow outgoing # Permitimos todas las conexiones salientes por defecto
sudo ufw allow ssh # Permitimos SSH (puerto 22)
sudo ufw enable # Habilitamos el firewall
sudo ufw status # Verificamos el estado del firewall
En este punto, el servidor está listo para la instalación de Docker y Mailcow.
Instalación de software — paso a paso
Mailcow funciona con Docker, por lo que el primer paso será instalar Docker Engine y Docker Compose. Utilizaremos las versiones actuales para 2026.
1. Instalación de Docker Engine
Instalaremos Docker Engine utilizando el repositorio oficial de Docker para obtener siempre las versiones más recientes.
# Добавляем GPG ключ Docker
sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# Добавляем репозиторий Docker в APT
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Устанавливаем Docker Engine, Docker CLI и containerd
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# Проверяем установку Docker
sudo docker run hello-world # Запускаем тестовый контейнер для проверки установки Docker
Añadiremos su usuario al grupo docker para no tener que usar sudo con cada comando de Docker:
sudo usermod -aG docker $USER # Добавляем текущего пользователя в группу 'docker'
newgrp docker # Применяем изменения группы без перезахода
Ahora Docker está instalado y listo para funcionar. La versión de Docker Engine será aproximadamente 26.x - 27.x, y Docker Compose Plugin 2.24.x - 2.27.x, lo cual es actual para 2026.
2. Clonación del repositorio Mailcow-Dockerized
Nos moveremos al directorio donde desea almacenar los archivos de Mailcow (por ejemplo, /opt/mailcow-dockerized) y clonaremos el repositorio oficial de Mailcow.
sudo mkdir /opt/mailcow-dockerized # Создаем директорию для Mailcow
sudo chown $USER:$USER /opt/mailcow-dockerized # Устанавливаем владельца директории на текущего пользователя
cd /opt/mailcow-dockerized # Переходим в созданную директорию
git clone https://github.com/mailcow/mailcow-dockerized . # Клонируем репозиторий Mailcow в текущую директорию
3. Generación del archivo de configuración de Mailcow
Mailcow utiliza el archivo mailcow.conf para su configuración. Se puede generar mediante un script.
./generate_config.sh # Запускаем скрипт для генерации mailcow.conf
El script hará varias preguntas:
- Hostname (FQDN): Introduzca el nombre de dominio completo de su servidor de correo, por ejemplo,
mail.yourdomain.com. Este será el nombre principal por el que su servidor será accesible. - Timezone: Seleccione su zona horaria.
Después de responder a las preguntas, se creará el archivo mailcow.conf. Ábralo y asegúrese de que todas las configuraciones se ajustan a sus necesidades. Preste especial atención a las variables relacionadas con los puertos y la red si tiene requisitos específicos.
4. Configuración de registros DNS
Este es un paso críticamente importante para el funcionamiento del servidor de correo. Sin los registros DNS correctos, su correo no se entregará o terminará en spam. Deberá añadir los siguientes registros en el panel de control DNS de su dominio (yourdomain.com):
- Registro A para Mailcow FQDN:
- Nombre/Host:
mail(o su FQDN, por ejemplo,mail.yourdomain.com) - Tipo:
A - Valor:
SU_IP_DEL_SERVIDOR
- Nombre/Host:
- Registro AAAA para Mailcow FQDN (si usa IPv6):
- Nombre/Host:
mail - Tipo:
AAAA - Valor:
SU_DIRECCIÓN_IPV6_DEL_SERVIDOR
- Nombre/Host:
- Registro MX: (apunta a su servidor de correo)
- Nombre/Host:
@oyourdomain.com - Tipo:
MX - Prioridad:
10(o cualquier número, cuanto menor, mayor prioridad) - Valor:
mail.yourdomain.com
- Nombre/Host:
- Registro SPF: (para prevenir la suplantación de remitentes)
- Nombre/Host:
@oyourdomain.com - Tipo:
TXT - Valor:
v=spf1 mx a:mail.yourdomain.com -all
- Nombre/Host:
- Registro DKIM: (para firmar correos salientes; generado por Mailcow)
- Después del primer inicio, Mailcow generará las claves DKIM. Deberá copiar el registro TXT de la interfaz web de Mailcow (
Configuration->Domains->Add domainoEdit domain) y añadirlo a su DNS. El formato será aproximadamente el siguiente:dkim._domainkey.yourdomain.com TXT v=DKIM1; k=rsa; p=CLAVE_PÚBLICA
- Después del primer inicio, Mailcow generará las claves DKIM. Deberá copiar el registro TXT de la interfaz web de Mailcow (
- Registro DMARC: (para definir la política de procesamiento de correos que no pasaron SPF/DKIM)
- Nombre/Host:
_dmarc - Tipo:
TXT - Valor:
v=DMARC1; p=quarantine; fo=1; ruf=mailto:[email protected]; rua=mailto:[email protected](reemplace[email protected]por una dirección real)
- Nombre/Host:
Asegúrese de que todos los registros DNS estén indexados y disponibles (puede tardar varias horas). Puede verificarlos usando dig o herramientas en línea, como MXToolbox.
dig A mail.yourdomain.com # Проверяем A-запись
dig MX yourdomain.com # Проверяем MX-запись
dig TXT yourdomain.com # Проверяем SPF-запись
dig TXT _dmarc.yourdomain.com # Проверяем DMARC-запись
5. Inicio de Mailcow
Ahora que Docker está instalado, la configuración generada y el DNS configurado, puede iniciar Mailcow.
cd /opt/mailcow-dockerized # Убедитесь, что вы находитесь в директории Mailcow
docker compose pull # Загружаем все необходимые Docker-образы (актуальные на 2026)
docker compose up -d # Запускаем все контейнеры Mailcow в фоновом режиме
El proceso de descarga de imágenes y el inicio de los contenedores puede tardar un tiempo, dependiendo de la velocidad de su conexión a internet y del rendimiento del servidor. Después del inicio, puede verificar el estado de los contenedores:
docker compose ps # Проверяем статус запущенных контейнеров Mailcow
Todos los contenedores deben estar en estado running.
6. Permiso de puertos de Mailcow en UFW
Mailcow utiliza muchos puertos. Los permitiremos en el firewall UFW.
sudo ufw allow 80/tcp # HTTP (para el desafío ACME de Let's Encrypt)
sudo ufw allow 443/tcp # HTTPS (para la interfaz web y clientes de correo)
sudo ufw allow 25/tcp # SMTP (para enviar/recibir correo)
sudo ufw allow 465/tcp # SMTPS (SMTP sobre SSL/TLS)
sudo ufw allow 587/tcp # Submission (SMTP para clientes con StartTLS)
sudo ufw allow 110/tcp # POP3
sudo ufw allow 995/tcp # POP3S (POP3 sobre SSL/TLS)
sudo ufw allow 143/tcp # IMAP
sudo ufw allow 993/tcp # IMAPS (IMAP sobre SSL/TLS)
sudo ufw allow 4190/tcp # Sieve (filtrado de correo en el servidor)
sudo ufw status # Verificamos el estado del firewall
Ahora su servidor de correo Mailcow está en funcionamiento y accesible a través del FQDN especificado.