Si mantienes mailcow para un colegio, un club, una comunidad o un puñado de clientes pequeños, ya conoces el cuello de botella: mailcow-dockerized no tiene página de registro, así que cada buzón y cada dominio pasan por un administrador. Eso va bien para cinco cuentas; resulta penoso para cincuenta. Sign-up for mailcow añade una página pública, /mlw-signup/, a tu propio mailcow, para que los visitantes puedan crear su cuenta ellos mismos, dentro de los límites que fijes, y solo después de confirmar su dirección de correo. Este tutorial recorre la configuración para el caso del proveedor, el colegio o la comunidad: qué recibe el visitante, cómo se gestionan los nombres y las cuotas, cómo encajan la confirmación, la aprobación y los códigos de invitación, y cómo mantener el abuso fuera.
Qué obtienes y qué sigue en tus manos
El plugin se distribuye en el paquete mailcow Toolkit (0.4.0 o posterior) y tiene su propia licencia. Añade una página pública de registro en los hosts de la interfaz de mailcow y del webmail; mientras el registro está abierto, la página de inicio de sesión de mailcow muestra un enlace Create an account. Tú decides qué puede obtener un visitante: un buzón en uno de los dominios que abras al registro, una cuenta de administrador de dominio para los dominios propios del visitante, o ambas cosas. Las cuentas se crean con las funciones propias de mailcow, usando tus plantillas y límites, exactamente como si las hubiera añadido un administrador.
La promesa clave para quien gestiona un servidor compartido: no se crea nada en mailcow antes de que la dirección esté confirmada (y aprobada, o pagada con Cashier for mailcow). Los registros sin confirmar simplemente caducan.
Requisitos previos
- El paquete mailcow Toolkit 0.4.0 o posterior instalado en mailcow-dockerized (Linux,
docker compose, systemd), con acceso root en el host para ejecutarinstall.sh. Sign-up forma parte del paquete; no hay nada más que descargar. - HTTPS saliente hacia medialab.works desde el servidor (comprobación de licencia) y un mailcow que envíe correo (mensajes de confirmación, aprobación y bienvenida).
- Al menos un dominio de mailcow que abrir al registro, si los visitantes deben obtener buzones.
- Para dominios propios: el cliente debe poder añadir un registro TXT en su proveedor de DNS.
- Para planes de pago: Cashier for mailcow, con su propia licencia. Para cuentas gratuitas no lo necesitas.
Paso 1 — Instalar o actualizar el Toolkit
El install.sh del paquete (0.4.0 o posterior) instala Sign-up junto al Toolkit: los archivos web en data/web/mlw-signup de mailcow, la carpeta de ajustes, las tablas mlw_su_* en la base de datos de mailcow y el temporizador mlw-mailcow-accounts-<name>.timer, que ejecuta las tareas de Sign-up y Cashier cada 5 minutos. Un Toolkit ya instalado recibe todo esto al actualizarlo a 0.4.0 desde System > Updates (Toolkit) o al ejecutar el nuevo install.sh. Sign-up permanece desactivado hasta que tenga licencia y abras el registro.
Sign-up se actualiza junto con el Toolkit: un paquete, una actualización. La actualización puede iniciarse desde la tarjeta License de cualquier producto con una licencia válida.
Paso 2 — Activar la licencia
Abre System > Updates (Toolkit) (solo administradores). A partir de 0.4.0 la página muestra una tarjeta License por producto; usa la tarjeta License · Sign-up for mailcow. Introduce tu clave de licencia y pulsa Activate, o inicia la prueba gratuita de 30 días con tu dirección de correo. Con una clave de bundle de mailcow, introduce la misma clave en la tarjeta License de cada producto. En la shell también puedes ejecutar, desde la carpeta de mailcow:
docker compose exec -u www-data php-fpm-mailcow php /web/mlw-toolkit/cli.php activate mailcow-signup <KEY>
La licencia se comprueba al arrancar el servidor y una vez al día; sin internet, Sign-up sigue funcionando 7 días después de la última comprobación correcta. Sin una licencia válida, el registro se cierra y las tareas en segundo plano de Sign-up se detienen; las cuentas, los buzones y los dominios existentes nunca se tocan.
Paso 3 — Elegir qué reciben los visitantes
Abre System > Sign-up. La tarjeta Registration contiene las decisiones principales; guarda el formulario con el botón del final.
- Registrations open activa la página pública y muestra el enlace Create an account en la página de inicio de sesión de mailcow (interfaz y host del webmail).
- Un buzón en uno de tus dominios: márcalo y elige los Domains open for registration. Define Min. characters y Max. characters para el nombre antes de la
@, la Free quota (MB), More reserved names (los nombres de rol como postmaster, abuse, admin, support y noreply siempre están reservados) y la mailcow mailbox template (vacía = la predeterminada de mailcow). Para un colegio o un club suele ser toda la configuración: abre un dominio, reserva los nombres de rol y fija una cuota razonable. - Un administrador de dominio para los dominios propios del cliente: el cliente añade dominios tras una comprobación DNS (TXT), dentro de los límites del paquete. El Free package fija Domains, Mailboxes/domain, Aliases/domain, Quota/domain (MB) y Default quota/mailbox (MB); la mailcow domain template se usa para los nuevos dominios de cliente. Con la opción sobre el new domain wizard, el asistente del Toolkit crea las direcciones de rol de un dominio de cliente al correo del cliente.
- Free registration (next to Cashier's paid plans): déjalo marcado para cuentas gratuitas; desmárcalo cuando toda cuenta deba comprar un plan.
Paso 4 — Confirmación, aprobación e invitaciones
En la tarjeta Confirmation, approval, invitations:
- Address confirmation: código de 6 dígitos, enlace, código y enlace, o ninguno (no recomendado). Expires (hours) va de 1 a 168. Un visitante puede pedir un nuevo correo tras un minuto, como máximo 5 veces al día, y tiene 5 intentos por código.
- Administrator approval: los registros gratuitos esperan a un administrador; configura E-mail for registrations to approve para que te avisen de cada uno. Los registros de pago nunca quedan pendientes de aprobación. Para un colegio es la forma discreta de mantener limpia la lista de miembros.
- Invitation code: desactivado, opcional u obligatorio.
- Terms link (asks for acceptance): un enlace a tus términos; el visitante debe aceptarlos.
- Form fields: nombre, empresa, teléfono y país — desactivado, opcional u obligatorio.
Aprobar registros
La tarjeta Registrations lista los que están Waiting for approval. Approve crea la cuenta y envía el correo de bienvenida; Reject (con un Reason opcional) envía al visitante un correo con la decisión. Recent muestra los últimos registros y su estado.
Códigos de invitación
En Invitation codes rellena Code (empty = random), Uses (0 = unlimited), Expires, el Account kind (buzón, dominio o cualquiera) y, con Cashier, el Plan que abre el código (incluido uno oculto), marca No approval si el código debe saltarse la aprobación, añade una Note y pulsa Create the code. La lista muestra cuántas veces se usó cada código; Disable y Enable lo desactivan y lo activan. Para una comunidad, un único código multiuso con caducidad y sin aprobación suele ser el equilibrio adecuado: los miembros entran sin esperar, los desconocidos no.
Paso 5 — Configurar el antiabuso
En la tarjeta Anti-abuse:
- Minimum time to fill in (s): un formulario enviado más rápido se rechaza. Un campo oculto detecta por sí solo los bots más simples.
- Registrations / IP / day (0 = no limit).
- Block disposable addresses: la lista integrada más la lista de MediaLab Works, que llega con la comprobación de licencia mientras la licencia es válida.
- Only these e-mail domains (empty = any) y Blocked e-mail domains, separados por espacios, comas o saltos de línea. Un dominio también cubre sus subdominios;
*.example.comsignifica solo los subdominios. Para un colegio, restringir a tu propio dominio (y quizá al de un socio) es un filtro potente y sencillo. - La contraseña debe seguir la política de contraseñas propia de mailcow, la configurada en la interfaz de administración de mailcow.
Paso 6 — Correo de bienvenida e inicio de sesión
En la tarjeta New accounts: Own text in the welcome e-mail (inglés y rumano), el Sender name of the e-mails (vacío = el nombre del host de correo) y Sign in the browser that registered (activado por defecto). Un buzón gratuito se crea en cuanto se confirma la dirección (y se aprueba). Un administrador de dominio se crea con el primer dominio verificado: hasta entonces, el cliente tiene una página, My account, donde el siguiente paso es añadir el dominio.
Paso 7 — Los dominios propios del cliente
El cliente abre My account (/mlw-signup/account.php, también en el menú de mailcow cuando ha iniciado sesión) y añade un dominio. La página muestra un registro TXT que publicar en el proveedor de DNS del cliente:
_mlw-verify.example.com. TXT "mlw-verify=<token>"
Verify lo comprueba al momento; Sign-up también comprueba cada 10 minutos durante 7 días. Cuando se encuentra el registro, el dominio se añade a mailcow con los límites del paquete (dominios, buzones, alias, cuota), y la página muestra los registros DNS que necesita el dominio (MX, SPF, DKIM, DMARC y los recomendados), calculados por el módulo DNS del Toolkit. El asistente de nuevos dominios del Toolkit puede enviar las direcciones de rol de un dominio de cliente al cliente, y los dominios de cliente quedan fuera de tu configuración automática de Cloudflare.
Consejos y resolución de problemas
- Falta el enlace Create an account. Comprueba que Registrations open está guardado y que la licencia es válida: sin licencia, la página pública indica que el registro no está disponible y el enlace desaparece.
- Los visitantes no reciben el correo de confirmación. Sign-up depende de que mailcow envíe correo; prueba tu correo saliente antes de abrir la página.
- Un registro nunca se completa. Los registros sin confirmar caducan; el visitante puede pedir un nuevo correo tras un minuto, hasta 5 veces al día, con 5 intentos por código. Si la aprobación está activada, mira en Registrations > Waiting for approval.
- Se rechaza un nombre. Los nombres de rol como postmaster, abuse, admin, support y noreply siempre están reservados; añade los tuyos en More reserved names y revisa la longitud mínima y máxima.
- Un dominio sigue sin verificar. El registro TXT debe ser exactamente
_mlw-verify.<domain>con el valor mostrado; la comprobación se ejecuta cada 10 minutos durante 7 días, tras los cuales el cliente debe volver a añadirlo. - Datos y copias de seguridad. Los registros se guardan en la propia base de datos de mailcow (tablas
mlw_su_*), así que forman parte de las copias de seguridad de mailcow. Los ajustes viven en la carpeta del Toolkit en el servidor.
Conclusión
Para un proveedor, un colegio o una comunidad, el valor del autorregistro no es solo la rapidez: es que cada cuenta queda acotada por las reglas que escribiste una vez: nombres reservados, cuotas, dominios permitidos, códigos de invitación y aprobación donde importa. No llega nada a mailcow hasta que la dirección está confirmada, y si la licencia caduca, los nuevos registros se detienen mientras todo lo que ya existe sigue funcionando. La referencia completa de opciones está en la guía de usuario; la página del producto es Sign-up for mailcow y el changelog recoge las actualizaciones. Si algo no se comporta como se describe aquí, la base de conocimiento y las FAQ son el siguiente paso, y siempre puedes contactarnos.