diff --git a/CHANGELOG.md b/CHANGELOG.md index 9656a20..34f9ec0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,14 @@ mis à jour. Réévaluer Stalwart ~2028. ### Ajouté +- **Flux courriel interne PROUVÉ de bout en bout (Étape A).** Envoi → Postfix (`edge-mta`, + validation LDAP) → LMTP réseau → Dovecot (mail-store) → boîte Maildir → **lu en IMAP** + (auth LDAP, TLS step_ca) : `status=sent`, message lu (sujet + corps). Réglages Dovecot 2.4 + qui débloquent la remise LMTP : `userdb static { static_allow_all_users = yes }` (sinon + NOTFOUND pour l'expéditeur/raw-mail-user externe), `mail_inbox_path =` vidé (le défaut mbox + `/var/mail` root refusait l'autocréation de l'INBOX), Maildir explicite (`mail_home` + + `mail_path = %{home}/Maildir`), chemin par nom d'utilisateur (home identique côté LMTP + local-part et IMAP adresse complète ; mono-domaine, multi-domaine = raffinement Étape B). - **Rôle `serveur_postfix` (Postfix 3.x) — MTA du nœud edge-mta.** Réception `:25`, cartes **LDAP** (validation des boîtes via l'attribut `mail`), remise **LMTP réseau** vers le nœud mail-store Dovecot (`virtual_transport = lmtp:inet:[…]:24`), TLS via **step_ca** (pont de diff --git a/roles/serveur_dovecot/defaults/main.yml b/roles/serveur_dovecot/defaults/main.yml index bd8db77..ea9e346 100644 --- a/roles/serveur_dovecot/defaults/main.yml +++ b/roles/serveur_dovecot/defaults/main.yml @@ -15,8 +15,10 @@ serveur_dovecot_vmail_utilisateur: "vmail" serveur_dovecot_vmail_uid: 5000 serveur_dovecot_vmail_gid: 5000 serveur_dovecot_vmail_base: "/var/vmail" -# Maildir par domaine/utilisateur (variables 2.4). -serveur_dovecot_mail_path: "{{ serveur_dovecot_vmail_base }}/%{user | domain}/%{user | username}" +# Maildir par utilisateur. Nom d'utilisateur seul → chemin IDENTIQUE pour la remise LMTP +# (destinataire local-part) et l'accès IMAP (adresse complète). Mono-domaine ; pour du +# multi-domaine il faudra préserver le domaine des deux côtés (raffinement Étape B). +serveur_dovecot_mail_path: "{{ serveur_dovecot_vmail_base }}/%{user | username}" # --- Annuaire/auth LDAP (vers serveur_openldap) --- serveur_dovecot_ldap_uris: "ldaps://id-ldap-01.{{ domaine_interne }}:636" diff --git a/roles/serveur_dovecot/templates/99-setops.conf.j2 b/roles/serveur_dovecot/templates/99-setops.conf.j2 index 95518fe..4304f61 100644 --- a/roles/serveur_dovecot/templates/99-setops.conf.j2 +++ b/roles/serveur_dovecot/templates/99-setops.conf.j2 @@ -8,9 +8,14 @@ protocols { # --- Stockage Maildir (boîtes virtuelles) --- mail_driver = maildir -mail_path = {{ serveur_dovecot_mail_path }} +mail_home = {{ serveur_dovecot_mail_path }} +mail_path = %{home}/Maildir +# L'INBOX vit dans le Maildir (pas le /var/mail mbox par défaut de 2.4, root → refusé). +mail_inbox_path = first_valid_uid = {{ serveur_dovecot_vmail_uid }} first_valid_gid = {{ serveur_dovecot_vmail_gid }} +# Garder l'adresse complète (user@domaine) comme identité — domaines virtuels. +auth_username_format = %{user} # --- TLS (certificat step_ca, via le pont) --- ssl = required @@ -30,6 +35,9 @@ passdb ldap { ldap_bind = yes } userdb static { + # Répond pour TOUT utilisateur sans exiger un passdb (requis pour la remise LMTP, + # y compris le contexte expéditeur/raw-mail-user qui n'est pas dans l'annuaire). + static_allow_all_users = yes fields { uid = {{ serveur_dovecot_vmail_utilisateur }} gid = {{ serveur_dovecot_vmail_utilisateur }}