Aller au contenu

Trace install tas - Stalwart

De Loic Wiki
Version datée du 3 mai 2026 à 20:40 par Daneel (discussion | contributions) (Mise à jour Stalwart: ports locaux, étapes de configuration mail et état de réception externe)
(diff) ← Version précédente | Version actuelle (diff) | Version suivante → (diff)

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 lololand.org.
  • Image utilisée: docker.io/stalwartlabs/stalwart:latest.
  • État actuel: service fonctionnel en local sur ports non privilégiés, authentification testée avec succès depuis Thunderbird, mais réception Internet pas encore activée.

Source de vérité

  • Quadlet: /home/loic/.config/containers/systemd/stalwart.container
  • Configuration Stalwart: /home/loic/stalwart-data/etc/config.toml
  • Données: /home/loic/stalwart-data/data
  • Logs: /home/loic/stalwart-data/logs
  • Sauvegarde config 2026-05-03: /home/loic/backups/stalwart-config.toml.bak.2026-05-03T09:08:08+02:00
  • Sauvegarde quadlet 2026-05-03: /home/loic/backups/stalwart.container.bak.2026-05-03T09:15:01+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/etc:/etc/stalwart:Z
Volume=/home/loic/stalwart-data/data:/var/lib/stalwart:Z
Volume=/home/loic/stalwart-data/logs:/var/log/stalwart:Z
PublishPort=1025:25
PublishPort=1465:465
PublishPort=1587:587
PublishPort=1143:143
PublishPort=1993:993
PublishPort=1110:110
PublishPort=1995:995
PublishPort=14190:4190
PublishPort=18080:8080
PublishPort=18443:443

[Service]
Restart=always
TimeoutStartSec=180

[Install]
WantedBy=default.target

Listeners internes configurés

SMTP      : 25
Submission: 587
SMTPS     : 465
IMAP      : 143
IMAPS     : 993
POP3      : 110
POP3S     : 995
Sieve     : 4190
HTTP      : 8080
HTTPS     : 443

Cartographie des ports

Usage Port local sur tas Port interne conteneur Exposition publique actuelle Remarques
SMTP entrant 1025 25 aucune cible future pour la réception Internet via redirection TCP 25
SMTPS client 1465 465 aucune test utilisateur validé avec authentification
Submission client 1587 587 aucune alternative client authentifiée
IMAP 1143 143 aucune accès local uniquement
IMAPS 1993 993 aucune lecture sécurisée locale
POP3 1110 110 aucune non prioritaire
POP3S 1995 995 aucune non prioritaire
ManageSieve 14190 4190 aucune optionnel
Admin HTTP 18080 8080 aucune interface web locale
Admin HTTPS 18443 443 aucune interface web locale

Vérifications réalisées

  • Le service écoute bien localement sur 1025, 1465, 1587 et 1993.
  • Test HTTP local validé sur http://127.0.0.1:18080/.
  • Test d'envoi fiable validé depuis Thunderbird via 127.0.0.1:1465 avec authentification du compte et acceptation du certificat local.
  • Les logs Stalwart montrent un flux sain sur le listener submissions et une classification message-ingest.ham lors d'un envoi authentifié.
  • Les tests directs sur 127.0.0.1:1025 acceptent bien le SMTP entrant local, mais ce chemin peut être classé spam dans les logs pour des tests non authentifiés.

Procédure de récupération admin (incident 2026-05-03)

  • L'ancien authentication.fallback-admin dans config.toml ne suffisait plus pour l'interface web après mise à jour/redémarrage.
  • Procédure ayant fonctionné sur Stalwart 0.16:
    • ajouter temporairement STALWART_RECOVERY_ADMIN=recovery:<mot_de_passe> dans le quadlet
    • systemctl --user daemon-reload
    • systemctl --user restart stalwart.service
    • recréer ou réparer un vrai compte admin dans l'interface
    • retirer ensuite STALWART_RECOVERY_ADMIN du quadlet et redémarrer le service
  • Sauvegarde avant retrait de la variable de recovery: /home/loic/backups/stalwart.container.remove-recovery.bak.2026-05-03T10:16:14+02:00

Étapes de configuration recommandées pour recevoir loic@lololand.org

1. Configuration Stalwart

  • Créer ou vérifier le domaine lololand.org dans l'interface d'administration.
  • Créer la boîte ou l'alias loic@lololand.org.
  • Vérifier que l'authentification fonctionne en local avec:
    • SMTP client: 127.0.0.1:1465
    • IMAPS: 127.0.0.1:1993
  • Conserver les ports élevés locaux dans le conteneur rootless; l'exposition Internet doit se faire par redirection TCP devant le service.

2. Configuration réseau / exposition SMTP

  • Le conteneur rootless ne peut pas publier directement les ports privilégiés 25/465/587/993.
  • Pour la réception Internet, il faut au minimum faire arriver le TCP/25 public vers tas, puis vers 127.0.0.1:1025.
  • Deux familles d'approche:
    • redirection routeur + redirection hôte/firewall vers 1025
    • ou proxy TCP dédié en frontal
  • Important: Caddy standard sert de reverse proxy HTTP/HTTPS; il ne traite pas SMTP/IMAP sans module TCP/L4 additionnel.

3. DNS à corriger avant bascule

  • mail.lololand.org A 82.67.187.157 est déjà présent.
  • Les MX actuels de lololand.org pointent d'abord chez OVH, puis seulement vers mail.lololand.org.
  • Pour faire de Stalwart le serveur recevant les mails du domaine, prévoir une bascule vers un MX principal du type:
    • lololand.org. MX 10 mail.lololand.org.
  • Publier ensuite les enregistrements SPF, DKIM et DMARC générés/confirmés côté Stalwart.
  • Vérifier aussi le PTR/rDNS de l'IP publique si possible.

4. Ordre de bascule prudent

  1. valider le compte loic@lololand.org en local
  2. faire la redirection réseau du port public 25 vers Stalwart
  3. tester depuis une source externe vers mail.lololand.org:25
  4. seulement ensuite modifier le MX principal du domaine
  5. refaire un test réel d'envoi depuis l'extérieur vers loic@lololand.org

Limites et points de vigilance

  • Tant que le MX principal reste chez OVH, les mails extérieurs arriveront d'abord chez OVH et pas directement sur Stalwart.
  • Tant que rien n'écoute ou ne redirige le port 25 public vers 1025, Stalwart ne peut pas recevoir de mail Internet.
  • Les tests SMTP sortants vers des MX publics sur le port 25 ont déjà time-out; un relay SMTP restera probablement nécessaire pour l'émission Internet fiable.
  • Si une terminaison TLS publique est ajoutée pour les ports mail, elle doit être faite en mode TCP passthrough ou avec un frontal explicitement conçu pour ces protocoles.

Relance et diagnostic

  • Redémarrer: systemctl --user restart stalwart.service
  • Statut: systemctl --user status stalwart.service
  • Logs systemd user: journalctl --user -u stalwart.service -n 200 --no-pager
  • Logs conteneur: podman logs --tail 200 stalwart
  • Vérifier les ports: ss -ltn | egrep ':(1025|1110|1143|1465|1587|1993|1995|14190|18080|18443)\\s

Décision retenue à date

  • Conserver Stalwart en Podman rootless avec ports élevés locaux.
  • Préparer la réception Internet par une redirection réseau explicite et réversible, plutôt qu'en abaissant globalement net.ipv4.ip_unprivileged_port_start.
  • Documenter séparément les variantes de frontalisation possibles (routeur + firewall hôte, ou Caddy avec module layer4 si retenu).