Volver al inicio

Mailu en Kubernetes: configuración de un servidor de correo para desarrolladores

El artículo describe el proceso de desplegar el servidor de correo Mailu en un clúster de Kubernetes usando Helm. Cubre la preparación de registros DNS, configuración de políticas de red, resolución de problemas TLS y configuración de DKIM, DMARC, SPF para garantizar la entrega de correos.

Cómo desplegar Mailu en Kubernetes: guía completa
Advertisement 728x90

Desplegar Mailu en Kubernetes: Guía paso a paso

Mailu es un servidor de correo contenedorizado optimizado para entornos Docker y Kubernetes. A diferencia de las configuraciones tradicionales de Postfix y Dovecot que requieren ajustes pesados, Mailu se despliega con un esfuerzo mínimo, ideal para laboratorios caseros y entornos de pruebas. Esta guía te lleva de la mano para instalar Mailu en un clúster de Kubernetes con Helm, configurar políticas de red, registros DNS y medidas de seguridad.

Preparar la infraestructura y DNS

Antes de instalar Mailu, completa estos pasos esenciales de infraestructura. Primero, necesitas un dominio con capacidades de gestión DNS; en este ejemplo, usaremos tudominio.com. Segundo, asegura una IP pública estática (p. ej., 1.2.3.4) con un registro inverso (PTR) configurado por tu proveedor de internet. Sin un registro PTR, los principales proveedores de correo marcarán tus emails como spam.

Registros DNS clave a crear:

Google AdInline article slot
  • Registro A: mail.tudominio.com → 1.2.3.4
  • Registro MX: @ → mail.tudominio.com

Tras la configuración, verifica con nslookup 1.2.3.4 — debe resolver a mail.tudominio.com, confirmando que tu registro PTR está correcto.

Configurar Kubernetes y desplegar Mailu

Por seguridad, aísla el servidor de correo en su propio namespace para minimizar riesgos — aquí usaremos dmz-mailu. Aplica una política de red de inmediato para bloquear todo el tráfico entrante y saliente por defecto, permitiendo solo los puertos esenciales.

Ejemplo de política de red (network-policy-dmz-mail.yaml):

Google AdInline article slot
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default-dmz-mail-deny
  namespace: dmz-mail
spec:
  podSelector: {}
  policyTypes:
  - Ingress
  - Egress
---
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-mailu-ports
  namespace: dmz-mail
spec:
  podSelector: {}
  egress:
    - to:
      - namespaceSelector:
          matchLabels:
            kubernetes.io/metadata.name: kube-system
      ports:
      - protocol: UDP
        port: 53
      - protocol: TCP
        port: 25
      - protocol: TCP
        port: 465

A continuación, añade el repositorio Helm de Mailu y crea un archivo values.yaml. Configuraciones clave: tu dominio, zona horaria, cuenta admin inicial, opciones de almacenamiento e interfaces de red. Ajusta la StorageClass a la de tu clúster.

Parámetros principales de values.yaml:

  • hostnames: ["mail.tudominio.com"]
  • domain: tudominio.com
  • initialAccount para la configuración admin
  • Configs de PostgreSQL o MariaDB
  • Ajustes de persistencia (p. ej., size: 50Gi)
  • Configuración de Ingress con anotaciones de cert-manager
  • Frontend como tipo LoadBalancer

Instala el chart con:

Google AdInline article slot
helm install mailu mailu/mailu -n dmz-mailu --values mailu_values.yaml

Solucionar problemas TLS y configuración avanzada

Mailu puede tener errores SSL con Ingress debido a peculiaridades en el manejo de TLS. Una solución es un Service LoadBalancer dedicado para el frontend, moviendo la interfaz web a su propia IP y evitando conflictos de TLS en Ingress.

Ejemplo de manifiesto (svc-mailu-front-web.yaml):

apiVersion: v1
kind: Service
metadata:
  name: svc-mailu-front-web
  namespace: dmz-mail
spec:
  externalTrafficPolicy: Local
  ports:
  - port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app.kubernetes.io/component: front
    app.kubernetes.io/instance: mailu
    app.kubernetes.io/name: mailu
  type: LoadBalancer
  loadBalancerIP: 192.168.10.201

Aplícalo y apunta mail-local.tudominio.com a esa IP en tu DNS local o archivo hosts. También redirige el puerto 25 desde tu gateway a la loadBalancerIP de values.yaml para el correo entrante.

Configurar DKIM, DMARC y SPF

Para asegurar la entrega en servicios como Gmail u Outlook, configura DKIM, DMARC y SPF. Estos protocolos de autenticación verifican la legitimidad del remitente y mantienen los emails fuera de las carpetas de spam.

Pasos de configuración:

  • En la interfaz web admin de Mailu, ve a AdministraciónDominios de correo → selecciona tu dominio → Editar.
  • Haz clic en Generar claves en la esquina superior derecha.
  • Copia los registros TXT para DKIM, DMARC y SPF en el DNS de tu dominio.
  • Espera la propagación (hasta 48 horas).

Valida con herramientas como mxtoolbox.com. Prueba enviando a direcciones externas — los primeros emails podrían ir a spam, así que revisa las carpetas de correo no deseado.

Optimización de rendimiento y seguridad

Mailu incluye componentes opcionales que puedes desactivar para ahorrar recursos o simplificar la instalación. ClamAV (antivirus), OleTools (escáner de archivos Office) y Tika (gestor de metadatos) no son esenciales para las funciones básicas de correo — configúralos como false en values.yaml.

Recomendado para uso doméstico:

  • clamav: false
  • oletools: false
  • tika: false

Mantén Rspamd (filtro antispam) activado — maneja eficazmente el correo entrante y saliente.

Lecciones clave

  • Un registro PTR en tu IP estática es crucial para una entrega fiable.
  • Namespace dedicado y políticas de red mejoran la seguridad del despliegue.
  • Usa un Service LoadBalancer separado para resolver problemas de TLS en Ingress.
  • DKIM, DMARC y SPF son imprescindibles para envíos externos.
  • Desactiva componentes no esenciales como ClamAV para reducir el uso de recursos.

— Editorial Team

Advertisement 728x90

Leer después