Stalwart - Serveur de Messagerie et de Collaboration Tout-en-un : Installation avec Docker (2/2)
Installation et sécurisation de votre serveur de messagerie Stalwart sur Linux
Stalwart est une solution de serveur de messagerie moderne qui se distingue par sa conception sécurisée dès le départ. Cet article vous guidera à travers les étapes d'installation de Stalwart via Docker sur un serveur Linux et explorera les pratiques essentielles pour en assurer la sécurité, y compris la configuration d'un pare-feu.
1. Installation de Stalwart avec Docker sur LinuxStalwart est disponible sous forme d'image Docker, ce qui simplifie grandement son déploiement.
a. Prérequis Assurez-vous que Docker est installé sur votre machine Linux. Si ce n'est pas le cas, veuillez l'installer en suivant les instructions officielles de Docker pour votre distribution.
b. Pull l'image Docker de Stalwart
La première étape consiste à télécharger l'image Docker la plus récente de Stalwart :
$ docker pull stalwartlabs/stalwart:latest [2]
c. Créer un répertoire de données
Créez un répertoire sur votre machine hôte qui contiendra les fichiers de configuration et les données du serveur de messagerie Stalwart.
Par exemple :
$ mkdir /var/lib/stalwart [2]
d. Démarrer le conteneur Stalwart
Une fois l'image téléchargée et le répertoire créé, démarrez le conteneur Stalwart.
L'exemple suivant expose tous les ports couramment utilisés par Stalwart pour JMAP, IMAP, SMTP et WebDAV :
$ docker run -d -ti -p 443:443 -p 8080:8080 \
-p 25:25 -p 587:587 -p 465:465 \
-p 143:143 -p 993:993 -p 4190:4190 \
-p 110:110 -p 995:995 \
-v <STALWART_DIR>:/opt/stalwart \
--name stalwart stalwartlabs/stalwart:latest [2]
N'oubliez pas de remplacer <STALWART_DIR> par le chemin d'accès au répertoire que vous avez créé précédemment, par exemple /var/lib/stalwart.
Notez qu'il n'est pas nécessaire d'exposer tous ces ports ; la documentation de sécurisation de votre serveur fournit plus d'informations à ce sujet.
e. Se connecter à l'interface web
Pour obtenir les identifiants du compte administrateur par défaut, exécutez la commande suivante :
$ docker logs stalwartVous verrez des informations similaires à ceci : 🔑 Your administrator account is 'admin' with password 'w95Yuiu36E'. Avec ces informations, vous pouvez vous connecter à l'interface web à l'adresse http://yourserver.org:8080/login.
f. Configuration initiale post-installation
Après vous être connecté, plusieurs étapes de configuration sont recommandées :• Choisir où stocker vos données : Dans la section Settings > Storage, configurez vos magasins de données, de blobs, de texte intégral et en mémoire. Stalwart est livré préconfiguré avec RocksDB comme backend par défaut pour tous les magasins, que vous pouvez conserver si cela vous convient.
• Configurer votre nom d'hôte et votre domaine : Vérifiez que le nom d'hôte du serveur dans Settings > Server > Network est correct.
Ajoutez ensuite votre nom de domaine principal dans Management > Directory > Domains.
L'interface affichera les enregistrements DNS que vous devrez ajouter aux paramètres DNS de votre domaine (MX, TXT pour DKIM, SPF, DMARC). Certains enregistrements générés automatiquement peuvent être facultatifs.
• Activer TLS : Stalwart nécessite un certificat TLS valide pour sécuriser la connexion. Vous pouvez en télécharger un existant dans Settings > Server > TLS > Certificates, ou activer les certificats TLS automatiques de Let's Encrypt via ACME dans Settings > Server > TLS > ACME Providers.
Si vous utilisez un proxy inverse (Traefik, Caddy, HAProxy, NGINX), configurez le TLS dans votre proxy.
g. Redémarrer le conteneur Une fois les configurations initiales terminées, redémarrez le conteneur pour appliquer les changements :
$ docker restart stalwart [7]
h. Prochaines étapes
Si vous avez choisi le répertoire interne, vous pouvez maintenant ajouter vos utilisateurs dans Management > Directory > Accounts. Si tout s'est bien passé, vos utilisateurs devraient pouvoir se connecter et envoyer/recevoir des e-mails.
Sécurisation de votre serveur Stalwart
Bien que Stalwart intègre des mécanismes de défense intégrés (comme le blocage des attaques par force brute ou les attaques SYN flood), l'administrateur joue un rôle crucial dans le maintien d'un environnement sécurisé.
Désactiver les ports inutilisés
Par défaut, Stalwart active les écouteurs réseau pour tous les services pris en charge (IMAP, HTTP, SMTP, POP3, ManageSieve). Il est fortement recommandé de désactiver tout service et les ports associés qui ne sont pas activement utilisés pour améliorer la sécurité, réduire la surface d'attaque et minimiser l'utilisation des ressources.
Vous pouvez désactiver les ports de deux manières :
- En supprimant l'écouteur correspondant de la configuration Stalwart : cela garantit que le service ne se lie plus au port.
- En bloquant le trafic entrant au niveau du pare-feu réseau ou hôte : cela empêche l'accès externe même si l'écouteur est actif en interne.
Ports essentiels à maintenir ouverts :
- Port 25 (SMTP) : Pour la réception d'e-mails d'autres serveurs de messagerie.
- Port 465 (SMTPS) : Recommandé pour l'envoi sécurisé d'e-mails sortants des clients utilisateurs avec TLS implicite. À privilégier par rapport au port 587.•
- Port 993 (IMAPS) : Pour l'accès sécurisé aux e-mails via les clients IMAP avec TLS implicite.
- Port 443 (HTTPS) : Pour l'administration web, JMAP, l'API REST, OAuth, le provisionnement de certificats TLS (ACME) et d'autres services web sécurisés.
Ports non essentiels à désactiver si non utilisés :
- Port 587 (SMTP Submission) : Si tous vos clients utilisent le port 465, ce port peut être désactivé.
- Port 143 (IMAP4) : Le port IMAP standard sans chiffrement. Il devrait généralement être désactivé au profit du port 993 (IMAPS).
- Port 4190 (ManageSieve) : À garder ouvert uniquement si vos utilisateurs gèrent activement des scripts Sieve.
- Port 110 (POP3) et Port 995 (POP3S) : POP3 est largement obsolète au profit d'IMAP. Désactivez-les sauf en cas de besoin spécifique.
- Port 8080 (HTTP) : Principalement fourni pour la configuration initiale. Il est fortement recommandé de désactiver ce port après la configuration pour prévenir les accès non authentifiés et non chiffrés.
Exemple d'application avec UFW (pare-feu)Note :
L'utilisation spécifique d'UFW n'est pas obligatoire, mais bloquer le trafic au niveau du pare-feu est une recommandation générale. Voici comment vous pourriez le configurer sur un système Linux.
1. Activer UFW (si ce n'est pas déjà fait)
2. Définir la politique par défaut (refuser tout le trafic entrant)
3. Autoriser les ports essentiels pour Stalwart
4. Autoriser SSH (indispensable pour gérer votre serveur à distance)
5. Refuser ou supprimer les règles pour les ports non essentiels si des règles "allow" existaient :
Si vous aviez autorisé le port 8080 pour la configuration initiale, supprimez la règle.
Assurez-vous que les ports 587, 143, 4190, 110, 995 ne sont pas autorisés. Si vous les aviez autorisés, supprimez les règles correspondantes.
6. Vérifier le statut d'UFW :
Appliquer le contrôle d'accès HTTP
Le listener HTTP de Stalwart expose de nombreux points d'accès pour des services comme JMAP, WebDAV, les API de gestion, OAuth, etc.. Il est fortement recommandé de désactiver explicitement l'accès aux points d'accès HTTP qui ne sont pas nécessaires dans votre déploiement, surtout pour les serveurs exposés à Internet. Vous pouvez implémenter des restrictions d'accès en créant des règles de contrôle d'accès HTTP appropriées dans votre configuration. Ces règles sont des expressions logiques évaluées pour chaque requête HTTP entrante, déterminant l'accès en fonction du chemin de la requête, de la méthode, de l'adresse IP source, du statut d'authentification, etc...
Comprendre les rôles d'administrateur
Lors de son premier lancement, Stalwart crée un compte administrateur de secours (fall-back) avec un accès complet et illimité à toutes les fonctionnalités du serveur. Ce compte est essentiel pour la configuration initiale et comme mécanisme d'accès d'urgence. Cependant, il est fortement recommandé de désactiver cet administrateur de secours une fois que le serveur est entièrement configuré afin de réduire le risque d'accès non autorisé ou d'escalade de privilèges. Il ne devrait être réactivé qu'en cas de nécessité critique. Pour les opérations quotidiennes, il est préférable de définir plusieurs comptes administrateurs avec des permissions spécifiques et limitées (par exemple, un pour la gestion des utilisateurs, un autre pour la configuration du serveur). De plus, les comptes administrateurs ne devraient jamais être utilisés pour accéder aux services IMAP, JMAP ou WebDAV, qui sont destinés aux utilisateurs réguliers.
En suivant ces étapes pour l'installation et en appliquant rigoureusement les recommandations de sécurisation, vous établirez une base solide pour un serveur de messagerie Stalwart fiable et sûr.