« Trace install tas - Stalwart » : différence entre les versions
Apparence
Documentation Stalwart ajoutée: déploiement Podman rootless, vérifications locales, limites ports privilégiés et DNS |
Mise à jour Stalwart: ports locaux, étapes de configuration mail et état de réception externe |
||
| Ligne 3 : | Ligne 3 : | ||
== Vue d'ensemble == | == Vue d'ensemble == | ||
* Service mail tout-en-un ''Stalwart'' déployé sur ''tas'' via Podman rootless et Quadlet systemd user. | * 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 | * 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''. | * Image utilisée: ''docker.io/stalwartlabs/stalwart:latest''. | ||
* État actuel: service fonctionnel en local sur ports non privilégiés, mais pas encore | * É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é == | == Source de vérité == | ||
* Quadlet: ''/home/loic/.config/containers/systemd/stalwart.container'' | * Quadlet: ''/home/loic/.config/containers/systemd/stalwart.container'' | ||
* Données | * Configuration Stalwart: ''/home/loic/stalwart-data/etc/config.toml'' | ||
* Sauvegarde | * 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 == | == Configuration Quadlet actuelle == | ||
| Ligne 23 : | Ligne 26 : | ||
ContainerName=stalwart | ContainerName=stalwart | ||
AutoUpdate=registry | AutoUpdate=registry | ||
Volume=/home/loic/stalwart-data:/ | 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=1465:465 | ||
PublishPort=1587:587 | PublishPort=1587:587 | ||
| Ligne 31 : | Ligne 37 : | ||
PublishPort=1995:995 | PublishPort=1995:995 | ||
PublishPort=14190:4190 | PublishPort=14190:4190 | ||
PublishPort= | PublishPort=18080:8080 | ||
PublishPort= | PublishPort=18443:443 | ||
[Service] | [Service] | ||
| Ligne 42 : | Ligne 48 : | ||
</pre> | </pre> | ||
== | == Listeners internes configurés == | ||
<pre> | |||
SMTP : 25 | |||
Submission: 587 | |||
SMTPS : 465 | |||
IMAP : 143 | |||
IMAPS : 993 | |||
POP3 : 110 | |||
POP3S : 995 | |||
Sieve : 4190 | |||
HTTP : 8080 | |||
HTTPS : 443 | |||
</pre> | |||
== Cartographie des ports == | |||
{| class="wikitable" | |||
! 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 == | == Vérifications réalisées == | ||
* Le | * 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. | ||
* Pour | * 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 === | ||
# valider le compte ''loic@lololand.org'' en local | |||
# faire la redirection réseau du port public ''25'' vers Stalwart | |||
# tester depuis une source externe vers ''mail.lololand.org:25'' | |||
# seulement ensuite modifier le MX principal du domaine | |||
# 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. | ||
* Les | * 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 == | == Relance et diagnostic == | ||
* Redémarrer: ''systemctl --user restart stalwart.service'' | * Redémarrer: ''systemctl --user restart stalwart.service'' | ||
* | * Statut: ''systemctl --user status stalwart.service'' | ||
* Vérifier les ports: ''ss -ltn | egrep ':(1110|1143|1465|1587|1993|1995| | * 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 == | == 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). | |||
Dernière version du 3 mai 2026 à 20:40
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
- valider le compte loic@lololand.org en local
- faire la redirection réseau du port public 25 vers Stalwart
- tester depuis une source externe vers mail.lololand.org:25
- seulement ensuite modifier le MX principal du domaine
- 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).