Siempre he querido alojar mis propios servicios, desde servidores de correo hasta servidores web, también Asterisk y muchas otras cosas, como escribí en mi blog personal también veo buenos argumentos para montar tu propio servidor de correo. Si quieres hacerlo, Mailcow es una de las mejores opciones que existen hoy en día. Funciona completamente sobre Docker y te da SMTP, IMAP, webmail, anti-spam, anti-virus y un panel de administración web limpio, todo en uno.
Requisitos
Antes de empezar, necesitas:
- Un VPS con Ubuntu 22.04 LTS o Debian 12
- Al menos 4 GB de RAM (6 GB es mejor para producción)
- Un dominio propio
- El puerto 25 abierto en tu VPS
Este último punto es crítico. Muchos proveedores de nube bloquean el puerto 25 saliente por defecto. Hetzner lo abre después de verificar la cuenta. DigitalOcean y Vultr lo bloquean pero lo desbloquean si lo solicitas. AWS y Google Cloud lo hacen muy difícil. Consulta con tu proveedor antes de perder tiempo en la configuración.
Configurar el hostname
El hostname de tu servidor debe coincidir con el nombre del servidor de correo que vas a usar. Configúralo antes que nada:
hostnamectl set-hostname mail.tudominio.com
Luego verifica que /etc/hosts tenga una línea como esta:
ip.de.tu.servidor mail.tudominio.com
DNS: qué configurar antes de la instalación
Necesitas tener un registro en DNS antes de instalar Mailcow, porque al arrancar solicitará un certificado Let's Encrypt:
- Registro A:
mail.tudominio.com→ IP de tu servidor
Agrega también el registro MX ahora:
- Registro MX:
tudominio.comMX 10 →mail.tudominio.com
SPF, DKIM y DMARC los configurarás después de la instalación. No los omitas — sin esos registros, tus correos irán directamente al spam.
Instalar Docker
Mailcow corre sobre Docker. La forma más rápida de instalarlo:
curl -fsSL https://get.docker.com | sh
Una vez instalado, asegúrate de que el servicio esté corriendo:
systemctl enable docker
systemctl start docker
Instalar Mailcow
Clona el repositorio de Mailcow y ejecuta el script de configuración:
cd /opt
git clone https://github.com/mailcow/mailcow-dockerized
cd mailcow-dockerized
./generate_config.sh
El script te preguntará dos cosas: el hostname del servidor de correo (mail.tudominio.com) y tu zona horaria. Usa el formato estándar, por ejemplo America/New_York o Europe/Berlin.
Esto crea un archivo mailcow.conf. Puedes revisarlo, pero los valores por defecto están bien para la mayoría de instalaciones.
Arrancar Mailcow
Descarga las imágenes Docker y levanta todo:
docker compose pull
docker compose up -d
La primera vez tardará unos minutos. Mailcow también gestiona los certificados SSL automáticamente mediante Let's Encrypt, por lo que el registro A ya debe apuntar al servidor.
Para verificar que todo esté corriendo:
docker compose ps
Deberías ver todos los contenedores con el estado Up.
Acceder al panel de administración
Abre el navegador y ve a https://mail.tudominio.com.
Las credenciales por defecto son:
- Usuario:
admin - Contraseña:
moohoo
Cambia la contraseña inmediatamente.
Agregar tu dominio
Ve a Configuration → Mail Setup → Domains y agrega tu dominio. Mailcow te mostrará los registros DNS que necesitas configurar.
Agregar un buzón
Ve a Configuration → Mail Setup → Mailboxes y crea tu primer buzón. Puedes crear tantos como necesites.
DNS: SPF, DKIM y DMARC
Estos tres registros son lo que separa el correo que se entrega del que va al spam.
SPF
Agrega un registro TXT para tu dominio:
v=spf1 mx -all
Esto le indica a los servidores receptores que solo tu servidor MX está autorizado para enviar correo desde tu dominio.
DKIM
Ve a Configuration → Configuration & Details → ARC/DKIM Keys. Selecciona tu dominio y genera una clave. Mailcow te mostrará el registro TXT completo para agregar al DNS. Se verá algo así:
v=DKIM1; k=rsa; t=s; s=email; p=MIIBIjANBgkqhk...
Cópialo exactamente y agrégalo como registro TXT en dkim._domainkey.tudominio.com.
DMARC
Agrega un registro TXT en _dmarc.tudominio.com:
v=DMARC1; p=none; rua=mailto:[email protected]
Empieza con p=none para monitorear lo que ocurre sin rechazar correo legítimo. Una vez que estés seguro de que todo funciona, cámbialo a p=quarantine o p=reject.
DNS Inverso (PTR)
Este no puedes configurarlo tú mismo. Debes pedirle a tu proveedor de VPS que agregue un registro PTR para que la IP de tu servidor resuelva de vuelta a mail.tudominio.com. La mayoría de los proveedores lo permiten desde el panel de control, busca "reverse DNS" en la configuración de tu servidor.
Si el registro PTR falta o es incorrecto, muchos servidores rechazarán tu correo directamente.
Probar
Una vez que el DNS haya propagado, envía un correo de prueba usando mail-tester.com. Te dará una puntuación y te dirá exactamente qué está mal configurado.
También puedes verificar tu configuración DNS con MXToolbox.
Una puntuación perfecta en mail-tester significa que SPF, DKIM y DMARC están correctamente configurados y que tu IP no tiene problemas de reputación.
Configurar tu cliente de correo
Mailcow soporta tanto IMAP como SMTP. Usa estos ajustes en tu cliente de correo:
Entrante (IMAP):
| Ajuste | Valor | |--------|-------| | Servidor | mail.tudominio.com | | Puerto | 993 | | Cifrado | SSL/TLS |
Saliente (SMTP):
| Ajuste | Valor | |--------|-------| | Servidor | mail.tudominio.com | | Puerto | 587 | | Cifrado | STARTTLS |
Mailcow también incluye el webmail Roundcube, accesible en https://mail.tudominio.com.
Actualizaciones
Mantén Mailcow actualizado. Salen versiones nuevas con frecuencia y traen parches de seguridad. Para actualizar:
cd /opt/mailcow-dockerized
./update.sh
Eso es todo. Ahora que hemos pasado por todo el proceso, quizás sea demasiado tarde para preguntarte si vale la pena el esfuerzo. Si tienes una empresa grande puede que estés mejor con una solución de Microsoft, si tienes un sitio o negocio pequeño puede que estés mejor con Migadu. Pero, como sysadmins tenemos que reconocer que la diversión de administrar tu propio servidor no tiene precio, para todo lo demás existe Mastercard ;).