Aller au contenu principal

Webmail et autoconfiguration

Deux couches d'expérience indépendantes, posées sur l'hébergement de messagerie, et toutes deux facultatives :

  • Le webmail — une interface de messagerie dans le navigateur, pour les utilisateurs qui ne veulent pas de logiciel de bureau ou mobile. Exige un service supplémentaire, Roundcube, déployé aux côtés de Stalwart.
  • L'autoconfiguration — des points d'accès qui permettent à Thunderbird, Apple Mail et Outlook de se configurer tout seuls, à partir d'une simple adresse et d'un mot de passe. Aucun déploiement supplémentaire : c'est intégré à kuploy-cloud.

Vous pouvez livrer l'une, l'autre, les deux, ou aucune. La messagerie fonctionne sans elles — vos utilisateurs saisissent alors les noms des serveurs IMAP/SMTP à la main.

Si vous voulezAjoutez
Servir les usages occasionnels, les machines partagéesLe webmail
Faciliter la configuration sur bureau et mobileL'autoconfiguration
L'expérience complèteLes deux

Le webmail​

Les exploitants qui font tourner l'hébergement de messagerie peuvent offrir à leurs utilisateurs finaux un webmail dans le navigateur (Roundcube), tournant à côté de Stalwart. Une fois configuré, les utilisateurs finaux voient un bouton Open Webmail sur leur page Mailboxes.

Pourquoi proposer un webmail ?​

  • Les machines partagées ou publiques — vos utilisateurs se connectent sans configurer de logiciel de messagerie.
  • Un recours sur mobile — cela fonctionne sur n'importe quel appareil doté d'un navigateur.
  • La prise en main — les nouveaux titulaires d'une boîte peuvent lire leur courriel de bienvenue aussitôt, avant même d'installer Thunderbird ou Outlook.

Si tous vos clients utilisent déjà une application de messagerie de bureau ou mobile, le webmail est facultatif et peut rester désactivé.

Roundcube​

Pour Kuploy Cloud, le webmail, c'est Roundcube, et rien d'autre. Roundcube est un webmail PHP mûr et léger, qui correspond terme à terme à ce que fournit Stalwart : IMAP, soumission SMTP, Sieve. L'appariement est propre, la consommation d'environ 256 Mio au repos, et l'image Apache tient en un seul conteneur.

Nous ne livrons pas de prise en charge de SOGo ni des autres suites de travail collaboratif : Stalwart est avant tout un serveur de messagerie, et poser par-dessus une interface d'agenda et de contacts exigerait plus de pièces mobiles que le déploiement Stalwart actuel n'en prend en charge.

Prérequis​

Roundcube réutilise les pièces du cluster que vous avez déjà pour kuploy-cloud lui-même. Il vous faut :

  • Stalwart déjà déployé. Le webmail n'est qu'une fine coquille au-dessus d'IMAP/SMTP : sans Stalwart, il n'a personne à qui parler. Voir Héberger la messagerie.
  • cert-manager, avec un ClusterIssuer opérationnel — en général letsencrypt-prod, le même que pour le tableau de bord kuploy-cloud.
  • Un contrôleur d'ingress — nginx est celui par défaut dans kuploy-k8s.
  • Un nom d'hôte libre sur un domaine que vous maîtrisez, en général webmail.<votre-domaine-exploitant> (par exemple webmail.gaveh.com). Un seul nom d'hôte par instance kuploy-cloud, partagé par toutes les organisations de l'instance.

Aucun port nouveau, aucune adresse de répartiteur de charge supplémentaire : Roundcube passe par le même ingress HTTPS que le reste de kuploy-cloud.

Mise en place​

1. Déployer Roundcube​

Le chemin recommandé est le déployeur kuploy-k8s, qui câble d'un coup le DNS, cert-manager, l'Ingress, la base Postgres et la configuration de Roundcube.

Déploiement complet — Stalwart et Roundcube ensemble, sur une installation neuve :

python deploy.py --edition cloud --domain console.example.com \
--mail-hostname mail.example.com \
--webmail-hostname webmail.example.com \
--stalwart-lb-ip <ip-dédiée>

En autonome — ajouter Roundcube à côté d'un Stalwart déjà en service :

python deploy.py webmail \
--mail-hostname mail.example.com \
--webmail-hostname webmail.example.com \
--postgres-service pg-postgresql-0.pg-postgresql-headless \
--postgres-secret postgres \
--db-namespace database

Si vous n'êtes pas sur kuploy-k8s — Docker Compose, Kubernetes monté à la main, métal nu —, déployez Roundcube vous-même, avec la même forme :

  • une image Apache à conteneur unique (roundcube/roundcubemail:1.6.x-apache) ;
  • l'hôte IMAP = votre cluster Stalwart, port 993, SSL ;
  • l'hôte SMTP = votre cluster Stalwart, port 587, STARTTLS ;
  • l'hôte ManageSieve = votre cluster Stalwart, port 4190, STARTTLS ;
  • une petite base Postgres, pour les préférences et les sessions.

2. Les enregistrements DNS​

Ajoutez un seul CNAME chez votre bureau d'enregistrement, qui fasse pointer le nom d'hôte du webmail vers votre ingress kuploy-cloud :

EnregistrementHôteValeur
CNAMEwebmail.example.com<nom d'hôte ou IP de l'ingress kuploy-cloud>

Retrouvez le nom d'hôte ou l'adresse externe de l'ingress ainsi :

kubectl get ingress -n kuploy
# ou, si vous ne savez pas quel contrôleur est en service :
kubectl get svc -A | grep LoadBalancer

cert-manager prendra le nouveau nom d'hôte et émettra un certificat TLS automatiquement — le défi HTTP-01 se règle d'ordinaire en quelques minutes, une fois le DNS propagé.

astuce

Utilisez le même domaine racine que votre serveur de messagerie, par exemple mail.example.com ou webmail.example.com. Beaucoup d'utilisateurs tapent l'URL à la main la première fois.

Si vous avez déployé par kuploy-k8s, cette étape est automatique : le déployeur inscrit https://webmail.example.com dans la configuration de plateforme de kuploy-cloud au passage. Le bouton Open Webmail apparaît sur la page Mailboxes dans la minute qui suit la fin du déploiement. Aucune action sur /admin/mail n'est nécessaire.

La carte Webmail de /admin/mail affichera l'URL en lecture seule, avec une pastille « Managed by kuploy-k8s ». Pour changer l'URL, ou cesser d'afficher le lien, redéployez :

# Déménager vers un nouveau nom d'hôte
python deploy.py webmail --webmail-hostname nouveau.example.com

# Cesser d'afficher le lien
python deploy.py webmail --skip-webmail

Ainsi, le DNS, le TLS, l'Ingress et la configuration des hôtes de confiance de Roundcube restent cohérents — modifier le seul champ d'URL sur /admin/mail ne changerait que la cible du lien, sans déplacer tout cela, et laisserait le bouton cassé.

Si vous avez déployé à la main — votre propre Roundcube, docker-compose… —, renseignez l'URL vous-même :

  1. Allez dans Admin → Mail Server Configuration (/admin/mail).
  2. Descendez jusqu'à la carte Webmail.
  3. Dans Webmail URL, saisissez l'URL publique où votre webmail est joignable — par exemple https://webmail.example.com.
  4. Cliquez sur Save Webmail URL.

Pour retirer le lien plus tard, revenez à cette même carte et cliquez sur Clear, ou enregistrez une valeur vide.

remarque

L'URL est partagée par toutes les organisations de l'instance. Il n'existe pas aujourd'hui d'URL de webmail par organisation.

Ce qui est déployé​

Le manifeste kuploy-k8s crée les objets suivants dans votre espace de noms kuploy-cloud :

RessourceNomRôle
DeploymentroundcubeLe pod Roundcube (1 réplique, environ 256 Mio au repos)
ServiceroundcubeLe ClusterIP qui expose le pod
IngressroundcubeLa terminaison TLS pour webmail.<votre-hôte>
Certificateroundcube-tlsLe certificat TLS émis par cert-manager
ConfigMaproundcube-configLa configuration des greffons et des hôtes de confiance
(dans Postgres)la base et l'utilisateur roundcubeLes préférences, les sessions, le carnet d'adresses
(dans Stalwart)un nouveau [server.listener.managesieve] sur le port 4190Pour que l'édition des filtres Sieve fonctionne dans Roundcube

Roundcube est sans état, au-delà de sa base Postgres : pas de volume persistant par pod, pas de volume géré par un opérateur. Mettre l'image à jour, redémarrer ou monter en charge horizontalement sont trois opérations sans danger.

Après le déploiement, vérifiez que tout est en service :

kubectl get all -n kuploy -l app.kubernetes.io/component=webmail
kubectl get certificate -n kuploy roundcube-tls
kubectl get ingress -n kuploy roundcube

Ce que voient vos utilisateurs finaux​

Une fois le webmail configuré, les utilisateurs finaux de toute organisation dont l'hébergement de messagerie est activé verront, sur la page Mailboxes :

  • la liste de leurs boîtes aux lettres et de leurs alias ;
  • un bouton Open Webmail, en haut à droite de l'en-tête de page ;
  • les réglages IMAP et SMTP de leurs boîtes, pour Thunderbird, Outlook, Apple Mail, etc.

Ils se connectent au webmail avec leur adresse de courriel complète comme identifiant, et le mot de passe défini à la création de la boîte.


L'autoconfiguration​

Kuploy Cloud sert un autoconfig.xml Mozilla et un autodiscover.xml Microsoft pour chaque domaine doté de boîtes aux lettres. Lorsqu'un utilisateur ne saisit que son adresse et son mot de passe dans Thunderbird, Apple Mail ou Outlook, le logiciel récupère l'un de ces documents et configure tout seul l'IMAPS et la soumission SMTP vers votre serveur Stalwart. Vos utilisateurs n'ont aucun nom d'hôte ni numéro de port à retenir.

L'autoconfiguration est la pair du webmail, et non une de ses sous-fonctionnalités. Les deux s'adressent à des publics différents :

  • L'autoconfiguration aide les gens qui veulent utiliser une application de messagerie, de bureau ou mobile — ils n'ont pas à connaître le nom d'hôte ni le port de votre serveur.
  • Le webmail aide les gens qui ne veulent installer aucune application.

Vous pouvez activer l'une, l'autre, les deux, ou aucune.

Ce qui est servi​

La réponse XML fixe :

  • l'IMAP — mail.<hôte-de-votre-instance>, port 993, SSL/TLS ;
  • le SMTP — mail.<hôte-de-votre-instance>, port 587, STARTTLS ;
  • l'identifiant — l'adresse de courriel complète de l'utilisateur.

Le même nom d'hôte que celui vers lequel pointe votre enregistrement MX : le serveur de messagerie de votre instance kuploy-cloud. Aucune configuration supplémentaire de votre côté.

Le DNS — diriger les clients vers les points d'accès d'autoconfiguration​

Pour que Thunderbird et Outlook trouvent effectivement votre point d'accès d'autoconfiguration kuploy-cloud, il faut deux enregistrements CNAME par domaine :

EnregistrementHôteValeur
CNAMEautoconfig.<domaine>mail.<hôte-de-votre-instance>
CNAMEautodiscover.<domaine>mail.<hôte-de-votre-instance>

Ces enregistrements apparaissent automatiquement dans le panneau DNS Records de la page Mailboxes, aux côtés des lignes MX, SPF, DKIM et DMARC existantes. Créez-les chez votre bureau d'enregistrement comme vous créez les autres.

Les chemins .well-known standard sur le domaine principal du client sont également acceptés — https://<domaine>/.well-known/autoconfig/mail/config-v1.1.xml et https://<domaine>/autodiscover/autodiscover.xml : si votre mandataire inverse acheminait déjà le trafic de ce nom d'hôte vers kuploy-cloud, cela suffit, et les CNAME ne sont pas strictement nécessaires.

Pousser les enregistrements automatiquement​

Si le domaine de messagerie a été acheté par cette instance kuploy-cloud, chez Namecheap ou Enom, vous n'avez pas à créer les enregistrements à la main :

  1. Ouvrez la page Mailboxes dans une organisation qui possède le domaine.
  2. Cliquez sur DNS, sur la ligne du domaine, pour déplier le panneau des enregistrements.
  3. Cliquez sur Push to Namecheap (ou Push to Enom), en haut du panneau.

Les six enregistrements — MX, SPF, DKIM, DMARC, plus les deux CNAME d'autoconfiguration — sont écrits en un seul appel. Les enregistrements du domaine qui ne concernent pas la messagerie (votre A d'apex, votre CNAME www, les TXT de vérification de tiers) sont préservés.

Le bouton n'apparaît pas pour les domaines que vos clients ont ajoutés depuis un bureau d'enregistrement tiers ; pour ceux-là, recopiez les enregistrements dans l'interface du bureau d'enregistrement, puis cliquez sur Verify.

À quoi ressemble l'expérience, côté utilisateur​

Un utilisateur ajoute son compte dans Thunderbird :

  1. Il clique sur Add Account, et saisit alice@example.com et son mot de passe.
  2. Thunderbird récupère https://autoconfig.example.com/mail/config-v1.1.xml?emailaddress=alice@example.com.
  3. Il reçoit en retour les réglages IMAPS et de soumission SMTP de votre serveur.
  4. Il se connecte, ses identifiants sont validés, et il est dans sa boîte de réception — sans aucun réglage de serveur à la main.

Le même enchaînement fonctionne dans Apple Mail et Outlook, qui passent par autodiscover.example.com.


Questions fréquentes​

kuploy-cloud héberge-t-il le webmail à ma place ? Non. La plateforme ne fait que stocker l'URL et y renvoyer. C'est vous qui choisissez, déployez et exploitez le webmail.

Des organisations différentes peuvent-elles utiliser des webmails différents ? Pas aujourd'hui. L'URL du webmail est un réglage unique par instance, partagé par toutes les organisations de celle-ci.

Puis-je utiliser un webmail tiers, comme Gmail ou Outlook.com ? Seulement s'il permet d'ajouter un compte IMAP/SMTP externe. Le lien de la page Mailboxes est informatif : il renvoie à une page de connexion, et non à une session déjà authentifiée.

Que se passe-t-il si je retire l'URL du webmail ? Le bouton Open Webmail disparaît de la page Mailboxes, dans toutes les organisations. Les connexions IMAP/SMTP existantes, depuis les logiciels de bureau et mobiles, ne sont pas affectées. Si l'URL avait été posée par kuploy-k8s, retirez-la en redéployant avec --skip-webmail, et non en vidant le champ sur /admin/mail — il est en lecture seule dans ce cas.

Pourquoi le champ Webmail URL est-il en lecture seule sur /admin/mail ? Parce que vous avez déployé Roundcube par kuploy-k8s : l'URL est verrouillée sur ce que le déployeur a posé. La modifier seule ne changerait que la cible du lien — ni le DNS, ni le TLS, ni l'Ingress, ni les hôtes de confiance de Roundcube — et laisserait le bouton cassé. Pour en changer, redéployez avec un nouveau --webmail-hostname. La dérogation manuelle, réservée aux rares urgences, est documentée dans le docs/webmail.md du déployeur.

L'autoconfiguration m'est-elle utile si j'ai un webmail ? Non — les deux sont indépendants, et beaucoup d'exploitants livrent les deux. Le webmail couvre les utilisateurs qui s'en tiennent au navigateur ; l'autoconfiguration épargne aux autres la saisie des réglages de serveur.

Pourquoi le CNAME d'autoconfiguration n'apparaît-il pas comme « Verified » après un clic sur Verify ? La pastille de vérification actuelle ne contrôle que MX, SPF, DKIM et DMARC. Les lignes CNAME sont informatives. Si les enregistrements sont correctement posés chez votre bureau d'enregistrement, l'autoconfiguration fonctionnera, même si la pastille ne bascule pas.