En esta página
4 min de lectura

Día 11 - KM0 Mail en producción

Correo @km0digital.com con Postfix, Dovecot, Rspamd y Roundcube en mail.km0digital.com; DNS MX/SPF/DKIM/DMARC, relay OpenCloud y planes de fase 1b.

Introducción

El día 9 cerró precios, legal, registro OpenCloud y conversión. No publicamos entrada del día 10 (despliegue interno de correo sin artículo). El 14 de junio de 2026 activamos KM0 Mail: buzones @km0digital.com, webmail en mail.km0digital.com y relay SMTP para notificaciones de OpenCloud.

KM0 deja de depender de Gmail o APIs externas para el correo operativo del dominio y abre la puerta a verificación de registro, avisos de ideas y marketing sobre la misma infraestructura.

Resumen

Hitos del día

  • Stack: repo AMVARA-CONSULTING/km0-mail con Postfix, Dovecot, Rspamd, Roundcube y PostgreSQL (Docker Compose).
  • Hostname: mail.km0digital.com en el mismo VPS que OpenCloud (116.202.10.106).
  • Webmail: Nginx + Let's Encrypt hacia Roundcube en loopback :8080.
  • Operación: buzones postmaster@ y noreply@; CLI ./scripts/km0-mail-admin.
  • Seguridad: Rspamd + firma DKIM; fail2ban jail km0-mail; UFW 25, 587, 993.
  • OpenCloud: relay local Postfix (host.docker.internal:587, sin auth) con remitente noreply@km0digital.com.

KM0 Mail

Arquitectura y flujo

Internet (MX @ → mail.km0digital.com)
        ↓
  Postfix (:25 / :587 submission)
        ↓
  Rspamd (anti-spam, DKIM signing)
        ↓
  Dovecot (:993 IMAPS) → Maildir
        ↓
  Roundcube (webmail, loopback :8080 → Nginx TLS)
  • Recepción: Postfix acepta correo entrante para @km0digital.com y lo entrega en Maildir vía Dovecot LMTP.
  • Envío: clientes autenticados (587) y relay interno desde OpenCloud sin credenciales en la red Docker.
  • Webmail: Roundcube consulta Dovecot; acceso público solo por HTTPS en el subdominio mail.
  • Admin: km0-mail-admin create-mailbox, alias, set-password documentados en el runbook de km0-mail.
  • Issue de referencia: km0-mail #1 (Redmine #7605).

DNS

Entregabilidad

Sin registros correctos el correo llega a spam o rebota. La checklist completa está en docs/joker-dns-checklist.md del repo km0-mail.

  • MX: @mail.km0digital.com.
  • SPF: registro TXT autorizando el servidor de envío KM0.
  • DKIM: selector mail._domainkey con clave pública en DNS.
  • DMARC: política p=none con informes a postmaster@km0digital.com.
  • PTR: Hetzner apunta a mail.km0digital.com (coherente con HELO/EHLO).

OpenCloud

Integración fase 1 (parcial)

OpenCloud (notificaciones)
        ↓
  host.docker.internal:587 (Postfix relay, sin auth)
        ↓
  Postfix → Rspamd → salida Internet
  Remitente: noreply@km0digital.com
  • km0-opencloud: variables SMTP_* en .env y extra_hosts en compose para alcanzar Postfix del host.
  • Alcance: notificaciones del cloud ya salen por KM0 Mail; registro con verificación por email sigue pendiente (fase 1b).
  • LDAP: sin unificación en fase 1; columna mail_accounts.opencloud_uuid reservada para futuro.

Producto

Decisiones del día

  • Precio: correo incluido de facto en la oferta KM0; decisión ejecutiva de tarifa después.
  • Escala: objetivo >1000 buzones antes de fin de año.
  • Legal: páginas /legal/ y /security/ aún no cubren mail.km0digital.com (issue separado).
  • Servicios: tarjeta Email en la home sigue deshabilitada hasta fase 1b (issue separado).

Roadmap

Pendiente fase 1b

Lo siguiente está planificado pero no implementado aún en esta entrega:

  1. register-api: verificación de email vía Postfix local (sustituir Gmail/externo).
  2. km0-web scripts/notify-idea-email.sh: relay local (hoy AutoMail API).
  3. Marketing / tmp: SMTP local para campañas y entornos temporales.
  4. Legal y seguridad en km0-web: cubrir mail.km0digital.com.
  5. Bloque Email en servicios: habilitar tarjeta activa en la landing.
  6. Backup: cron maildir documentado en runbook.
  7. Fase 2: ClamAV, unificación LDAP, provisioning automatizado.

Verificación

Comprobar el día 11

  1. Webmail: abrir mail.km0digital.com y comprobar certificado TLS.
  2. MX: dig +short MX km0digital.com debe resolver a mail.km0digital.com.
  3. SPF: dig +short TXT km0digital.com incluye registro SPF.
  4. DKIM: dig +short TXT mail._domainkey.km0digital.com devuelve clave pública.
  5. DMARC: dig +short TXT _dmarc.km0digital.com muestra política y informes.
  6. PTR: dig +short -x 116.202.10.106 coincide con el hostname del servidor mail.
  7. Checklist: seguir joker-dns-checklist.md punto por punto.
  8. OpenCloud: disparar notificación de prueba y verificar remitente noreply@km0digital.com.

Serie

Siguiente entrada

El día 12 recoge la charla con cliente sobre UX; el día 13 el meet 6: visibilidad, asociaciones (AMPAs, vecinos) y próximos pasos comerciales. Mientras tanto, prueba el webmail o consulta precios. Dudas: contacto.