Installation de Stalwart Mail sur Debian 13
Voici un guide complet, structuré et argumenté pour l'installation de Stalwart Mail en mode "bare metal" (service natif) sur Debian 13.
Pourquoi choisir un Service Natif plutôt qu'un Conteneur ?
Le débat "Docker vs Natif" est fréquent, mais pour un serveur mail sous Stalwart, le mode natif présente des avantages techniques précis :
- Performance et Latence : Stalwart est écrit en Rust, un langage compilé qui offre des performances proches du C. En natif, vous éliminez la couche de virtualisation réseau de Docker (le pont
docker0), réduisant la latence sur les connexions SMTP/IMAP. - Gestion simplifiée du réseau : Les serveurs mail sont très sensibles aux IPs. En natif, Stalwart voit directement l'IP réelle des clients sans configuration complexe de "proxy protocol" ou de headers
X-Forwarded-For. C'est crucial pour que Fail2Ban fonctionne instantanément. - Empreinte Mémoire : Sans le démon Docker et les couches d'abstraction, votre serveur consomme moins de RAM (idéal pour un petit VPS de 1 ou 2 Go).
- Mises à jour système : Les bibliothèques de sécurité du système (OpenSSL, etc.) sont gérées globalement par Debian via
apt, au lieu de dépendre de la fraîcheur d'une image Docker tierce.
Tutoriel : Installation de Stalwart sur Debian 13
Préparation du système (Sécurité)
Connectez-vous en root, puis préparez l'environnement :
apt update && apt upgrade -y
apt install curl sudo ufw fail2ban certbot -y
Configuration du Pare-feu :
ufw allow 22,25,80,443,465,587,993,8080/tcp
ufw enable
Installation de Stalwart
Nous utilisons le script officiel pour installer le binaire et configurer le service systemd.
# Téléchargement et installation dans /opt/stalwart
curl --proto '=https' --tlsv1.2 -sSf https://get.stalw.art/install.sh | sudo sh -s -- /opt/stalwart
Note importante : À la fin du script, un identifiant et un mot de passe administrateur s'affichent. Copiez-les précieusement.
Configuration de Fail2Ban
Pour protéger votre service des attaques par force brute.
Création du filtre :
nano /etc/fail2ban/filter.d/stalwart.conf
[Definition]
failregex = ^.*Authentication failed.*remote.addr="<HOST>".*$
Activation de la prison :
nano /etc/fail2ban/jail.d/stalwart.local
[stalwart]
enabled = true
port = 25,465,587,993,8080
filter = stalwart
logpath = /opt/stalwart/logs/stalwart.log
maxretry = 5
bantime = 1d
systemctl restart fail2ban
Configuration DNS & TLS
Accédez à l'interface d'administration : http://VOTRE_IP:8080.
- Domaines : Ajoutez votre domaine (ex:
exemple.com). - Certificats : Stalwart peut gérer ACME (Let's Encrypt) tout seul. Allez dans Settings > Security > TLS et renseignez votre domaine pour qu'il génère son propre certificat.
- DNS (Crucial) : Vous devez configurer vos entrées chez votre registraire.
| Type | Hôte | Valeur |
| A | mail | IP_DU_VPS |
| MX | @ | 10 mail.votre-domaine.com |
| TXT | @ | v=spf1 mx ip4:VOTRE_IP -all |
| TXT | _dmarc | v=DMARC1; p=reject; |
| TXT | selector._domainkey | (Copiez la clé DKIM générée dans l'interface Stalwart) |
Stratégie de Sauvegarde (Automatisée)
Puisque nous n'avons pas de volumes Docker, nous sauvegardons directement les répertoires de données.
Création d'un script de backup : nano /usr/local/bin/backup-mail.sh
#!/bin/bash
DEST="/backup/mail"
DATE=$(date +%Y-%m-%d)
mkdir -p $DEST
# Sauvegarde des données et de la configuration
tar -czf $DEST/stalwart-backup-$DATE.tar.gz /opt/stalwart/data /opt/stalwart/etc
# Garder seulement 7 jours de backup
find $DEST -type f -mtime +7 -delete
Rendez-le exécutable : chmod +x /usr/local/bin/backup-mail.sh.
Ajoutez-le en tâche Cron (crontab -e) pour qu'il s'exécute chaque nuit à 3h :
0 3 * * * /usr/local/bin/backup-mail.sh
Vérification finale
Une fois configuré, utilisez l'outil Mail-Tester pour envoyer un mail de test. Vous devriez obtenir une note de 10/10 si le SPF, DKIM et le Reverse DNS (PTR) sont bien en place.