Trace install tas - Stalwart
Apparence
Trace install tas - Stalwart
Vue d'ensemble
- Service mail tout-en-un Stalwart déployé sur tas via Podman rootless et Quadlet systemd user.
- Objectif: héberger localement les boîtes mail et l'administration, avec préparation pour les domaines lololand.org et pessonnier.fr.
- Image utilisée: docker.io/stalwartlabs/stalwart:latest.
- État actuel: service fonctionnel en local sur ports non privilégiés, mais pas encore en exposition SMTP standard 25/465/587/993 côté hôte rootless.
Source de vérité
- Quadlet: /home/loic/.config/containers/systemd/stalwart.container
- Données persistantes: /home/loic/stalwart-data
- Sauvegarde avant modification: /home/loic/backups/stalwart-2026-04-14T01:44:34+02:00
Configuration Quadlet actuelle
[Unit] Description=Stalwart Mail Server After=network-online.target Wants=network-online.target [Container] Image=docker.io/stalwartlabs/stalwart:latest ContainerName=stalwart AutoUpdate=registry Volume=/home/loic/stalwart-data:/opt/stalwart:Z PublishPort=1465:465 PublishPort=1587:587 PublishPort=1143:143 PublishPort=1993:993 PublishPort=1110:110 PublishPort=1995:995 PublishPort=14190:4190 PublishPort=8088:8080 PublishPort=8443:443 [Service] Restart=always TimeoutStartSec=180 [Install] WantedBy=default.target
Déploiement
- Rechargement systemd user: systemctl --user daemon-reload
- Démarrage: systemctl --user start stalwart.service
- Statut: systemctl --user status stalwart.service
- Logs: journalctl --user -u stalwart.service -n 200 --no-pager
Vérifications réalisées
- Le premier démarrage avec PublishPort=25:25 a échoué en rootless.
- Erreur observée:
rootlessport cannot expose privileged port 25, you can add 'net.ipv4.ip_unprivileged_port_start=25' to /etc/sysctl.conf (currently 1024), or choose a larger port number (>= 1024)
- Adaptation prudente faite: publication temporaire sur ports non privilégiés pour valider le service sans modification système globale.
- Ports locaux vérifiés après correction:
- 8088/tcp -> interface web HTTP Stalwart
- 8443/tcp -> interface HTTPS Stalwart
- 1587/tcp -> submission
- 1465/tcp -> SMTPS
- 1993/tcp -> IMAPS
- 1143/tcp, 1110/tcp, 1995/tcp, 14190/tcp disponibles aussi
- Test HTTP local validé:
curl -I http://127.0.0.1:8088/ HTTP/1.1 200 OK
- Initialisation Stalwart validée par les logs:
✅ Configuration file written to /opt/stalwart/etc/config.toml 🔑 Your administrator account is 'admin' with password généré dans les logs du conteneur
Limitation actuelle
- En Podman rootless standard, tas ne peut pas exposer directement les ports privilégiés 25/465/587/993/... tant que le système n'est pas ajusté.
- Pour un passage en production mail réel, il faut choisir l'une des voies suivantes:
- soit abaisser net.ipv4.ip_unprivileged_port_start
- soit faire une redirection hôte/firewall des ports standards vers les ports élevés utilisés par le conteneur
- soit exécuter la brique mail avec un mécanisme non rootless pour l'exposition des ports standards
- Point bloquant déjà identifié avant installation: les tests SMTP sortants vers des MX publics sur le port 25 timeout, donc un relay SMTP restera probablement nécessaire pour l'émission Internet fiable.
DNS cible recommandé
Pour chaque domaine, créer au minimum:
- mail.lololand.org -> A vers 82.67.187.157
- mail.pessonnier.fr -> A vers 82.67.187.157
- MX du domaine vers mail.<domaine>.
- SPF, DKIM, DMARC selon les valeurs générées par Stalwart
- Idéalement PTR/rDNS de l'IP publique vers mail.lololand.org ou équivalent, si le fournisseur le permet
Notes d'exploitation
- L'interface d'admin locale est joignable sur http://127.0.0.1:8088/.
- Les identifiants initiaux sont affichés au premier démarrage dans podman logs stalwart.
- La configuration définitive des domaines et des enregistrements DNS se fait ensuite dans l'interface Stalwart, qui génère les enregistrements à publier.
Relance et diagnostic
- Redémarrer: systemctl --user restart stalwart.service
- Voir les logs du conteneur: podman logs --tail 200 stalwart
- Vérifier les ports: ss -ltn | egrep ':(1110|1143|1465|1587|1993|1995|8088|8443|14190)\\s
Décision retenue
- Déployer d'abord un Stalwart fonctionnel localement, sans changement système global risqué, pour valider l'image, le volume, l'initialisation et la persistance.
- Reporter la bascule vers les ports mail standards et la mise en production Internet complète à une étape dédiée, car elle implique un changement système ou réseau plus sensible.