From 7242dd78e776b5c7b36170a29430db41511b9e01 Mon Sep 17 00:00:00 2001 From: Fernando Rivas Date: Wed, 19 Aug 2026 14:25:06 -0600 Subject: [PATCH] manuales(RUN-20260819-E3A1C3): Administrar el servidor de correo (docker-mailserver) --- ...el-servidor-de-correo-docker-mailserver.md | 73 +++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 content/manuales/2026-08-19-run-20260819-e3a1c3-administrar-el-servidor-de-correo-docker-mailserver.md diff --git a/content/manuales/2026-08-19-run-20260819-e3a1c3-administrar-el-servidor-de-correo-docker-mailserver.md b/content/manuales/2026-08-19-run-20260819-e3a1c3-administrar-el-servidor-de-correo-docker-mailserver.md new file mode 100644 index 0000000..d96b372 --- /dev/null +++ b/content/manuales/2026-08-19-run-20260819-e3a1c3-administrar-el-servidor-de-correo-docker-mailserver.md @@ -0,0 +1,73 @@ ++++ +title = "Administrar el servidor de correo (docker-mailserver)" +description = "Dónde vive el servicio, cómo administrar cuentas y cómo enviar correo de prueba desde terminal." +date = 2026-08-19T20:25:06Z +authors = ["gen"] +slug = "run-20260819-e3a1c3-administrar-el-servidor-de-correo-docker-mailserver" +template = "page.html" +weight = 25 + +[taxonomies] +categories = ["manuales"] +tags = ["correo", "docker-mailserver", "swaks"] +systems = ["mail-server"] + +[extra] +id = "RUN-20260819-E3A1C3" +kind = "manuales" +author_id = "gen" +author_fingerprint = "SHA256:JhN1Tt4jYqWoJIznDJ6QkMAiOR6HFHr3xLz9aBJqmPg" ++++ + +## Prerrequisitos + +- Acceso SSH a `mcps-vpn-server` (el host que corre el contenedor real de correo). +- Permisos `sudo` para ejecutar comandos dentro del contenedor `mailserver`. + +## Dónde vive + +- Contenedor `ghcr.io/docker-mailserver/docker-mailserver`, gestionado por `container-mailserver.service` (systemd + podman) en **`mcps-vpn-server`** (no en `mcps-hpc-01`). +- Config y datos en `/mnt/containers-ebs/mailserver/dms/`: `config/` (postfix-accounts.cf, postfix-main.cf, opendkim, etc.), `mail-data/` (Maildir reales, por ejemplo `mail-data/mcps-epcm.org//`), `mail-logs/` (`mail.log` + 4 rotaciones, ~1 mes de retención). +- Expuesto en `mail.mcps-epcm.org`, que resuelve directo a la IP pública del host. + +## Procedimiento: administrar cuentas + +```bash +sudo podman exec mailserver setup email list # listar cuentas + tamaño +sudo podman exec mailserver setup email update [] # cambiar password +sudo podman exec mailserver setup email del # dar de baja (borra Maildir) +sudo podman exec mailserver setup email restrict add|del send|receive # deshabilitar sin borrar (reversible) +sudo podman exec mailserver setup email restrict list send|receive # ver quién está restringido +``` + +`restrict` es la forma de "bajar" una cuenta sin perder el Maildir ni tener que volver a crearla después — útil cuando no se quiere un borrado definitivo todavía (por ejemplo, en un offboarding en curso). + +## Procedimiento: mandar correo de prueba desde terminal + +Con `swaks` (instalado vía EPEL en `mcps-vpn-server`): + +```bash +swaks --to dest@ejemplo.com --from soporte@mcps-epcm.org \ + --server mail.mcps-epcm.org:587 --helo mcps-epcm.org \ + --auth LOGIN --auth-user soporte@mcps-epcm.org --auth-password '' \ + --tls --header 'Subject: asunto' --body 'texto' +``` + +Config reusable en `~/.swaks/.conf` (uno por cuenta, `chmod 600`, `swaks --config ~/.swaks/soporte.conf ...`). Swaks solo lee **un** archivo de config por invocación — no hay perfiles múltiples en un solo archivo. + +## Configuración de cliente (IMAP/SMTP manual) + +- IMAP: `mail.mcps-epcm.org:993`, SSL/TLS +- SMTP: `mail.mcps-epcm.org:587`, STARTTLS, con autenticación + +## Verificación + +- `sudo podman exec mailserver setup email list` muestra la cuenta esperada con un tamaño de buzón razonable. +- Un `swaks` de prueba hacia una cuenta propia entrega sin rechazo. +- `sudo podman exec mailserver setup email restrict list send|receive` no muestra cuentas restringidas que deberían estar activas. + +## Solución de problemas + +- **`swaks` falla con autenticación**: confirme que la contraseña usada es la vigente (`setup email update` la rota); una rotación reciente invalida clientes ya configurados con la contraseña anterior. +- **Algo sugiere que el contenedor vive en `mcps-hpc-01`**: es incorrecto desde antes del 2026-06-24; el contenedor real está en `mcps-vpn-server`. Puede seguir existiendo un contenedor viejo detenido (`Exited`) en `mcps-hpc-01` — no reactivarlo pensando que es el servicio real. +- **Una cuenta no manda ni recibe**: revise si está en la lista de restringidas (`setup email restrict list send|receive`) antes de asumir que es un problema del servidor.