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:
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.
| Componente | Función | Consumo relativo |
|---|---|---|
| Postfix | Envío y recepción SMTP | Bajo |
| Dovecot | IMAP/POP3 y almacenamiento de buzones | Medio |
| Rspamd | Filtrado de spam, firmas DKIM | Medio-alto |
| ClamAV | Antivirus de adjuntos | Alto (~1 GB) |
| SOGo | Webmail, calendario y contactos | Medio |
| MySQL y Redis | Base de datos y caché | Medio |
| Nginx | Interfaz web y certificados | Bajo |
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.
| Puerto | Protocolo | Servicio |
|---|---|---|
| 25 | TCP | SMTP entre servidores (entrada y salida) |
| 465 | TCP | SMTPS (envío desde clientes, TLS implícito) |
| 587 | TCP | Submission (envío desde clientes, STARTTLS) |
| 143 / 993 | TCP | IMAP / IMAPS |
| 110 / 995 | TCP | POP3 / POP3S |
| 4190 | TCP | Sieve (filtros de buzón) |
| 80 / 443 | TCP | Panel web, webmail y certificados ACME |
Verifica que ningún otro servicio los ocupa antes de instalar:
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.
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:
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:
| Tipo | Nombre | Valor |
|---|---|---|
| A | mail.tuempresa.com | IP del VPS |
| MX | tuempresa.com | mail.tuempresa.com (prioridad 10) |
| TXT (SPF) | tuempresa.com | v=spf1 mx -all |
| TXT (DMARC) | _dmarc.tuempresa.com | v=DMARC1; p=quarantine; rua=mailto:[email protected] |
| PTR | (IP del VPS) | mail.tuempresa.com — lo configura el proveedor |
| CNAME | autodiscover / autoconfig | mail.tuempresa.com |
El registro DKIM se publica después de instalar, porque la clave la genera Mailcow. Comprueba lo que ya tienes:
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.
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:
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:
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:
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.
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:
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:
| Aspecto | Mailcow autoalojado | Google Workspace / Microsoft 365 |
|---|---|---|
| Coste | Fijo (un VPS), sin límite de buzones | Por buzón y mes |
| Control de los datos | Total | Del proveedor |
| Reputación de envío | La construyes tú desde cero | Heredada, sólida |
| Disponibilidad | La de tu VPS | Con SLA y redundancia |
| Mantenimiento | Actualizaciones, certificados, filtros, backups | Incluido |
| Recuperación ante desastre | Tu backup, tu tiempo | Del proveedor |
| Filtrado de spam | Rspamd, requiere ajuste | Muy 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íntoma | Causa habitual | Qué revisar |
|---|---|---|
| El correo sale pero no llega | Puerto 25 saliente bloqueado | nc -zv ... 25, política del proveedor |
| Todo cae en spam | PTR incorrecto o DKIM sin publicar | dig -x IP, registro TXT del selector |
| Los contenedores no arrancan | Puertos 80/443 ocupados o poca RAM | ss -tlpn, free -h, docker compose logs |
| Certificado no se emite | DNS sin propagar o puerto 80 cerrado | Registro A y firewall del proveedor |
| El panel va lento | ClamAV y SOGo con poca memoria | docker stats, ajustes en mailcow.conf |
| Los clientes no configuran solos | Faltan autodiscover/autoconfig | Registros CNAME del dominio |
| Rebotes por límite de tasa | IP nueva sin historial | Enviar 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.
Hosting con LiteSpeed, NVMe y soporte 24/7 desde $3/mes.