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.com MX 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 ;).