E-mail professionnel10 min de lecture

Héberger Stalwart Mail Server sur VPS : guide complet

Un seul binaire Go — SMTP, IMAP, JMAP, CalDAV, CardDAV et WebAdmin — pour opérer la messagerie de plusieurs domaines clients depuis un VPS, sans stack Docker multi-conteneurs. Pour une agence qui administre dix domaines distincts, Mailcow impose un déploiement lourd : au minimum 6 Go de RAM, plusieurs conteneurs, une configuration multi-domaine laborieuse. Stalwart Mail Server répond à ce problème autrement : une instance unique, un binaire statique compilé en Go, et un moteur multi-tenant natif qui sépare domaines et boîtes sans duplication d'infrastructure. Avec environ 14 000 étoiles sur GitHub et une version stable active (v0.16.18, août 2026), le projet a quitté le stade expérimental.

Pourquoi Stalwart pour un parc multi-domaines

La gestion d'e-mail pour plusieurs clients bute sur le même écueil : chaque solution populaire impose soit une instance par domaine, soit une configuration partagée où l'isolation reste partielle. Stalwart a été conçu dès l'origine pour le multi-tenant : un domaine est un objet de premier rang dans son modèle de données, pas une variante de configuration. Le résultat est une architecture où ajouter un client revient à créer un domaine via l'API ou l'interface web, sans toucher au binaire, sans relancer de conteneur, sans marge d'erreur sur la séparation des données.

Pour une agence qui gère de 5 à 50 clients, c'est la différence entre une infrastructure qui croît linéairement (une instance de plus par client) et une infrastructure qui scale de manière plate — un VPS, une instance, N clients.

Ce que Stalwart apporte concrètement

  • Binaire unique, pas de Docker requis — un seul fichier compilé en Go, sans dépendances système, posable directement sur n'importe quelle distribution Linux.
  • Multi-tenant natif — domaines, boîtes, alias et quotas gérés par objet, avec isolation stricte des données entre clients.
  • JMAP (RFC 8620) en protocole de premier rang — le protocole moderne de synchronisation d'e-mail, en plus d'IMAP4 et POP3 classiques.
  • WebAdmin intégré — interface d'administration HTTPS sur le port 8080, sans outil tiers à déployer.
  • API JMAP pour l'automatisation — création de domaines et de comptes scriptable, adaptée aux flux d'onboarding client d'une agence.
  • Support ACME/Let's Encrypt natif — renouvellement TLS automatique sans Certbot ni reverse proxy obligatoire.
  • Licence AGPL-3.0 — code source vérifiable, pas de dépendance propriétaire pour la version communautaire.

Prérequis avant l'installation

Stalwart est significativement plus léger que Mailcow. Pour un usage léger (1 à 5 domaines, quelques dizaines de boîtes), comptez 1 vCPU et 1 Go de RAM. Pour un parc de plusieurs dizaines de domaines clients avec trafic actif, 2 vCPU et 2 Go de RAM constituent la configuration recommandée — c'est le dimensionnement que la documentation officielle cite pour un usage multi-domaines.

Côté réseau, quatre ports doivent être ouverts en entrée : 25 (SMTP, réception MX), 465 (SMTPS/submission), 993 (IMAPS) et 443 (HTTPS — WebAdmin et JMAP). Le port 4190 est nécessaire pour Sieve (filtres serveur). Votre VPS doit disposer d'une IPv4 dédiée et d'un rDNS configuré pointant vers le nom d'hôte du serveur — indispensable pour la délivrabilité. Enfin, un nom de domaine avec accès à la zone DNS est requis pour poser les enregistrements MX, SPF, DKIM et DMARC.

Installation de Stalwart Mail Server

01

Télécharger le binaire

Connectez-vous en SSH à votre VPS. Téléchargez la dernière version stable depuis le dépôt officiel :

curl -fsSL https://github.com/stalwartlabs/stalwart/releases/latest/download/stalwart-linux-x86_64.tar.gz | tar -xz -C /usr/local/bin/
chmod +x /usr/local/bin/stalwart

Pour un serveur ARM (Ampere, AWS Graviton) remplacez x86_64 par aarch64.

02

Lancer l'assistant d'installation

Stalwart propose un assistant interactif qui configure les répertoires de données, génère les certificats TLS initiaux et crée le premier compte administrateur :

sudo stalwart --init

L'assistant vous demande le nom d'hôte du serveur (ex. mail.votre-domaine.com), le chemin des données (par défaut /opt/stalwart-mail), le mode TLS (ACME recommandé) et le mot de passe administrateur. À l'issue de l'init, les fichiers de configuration sont posés dans /opt/stalwart-mail/etc/.

03

Créer l'unité systemd

Pour que Stalwart démarre automatiquement, créez l'unité de service :

sudo tee /etc/systemd/system/stalwart-mail.service << 'EOF'
[Unit]
Description=Stalwart Mail Server
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/stalwart --config /opt/stalwart-mail/etc/config.toml
Restart=on-failure
User=stalwart

[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload && sudo systemctl enable --now stalwart-mail

Créez au préalable l'utilisateur dédié : sudo useradd -r -s /bin/false stalwart && sudo chown -R stalwart /opt/stalwart-mail.

04

Ouvrir les ports dans le pare-feu

Sur Ubuntu/Debian avec UFW :

sudo ufw allow 25/tcp comment 'SMTP'
sudo ufw allow 465/tcp comment 'SMTPS'
sudo ufw allow 993/tcp comment 'IMAPS'
sudo ufw allow 443/tcp comment 'HTTPS WebAdmin/JMAP'
sudo ufw allow 4190/tcp comment 'Sieve'
sudo ufw reload

Si votre VPS est derrière un pare-feu cloud (Hetzner, OVH…), répercutez ces règles dans le panneau de contrôle.

05

Ajouter le premier domaine via le WebAdmin

Ouvrez https://mail.votre-domaine.com:8080 dans votre navigateur et connectez-vous avec le compte administrateur créé à l'étape 2. Dans Gestion → Domaines, cliquez Ajouter un domaine, saisissez votre-domaine.com et validez. Stalwart génère automatiquement les enregistrements DNS à poser (MX, SPF, DKIM, DMARC) et les affiche dans l'interface — copiez-les dans votre zone DNS.

06

Créer les boîtes et valider

Dans Gestion → Comptes, créez un compte utilisateur en lui associant le domaine ajouté. Testez la réception avec :

swaks --to [email protected] --server mail.votre-domaine.com --port 25

Puis testez la connexion IMAP depuis Thunderbird ou un client au choix — serveur mail.votre-domaine.com, port 993, SSL/TLS. Pour un client supplémentaire, répétez l'étape 5 avec un nouveau domaine : aucun redémarrage du service n'est nécessaire.

Configuration post-installation

Reverse proxy. Si vous souhaitez faire transiter le WebAdmin et JMAP derrière Nginx (pour partager le port 443 avec d'autres services), configurez un bloc stream pour les protocoles de mail (25, 465, 993) et un bloc server HTTPS pour /jmap et le WebAdmin. Stalwart accepte aussi les connexions directes sans proxy — le choix dépend de votre architecture.

Sauvegarde. Les données de Stalwart résident dans /opt/stalwart-mail/data/. Un snapshot quotidien de ce répertoire — compressé et transféré hors site — suffit pour une restauration complète. Avec le plan {{vps.power.name}} de ServOrbit, les sauvegardes hebdomadaires sont incluses ; activez les sauvegardes quotidiennes pour une RPO adaptée à la messagerie.

Multi-domaines supplémentaires. Chaque domaine client s'ajoute via le WebAdmin ou l'API JMAP. La commande stalwart expose aussi un sous-commande CLI pour les opérations en lot — utile pour l'onboarding automatisé d'un nouveau client.

Durcissement : limiter l'accès au WebAdmin

Le WebAdmin écoute par défaut sur 0.0.0.0:8080. En production, restreignez l'accès à vos IP d'administration :

sudo ufw deny 8080
sudo ufw allow from <votre-ip-admin> to any port 8080

Activez également l'authentification à deux facteurs (TOTP) pour le compte administrateur depuis Sécurité → Authentification dans le WebAdmin. Pour l'accès à distance sur un réseau non sécurisé, préférez un tunnel SSH plutôt qu'une exposition directe du port 8080.

Dépannage des erreurs courantes

Literal exceeds the maximum request size of X bytes (IMAP). Ce message apparaît quand Thunderbird ou un client IMAP tente d'uploader une pièce jointe volumineuse via la commande APPEND. Stalwart tronque la connexion, puis le client interprète la suite de données comme des commandes IMAP. Augmentez la limite dans /opt/stalwart-mail/etc/config.toml à la clé imap.request.max-size et relancez le service.

Enregistrement DKIM rejeté par le registrar. Si votre fournisseur DNS (Vultr, certains registrars) échoue à créer la clé RSA DKIM parce qu'elle dépasse 255 caractères, découpez-la en deux segments entre guillemets dans la valeur TXT : "v=DKIM1; k=rsa; p=MIIBIj..." "AQAB...". Stalwart les concaténe à la lecture.

Domaine Punycode refusé à la création. Les versions antérieures à v0.16 rejetaient les domaines internationalisés déjà encodés en A-label (ex. xn--mondomaine-o2a.com). Saisissez le domaine en Unicode (mondomainé.com) et laissez Stalwart effectuer la conversion.

Le service ne démarre pas après mise à jour. Vérifiez que le fichier de configuration est compatible avec la nouvelle version : stalwart --check-config /opt/stalwart-mail/etc/config.toml. Les migrations de schéma de configuration sont documentées dans les notes de release sur GitHub.

Connexions IMAP refusées depuis un client mobile. Vérifiez que le certificat TLS est valide et non expiré (openssl s_client -connect mail.votre-domaine.com:993) et que le port 993 est bien ouvert dans UFW et dans le pare-feu réseau de votre VPS.

Pour aller plus loin

Stalwart couvre l'infrastructure de messagerie — réception, envoi et stockage. Pour que vos e-mails arrivent en boîte de réception et non en spam, les enregistrements SPF, DKIM et DMARC doivent être correctement posés et testés : consultez notre guide sur la délivrabilité e-mail professionnelle.

Si votre parc cPanel envoie du transactionnel (confirmations de commande, alertes) et que vous souhaitez centraliser l'envoi sans déplacer les boîtes, le guide SMTP relay Postfix couvre cette architecture complémentaire. Pour les agences qui migrent un portefeuille de clients depuis Google Workspace ou Microsoft 365 vers des serveurs auto-hébergés, l'article sur Mailcow détaille les étapes de migration IMAP.

Un VPS pour votre serveur e-mail multi-clients

Un VPS `{{vps.power.name}}` (2 vCPU / 2 Go RAM) suffit pour un parc de plusieurs dizaines de domaines clients avec Stalwart — accès root, choix d'OS, IPv4 dédiée incluse.

Besoin d'aide ?

Parcourez notre centre d'aide et notre FAQ, ou contactez notre équipe — rappel, WhatsApp ou e-mail. Support en français, anglais et arabe.