Page d’inscription pour mailcow : boîtes mail ou admins de domaine après confirmation de l’e-mail

Mettez en place une page d’inscription en libre-service sur votre mailcow pour une école, un club ou un petit hébergeur : noms réservés, quotas, codes d’invitation, approbation et anti-abus, sans rien créer avant la confirmation de l’e-mail.

Si vous faites tourner mailcow pour une école, un club, une communauté ou quelques petits clients, vous connaissez déjà le goulot d’étranglement : mailcow-dockerized n’a pas de page d’inscription, chaque boîte aux lettres et chaque domaine passe donc par un administrateur. C’est acceptable pour cinq comptes ; c’est pénible pour cinquante. Sign-up for mailcow ajoute une page publique, /mlw-signup/, à votre propre mailcow, pour que les visiteurs créent eux-mêmes leur compte, dans les limites que vous fixez, et seulement après avoir confirmé leur adresse e-mail. Ce tutoriel détaille la configuration pour le cas hébergeur/école/communauté : ce que les visiteurs obtiennent, comment les noms et les quotas sont gérés, comment s’articulent confirmation, approbation et codes d’invitation, et comment tenir les abus à distance.

Ce que vous obtenez, et ce qui reste entre vos mains

Le plugin est livré dans le paquet mailcow Toolkit (0.4.0 ou plus récent) et possède sa propre licence. Il ajoute une page publique d’inscription sur les hôtes de l’interface de mailcow et du webmail ; tant que les inscriptions sont ouvertes, la page de connexion de mailcow affiche un lien Create an account. Vous décidez de ce qu’un visiteur peut obtenir : une boîte aux lettres sur l’un des domaines que vous ouvrez à l’inscription, un compte administrateur de domaine pour les domaines propres du visiteur, ou les deux. Les comptes sont créés avec les fonctions propres de mailcow, avec vos modèles et vos limites, exactement comme si un administrateur les avait ajoutés.

La promesse clé pour quiconque exploite un serveur partagé : rien n’est créé dans mailcow avant que l’adresse soit confirmée (et approuvée, ou payée avec Cashier for mailcow). Les inscriptions non confirmées expirent simplement.

Prérequis

  • Le paquet mailcow Toolkit 0.4.0 ou plus récent installé sur mailcow-dockerized (Linux, docker compose, systemd), avec un accès root sur l’hôte pour lancer install.sh. Sign-up fait partie du paquet ; il n’y a rien d’autre à télécharger.
  • Un accès HTTPS sortant vers medialab.works depuis le serveur (vérification de licence), et un mailcow qui envoie des e-mails (messages de confirmation, d’approbation et de bienvenue).
  • Au moins un domaine mailcow à ouvrir à l’inscription, si les visiteurs doivent obtenir des boîtes aux lettres.
  • Pour les domaines propres : le client doit pouvoir ajouter un enregistrement TXT chez son fournisseur DNS.
  • Pour les formules payantes : Cashier for mailcow, avec sa propre licence. Pour des comptes gratuits, vous n’en avez pas besoin.

Étape 1 — Installer ou mettre à jour le Toolkit

install.sh du paquet (0.4.0 ou plus récent) installe Sign-up à côté du Toolkit : les fichiers web dans data/web/mlw-signup de mailcow, le dossier de réglages, les tables mlw_su_* dans la base de données de mailcow et le timer mlw-mailcow-accounts-<name>.timer, qui exécute les tâches Sign-up et Cashier toutes les 5 minutes. Un Toolkit déjà installé reçoit tout cela lorsque vous le mettez à jour vers 0.4.0 depuis System > Updates (Toolkit) ou que vous lancez le nouveau install.sh. Sign-up reste désactivé tant qu’il n’est pas sous licence et que vous n’avez pas ouvert les inscriptions.

Sign-up est mis à jour en même temps que le Toolkit : un paquet, une mise à jour. La mise à jour peut être lancée depuis la carte License de n’importe quel produit disposant d’une licence valide.

Étape 2 — Activer la licence

Ouvrez System > Updates (Toolkit) (administrateurs uniquement). À partir de la 0.4.0, la page affiche une carte License par produit ; utilisez la carte License · Sign-up for mailcow. Saisissez votre clé de licence et appuyez sur Activate, ou démarrez l’essai gratuit de 30 jours avec votre adresse e-mail. Avec une clé de bundle mailcow, saisissez la même clé dans la carte License de chaque produit. En ligne de commande, vous pouvez aussi lancer, depuis le dossier mailcow :

docker compose exec -u www-data php-fpm-mailcow php /web/mlw-toolkit/cli.php activate mailcow-signup <KEY>

La licence est vérifiée au démarrage du serveur et une fois par jour ; sans internet, Sign-up continue de fonctionner 7 jours après la dernière vérification réussie. Sans licence valide, les inscriptions se ferment et les tâches d’arrière-plan s’arrêtent pour Sign-up — les comptes, boîtes aux lettres et domaines existants ne sont jamais touchés.

Étape 3 — Choisir ce que les visiteurs obtiennent

Ouvrez System > Sign-up. La carte Registration contient les choix principaux ; enregistrez le formulaire avec le bouton situé à la fin.

  • Registrations open active la page publique et affiche le lien Create an account sur la page de connexion de mailcow (interface et nom d’hôte du webmail).
  • A mailbox on one of your domains : cochez-la et choisissez les Domains open for registration. Réglez Min. characters et Max. characters pour le nom avant le @, le Free quota (MB), More reserved names (les noms de rôle tels que postmaster, abuse, admin, support et noreply sont toujours réservés) et le mailcow mailbox template (vide = valeur par défaut de mailcow). Pour une école ou un club, c’est généralement toute la configuration : ouvrir un domaine, réserver les noms de rôle, fixer un quota raisonnable.
  • A domain administrator for the customer’s own domains : le client ajoute des domaines après une vérification DNS (TXT), dans les limites du paquet. Le Free package définit Domains, Mailboxes/domain, Aliases/domain, Quota/domain (MB) et Default quota/mailbox (MB) ; le mailcow domain template est utilisé pour les nouveaux domaines du client. Avec l’option concernant le new domain wizard, l’assistant du Toolkit crée les adresses de rôle d’un domaine du client vers l’e-mail du client.
  • Free registration (next to Cashier’s paid plans) : laissez-la cochée pour des comptes gratuits ; décochez-la lorsque chaque compte doit acheter une formule.

Étape 4 — Confirmation, approbation et invitations

Dans la carte Confirmation, approval, invitations :

  • Address confirmation : code à 6 chiffres, lien, code et lien, ou aucun (déconseillé). Expires (hours) va de 1 à 168. Un visiteur peut demander un nouvel e-mail après une minute, au plus 5 fois par jour, et dispose de 5 tentatives par code.
  • Administrator approval : les inscriptions gratuites attendent un administrateur ; renseignez E-mail for registrations to approve pour être prévenu de chaque nouvelle inscription. Les inscriptions payantes ne sont jamais retenues pour approbation. Pour une école, c’est le moyen discret de garder une liste de membres propre.
  • Invitation code : désactivé, en option ou obligatoire.
  • Terms link (asks for acceptance) : un lien vers vos conditions ; le visiteur doit les accepter.
  • Form fields : nom, société, téléphone et pays — désactivés, en option ou obligatoires.

Approuver les inscriptions

La carte Registrations liste celles Waiting for approval. Approve crée le compte et envoie l’e-mail de bienvenue ; Reject (avec un Reason facultatif) envoie au visiteur un e-mail avec la décision. Recent affiche les dernières inscriptions et leur état.

Codes d’invitation

Dans Invitation codes, renseignez Code (empty = random), Uses (0 = unlimited), Expires, l’Account kind (mailbox, domain ou any) et, avec Cashier, la Plan que le code ouvre (y compris une formule masquée), cochez No approval si le code doit sauter l’approbation, ajoutez une Note et appuyez sur Create the code. La liste indique combien de fois chaque code a été utilisé ; Disable et Enable le désactivent et le réactivent. Pour une communauté, un seul code multi-usage avec expiration et sans approbation est souvent le bon équilibre : les membres entrent sans attendre, les inconnus non.

Étape 5 — Configurer l’anti-abus

Dans la carte Anti-abuse :

  • Minimum time to fill in (s) : un formulaire envoyé plus vite est refusé. Un champ caché intercepte à lui seul les bots les plus simples.
  • Registrations / IP / day (0 = no limit).
  • Block disposable addresses : la liste intégrée plus la liste MediaLab Works, qui arrive avec la vérification de licence tant que la licence est valide.
  • Only these e-mail domains (empty = any) et Blocked e-mail domains, séparés par des espaces, des virgules ou des retours à la ligne. Un domaine couvre aussi ses sous-domaines ; *.example.com désigne uniquement les sous-domaines. Pour une école, se restreindre à votre propre domaine (et éventuellement à celui d’un partenaire) est un filtre simple et efficace.
  • Le mot de passe doit respecter la politique de mots de passe de mailcow, celle définie dans l’interface d’administration de mailcow.

Étape 6 — E-mail de bienvenue et connexion

Dans la carte New accounts : Own text in the welcome e-mail (anglais et roumain), le Sender name of the e-mails (vide = le nom d’hôte du serveur de messagerie) et Sign in the browser that registered (activé par défaut). Une boîte aux lettres gratuite est créée dès que l’adresse est confirmée (et approuvée). Un administrateur de domaine est créé avec le premier domaine vérifié : jusque-là, le client dispose d’une page, My account, où l’étape suivante consiste à ajouter le domaine.

Étape 7 — Les domaines propres du client

Le client ouvre My account (/mlw-signup/account.php, également dans le menu de mailcow lorsqu’il est connecté) et ajoute un domaine. La page affiche un enregistrement TXT à publier chez le fournisseur DNS du client :

_mlw-verify.example.com.  TXT  "mlw-verify=<token>"

Verify le vérifie immédiatement ; Sign-up vérifie aussi toutes les 10 minutes pendant 7 jours. Lorsque l’enregistrement est trouvé, le domaine est ajouté à mailcow avec les limites du paquet (domaines, boîtes aux lettres, alias, quota), et la page affiche les enregistrements DNS nécessaires au domaine (MX, SPF, DKIM, DMARC et les enregistrements recommandés), calculés par le module DNS du Toolkit. L’assistant de nouveau domaine du Toolkit peut envoyer les adresses de rôle d’un domaine du client au client, et les domaines du client sont tenus à l’écart de votre propre configuration automatique Cloudflare.

Conseils et dépannage

  • Le lien Create an account est absent. Vérifiez que Registrations open est enregistré et que la licence est valide : sans licence, la page publique indique que l’inscription n’est pas disponible et le lien disparaît.
  • Les visiteurs ne reçoivent pas l’e-mail de confirmation. Sign-up repose sur l’envoi d’e-mails par mailcow ; testez votre messagerie sortante avant d’ouvrir la page.
  • Une inscription ne se termine jamais. Les inscriptions non confirmées expirent ; le visiteur peut demander un nouvel e-mail après une minute, jusqu’à 5 fois par jour, avec 5 tentatives par code. Si l’approbation est active, regardez dans Registrations > Waiting for approval.
  • Un nom est refusé. Les noms de rôle tels que postmaster, abuse, admin, support et noreply sont toujours réservés ; ajoutez les vôtres dans More reserved names, et vérifiez la longueur minimale et maximale.
  • Un domaine reste non vérifié. L’enregistrement TXT doit être exactement _mlw-verify.<domain> avec la valeur affichée ; la vérification s’exécute toutes les 10 minutes pendant 7 jours, après quoi le client doit l’ajouter de nouveau.
  • Données et sauvegardes. Les inscriptions sont conservées dans la base de données de mailcow (tables mlw_su_*), elles font donc partie des sauvegardes de mailcow. Les réglages se trouvent dans le dossier du Toolkit sur le serveur.

Conclusion

Pour un hébergeur, une école ou une communauté, la valeur de l’inscription en libre-service ne tient pas seulement à la rapidité — elle tient à ce que chaque compte soit encadré par les règles que vous avez écrites une fois pour toutes : noms réservés, quotas, domaines autorisés, codes d’invitation et approbation là où elle compte. Rien n’arrive dans mailcow avant que l’adresse soit confirmée, et si la licence venait à expirer, les nouvelles inscriptions s’arrêtent tandis que tout ce qui existe déjà continue de fonctionner. La référence complète des options se trouve dans le guide utilisateur ; la page produit est Sign-up for mailcow, et le changelog suit les mises à jour. Si quelque chose ne se comporte pas comme décrit ici, la base de connaissances et la FAQ sont l’étape suivante, et vous pouvez toujours nous contacter.

Cet article a été rédigé avec l’aide de l’IA à partir de la documentation de nos produits ou des sources indiquées et vérifié automatiquement avant publication.

À lire ensuite

Vous utilisez Emby, Jellyfin ou Nextcloud ?

Nos plugins et applications ajoutent la TV en direct, les sous-titres, l’inscription et la sécurité à votre propre serveur, avec un essai gratuit.