Saltar al contenido
Infrastructure 2026-09-06 13 min de lectura

Cómo instalar Mailcow en un VPS

Montar tu propio servidor de correo es una de las cosas más satisfactorias y más ingratas del self-hosting. Mailcow es la forma más razonable de hacerlo: un conjunto de contenedores Docker que integra Postfix, Dovecot, Rspamd, SOGo y un panel de administración en una sola pila coherente. Esta guía instala Mailcow en un VPS, publica los registros DNS correctos y explica sin adornos cuándo no deberías hacerlo.

Cómo instalar Mailcow en un VPS
#Mailcow#correo#email#VPS#Docker#SPF#DKIM
T
Equipo Terranode
Editorial

Antes de instalar: las dos preguntas que deciden todo

Pregunta uno: ¿tu proveedor permite tráfico saliente por el puerto 25? Muchos bloquean ese puerto por defecto para contener el spam. Sin 25 saliente, Mailcow recibirá correo perfectamente y no podrá entregar nada. Compruébalo antes de instalar:

bash
nc -zv gmail-smtp-in.l.google.com 25

Si la conexión no se establece, abre un ticket con tu proveedor y confirma la política antes de seguir.

Pregunta dos: ¿puedes configurar el registro PTR (DNS inverso) de la IP? El PTR debe apuntar al nombre del servidor de correo (mail.tuempresa.com). Los grandes receptores lo comprueban, y una IP sin PTR coherente empieza la partida perdiendo. Ese registro no se configura en tu DNS: lo publica el dueño de la IP, es decir, tu proveedor de VPS.

Si alguna de las dos respuestas es "no", detente. Ningún ajuste posterior compensa un puerto 25 cerrado o un PTR imposible de configurar.

Requisitos reales de Mailcow

La documentación oficial pide 6 GiB de RAM más 1 GiB de swap, 1 GHz de CPU y 20 GiB de disco sin contar los correos almacenados. No es un requisito inflado: Mailcow levanta más de una docena de contenedores.

ComponenteFunciónConsumo relativo
PostfixEnvío y recepción SMTPBajo
DovecotIMAP/POP3 y almacenamiento de buzonesMedio
RspamdFiltrado de spam, firmas DKIMMedio-alto
ClamAVAntivirus de adjuntosAlto (~1 GB)
SOGoWebmail, calendario y contactosMedio
MySQL y RedisBase de datos y cachéMedio
NginxInterfaz web y certificadosBajo

Dos requisitos que se saltan con frecuencia y luego cuestan una reinstalación:

  • Virtualización KVM obligatoria. OpenVZ, Virtuozzo y LXC no están soportados. La comparativa entre KVM, OpenVZ y LXC explica por qué la diferencia importa aquí.
  • Un VPS dedicado al correo. Mailcow toma los puertos 80 y 443 para su propio Nginx. Convivir con otra aplicación web es posible con configuración avanzada, pero multiplica los puntos de fallo en el servicio que menos tolerancia tiene.

Si vas muy justo de memoria, se pueden desactivar ClamAV y el motor de búsqueda de texto completo en mailcow.conf. Baja el consumo, pero pierdes análisis de adjuntos.

Puertos que hay que abrir

Mailcow necesita nueve puertos de entrada y salida sin filtrar por el puerto 25.

PuertoProtocoloServicio
25TCPSMTP entre servidores (entrada y salida)
465TCPSMTPS (envío desde clientes, TLS implícito)
587TCPSubmission (envío desde clientes, STARTTLS)
143 / 993TCPIMAP / IMAPS
110 / 995TCPPOP3 / POP3S
4190TCPSieve (filtros de buzón)
80 / 443TCPPanel web, webmail y certificados ACME

Verifica que ningún otro servicio los ocupa antes de instalar:

bash
ss -tlpn | grep -E -w '25|80|110|143|443|465|587|993|995|4190'

Si Apache, Nginx o un panel de control ya escuchan en 80 y 443, deténlos y desactívalos, o Mailcow no podrá arrancar su proxy.

Preparar el VPS

Usa Debian 12/13 o Ubuntu 22.04 o superior, con la hora sincronizada y Docker desde el repositorio oficial. El reloj importa: un servidor de correo con la hora desviada genera cabeceras Date incorrectas y problemas de validación TLS.

bash
sudo apt update && sudo apt upgrade -y
sudo apt install -y git openssl curl gawk coreutils grep jq
timedatectl status
curl -fsSL https://get.docker.com | sudo sh
sudo apt install -y docker-compose-plugin
docker compose version

Mailcow exige Docker Compose v2 o superior. No uses la versión de Docker que empaqueta tu distribución si es antigua; la guía de Docker en VPS detalla la instalación limpia desde el repositorio oficial.

Configura también el nombre del host coherente con el correo:

bash
sudo hostnamectl set-hostname mail.tuempresa.com

Publicar el DNS antes de instalar

Los registros DNS deben existir y propagarse antes del primer arranque, porque Mailcow pedirá certificados durante la instalación. Este es el conjunto mínimo:

TipoNombreValor
Amail.tuempresa.comIP del VPS
MXtuempresa.commail.tuempresa.com (prioridad 10)
TXT (SPF)tuempresa.comv=spf1 mx -all
TXT (DMARC)_dmarc.tuempresa.comv=DMARC1; p=quarantine; rua=mailto:[email protected]
PTR(IP del VPS)mail.tuempresa.com — lo configura el proveedor
CNAMEautodiscover / autoconfigmail.tuempresa.com

El registro DKIM se publica después de instalar, porque la clave la genera Mailcow. Comprueba lo que ya tienes:

bash
dig +short mail.tuempresa.com A
dig +short tuempresa.com MX
dig +short tuempresa.com TXT
dig +short -x IP_DEL_VPS

Esa última consulta devuelve el PTR. Si no muestra tu nombre de correo, pide el cambio al proveedor antes de continuar. La guía sobre por qué el correo cae en spam con SPF, DKIM y DMARC explica qué hace cada registro con más detalle.

Instalar Mailcow

La instalación son cinco comandos: clonar el repositorio en /opt, generar la configuración y levantar los contenedores. El umask 0022 no es decorativo; los permisos incorrectos rompen varios contenedores.

bash
sudo su
umask 0022
cd /opt
git clone https://github.com/mailcow/mailcow-dockerized
cd mailcow-dockerized
./generate_config.sh

El script pide el MAILCOW_HOSTNAME (aquí mail.tuempresa.com, nunca el dominio a secas) y la zona horaria. También comprueba la memoria disponible y ajusta qué servicios habilita.

Revisa la configuración generada antes de arrancar:

bash
nano mailcow.conf

Valores que conviene mirar en esta pasada:

  • MAILCOW_HOSTNAME: debe coincidir con el registro A y el PTR.
  • SKIP_CLAMD=y: actívalo solo si vas justo de RAM.
  • SKIP_SOGO=y: si no vas a usar el webmail con calendario, libera memoria.
  • HTTP_PORT / HTTPS_PORT: cámbialos solo si vas a poner otro proxy delante, con conocimiento de causa.

Levanta la pila:

bash
docker compose pull
docker compose up -d
docker compose ps

La primera descarga tarda: son muchas imágenes. Cuando termine, abre https://mail.tuempresa.com. El acceso inicial es usuario admin con contraseña moohoo. Cámbiala en el primer minuto y activa el segundo factor; ese panel controla todos los buzones del dominio.

Generar DKIM y validar la entrega

Sin DKIM publicado, buena parte de tu correo saliente irá a spam por muy correcto que sea el resto. En el panel: Configuración → Opciones de configuración → Claves DKIM, elige el dominio, un tamaño de clave de 2048 bits y genera.

Mailcow te muestra el registro TXT completo. Publícalo en tu DNS con el selector que indique (por defecto dkim) y comprueba:

bash
dig +short dkim._domainkey.tuempresa.com TXT

Después añade el primer dominio y buzón desde Correo → Configuración → Dominios, y envía una prueba real. La forma más práctica de validar los tres registros a la vez es enviar un correo a una cuenta de Gmail, abrirla, ir a "Mostrar original" y confirmar que SPF, DKIM y DMARC aparecen como PASS. Ese informe también muestra el resultado de la validación desde el receptor, que es la opinión que cuenta.

Backups y actualizaciones

Mailcow incluye un script propio de backup y restauración que cubre buzones, base de datos, Rspamd y certificados.

bash
cd /opt/mailcow-dockerized
MAILCOW_BACKUP_LOCATION=/backup/mailcow ./helper-scripts/backup_and_restore.sh backup all --delete-days 7

Ese comando guarda una copia completa y elimina las anteriores a siete días. Programa el script con cron y envía la carpeta fuera del VPS: los buzones de correo son de los datos más difíciles de reconstruir. Consulta la guía de backups en VPS para la parte de destino remoto y cifrado.

Para actualizar:

bash
cd /opt/mailcow-dockerized
./update.sh

El script trae los cambios del repositorio, actualiza las imágenes y reinicia lo necesario. Haz backup antes, lee las notas de la versión y no actualices un viernes por la tarde: si algo falla, la empresa se queda sin correo.

Cuándo Google Workspace o Microsoft 365 son la mejor decisión

Autoalojar correo tiene sentido cuando alguien va a mantenerlo; en cualquier otro caso, un servicio gestionado entrega mejor. Esta es la comparación honesta:

AspectoMailcow autoalojadoGoogle Workspace / Microsoft 365
CosteFijo (un VPS), sin límite de buzonesPor buzón y mes
Control de los datosTotalDel proveedor
Reputación de envíoLa construyes tú desde ceroHeredada, sólida
DisponibilidadLa de tu VPSCon SLA y redundancia
MantenimientoActualizaciones, certificados, filtros, backupsIncluido
Recuperación ante desastreTu backup, tu tiempoDel proveedor
Filtrado de spamRspamd, requiere ajusteMuy maduro

Si gestionas cinco buzones de una empresa que factura por correo, el ahorro no compensa el riesgo. Si administras decenas de cuentas, alias y dominios de proyectos propios, Mailcow sale muy rentable. El punto de equilibrio no es el precio: es quién responde cuando el correo deja de entrar un lunes por la mañana. En correo corporativo frente a Gmail gratuito desarrollamos ese cálculo.

Problemas frecuentes al instalar Mailcow

SíntomaCausa habitualQué revisar
El correo sale pero no llegaPuerto 25 saliente bloqueadonc -zv ... 25, política del proveedor
Todo cae en spamPTR incorrecto o DKIM sin publicardig -x IP, registro TXT del selector
Los contenedores no arrancanPuertos 80/443 ocupados o poca RAMss -tlpn, free -h, docker compose logs
Certificado no se emiteDNS sin propagar o puerto 80 cerradoRegistro A y firewall del proveedor
El panel va lentoClamAV y SOGo con poca memoriadocker stats, ajustes en mailcow.conf
Los clientes no configuran solosFaltan autodiscover/autoconfigRegistros CNAME del dominio
Rebotes por límite de tasaIP nueva sin historialEnviar volumen creciente durante semanas

Instalar Mailcow es la parte fácil: clonar el repositorio, ejecutar generate_config.sh y levantar los contenedores. La parte difícil es todo lo que rodea al servidor: un puerto 25 abierto, un PTR coherente, SPF, DKIM y DMARC publicados y validados, backups probados y paciencia para construir reputación de IP. Si esas cinco piezas están, tendrás un servidor de correo propio con control total y sin coste por buzón.

Terranode ofrece VPS KVM con NVMe compatibles con Mailcow (KVM real, no contenedores) y soporte en español desde Ecuador. Para cumplir el requisito de 6 GiB de RAM, el plan de 8 GB con 4 vCPU cuesta $18,50 al mes; si prefieres correo administrado sin mantener servidores, Terranode también revende Microsoft 365 como partner.

¿Listo para llevar tu sitio al siguiente nivel?

Hosting con LiteSpeed, NVMe y soporte 24/7 desde $3/mes.

Ver planes de hosting

Preguntas frecuentes