Postfix (edge-mta) faisait verifier chaque mot de passe de soumission par le Dovecot du mailstore, sur :12345. Le client SASL Dovecot de Postfix ne chiffre pas : chaque mot de passe traversait le reseau en clair, et le registre disait ce flux tls. Le flux est supprime, pas chiffre. serveur_postfix pose a cote de lui un Dovecot d'authentification seule (serveur_dovecot/tasks/auth_locale.yml) : coeur + LDAP, aucun protocole, aucun port, joint par private/auth, qui verifie sur l'annuaire en LDAPS. Le 12345 disparait des deux roles et du pare-feu ; serveur_dovecot_sasl_reseau est retire, et une garde arrete l'instance qui le pose encore. Deploye chez les deux locataires ; prouve par un envoi reel chez chacun (sasl_username au journal, remise LMTP, relu par IMAP). test_sasl_local.py garde le changement ; 95 preuves. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
92 lines
5.3 KiB
YAML
92 lines
5.3 KiB
YAML
---
|
|
# Postfix 3.x (Debian 13) — MTA du nœud edge-mta : réception :25, cartes LDAP (domaines,
|
|
# boîtes, alias), remise LMTP réseau vers le nœud mail-store (Dovecot). TLS via step_ca.
|
|
# NE STOCKE AUCUNE BOÎTE. Cf. docs/courriel-conception.md + docs/identite-sso.md.
|
|
|
|
# DEUX MODES, PARCE QU'UN SITE N'A PAS DE BOITES (2026-09-02).
|
|
#
|
|
# `complet` — le serveur de courriel d'un ecosysteme : il RECOIT, resout les
|
|
# destinataires dans l'annuaire LDAP et remet a Dovecot par LMTP. C'est le mode
|
|
# historique, et il reste le defaut.
|
|
#
|
|
# `relais` — le site. Il n'heberge aucune boite et n'a ni annuaire ni magasin : il
|
|
# EXPEDIE, et rien d'autre. C'est ce dont la supervision a besoin pour alerter.
|
|
#
|
|
# POURQUOI CE MODE PLUTOT QU'UN SECOND ROLE : les deux partagent tout ce qui compte —
|
|
# le certificat et sa resynchronisation, la resolution dans le chroot, la validation de
|
|
# la configuration. Un role jumeau aurait duplique ces quatre pieces, et c'est
|
|
# exactement le genre de duplication qui finit par diverger sans qu'on le voie.
|
|
#
|
|
# POURQUOI PAS UN RELAIS SORTANT EXTERNE : le site expedie DIRECTEMENT, par sa
|
|
# frontiere. Emprunter le MTA d'un locataire ferait dependre l'hebergeur d'un
|
|
# ecosysteme qu'il peut outvivre — une emancipation emporterait son alerte avec elle.
|
|
serveur_postfix_mode: "complet"
|
|
|
|
serveur_postfix_paquets:
|
|
- postfix
|
|
- postfix-ldap
|
|
|
|
serveur_postfix_service: "postfix"
|
|
serveur_postfix_domaine: "{{ domaine_interne }}"
|
|
serveur_postfix_nom_hote: "{{ ansible_fqdn | default(ansible_hostname) }}"
|
|
# Réseaux internes de confiance (relais autorisé). À adapter au réseau de l'instance.
|
|
serveur_postfix_reseaux_confiance: "127.0.0.0/8 [::1]/128"
|
|
|
|
# --- Nœud mail-store (Dovecot) : remise LMTP réseau ---
|
|
# OBLIGATOIRE : le FQDN/nom du nœud qui héberge les boîtes (Dovecot LMTP).
|
|
serveur_postfix_mailstore_hote: ""
|
|
serveur_postfix_lmtp_port: 24
|
|
|
|
# --- Soumission :587 (clients authentifiés) ---
|
|
# SASL délégué à un Dovecot d'AUTHENTIFICATION SEULE, sur cette machine, par socket local
|
|
# (`serveur_dovecot/tasks/auth_locale.yml`) ; il vérifie sur l'annuaire en LDAPS. Jusqu'au
|
|
# 2026-10-12, Postfix interrogeait le Dovecot du mailstore sur :12345 — en clair, faute de
|
|
# TLS dans ce protocole.
|
|
# 587 (STARTTLS requis) et 465 (TLS direct) ; seuls les authentifiés relaient. Publics depuis le
|
|
# 2026-09-29 : les clients de courriel y arrivent par l'adresse publique du locataire.
|
|
serveur_postfix_submission_actif: false
|
|
|
|
# --- Annuaire LDAP (validation domaines/boîtes/alias) ---
|
|
# Connexion à l'annuaire (serveur, base, bind_dn, bind_password) : fournie par le rôle partagé
|
|
# resoudre_annuaire (voir tasks/main.yml « Adopter la connexion annuaire »).
|
|
|
|
# --- Milter rspamd (antispam + DKIM) — si rspamd est co-localisé (nœud edge-mta) ---
|
|
serveur_postfix_rspamd_milter: false
|
|
serveur_postfix_rspamd_milter_port: 11332
|
|
|
|
# --- TLS via le certificat d'hôte step_ca (client_pki) ---
|
|
serveur_postfix_tls_actif: true
|
|
serveur_postfix_tls_source_cert: "/etc/step/certs/{{ ansible_fqdn | default(ansible_hostname) }}.crt"
|
|
serveur_postfix_tls_source_cle: "/etc/step/certs/{{ ansible_fqdn | default(ansible_hostname) }}.key"
|
|
serveur_postfix_tls_dir: "/etc/postfix/tls"
|
|
|
|
# TOUT CE QUI TRANSITE EST CHIFFRE, A L'INTERNE COMME A L'EXTERNE (directive du 2026-10-12).
|
|
#
|
|
# Un RELAIS ne parle qu'a des emetteurs de son ecosysteme (la forge) et a des MX distants :
|
|
# il peut EXIGER le TLS des deux cotes. `may` laissait une forge sans STARTTLS remettre en
|
|
# clair, sans que rien ne le dise. Le serveur de courriel COMPLET d'un locataire reste en
|
|
# `may` pour l'instant : un MX public qui exige le TLS refuse le courrier des serveurs qui ne
|
|
# l'offrent pas (RFC 3207) — c'est une decision de l'Etape B, pas un reglage par defaut.
|
|
serveur_postfix_tls_entrant: "{{ 'encrypt' if serveur_postfix_mode == 'relais' else 'may' }}"
|
|
# EN SORTIE, LE RELAIS VERIFIE AUSSI QUI IL JOINT (2026-10-12) : `encrypt` chiffrait vers un
|
|
# serveur dont il ne verifiait pas l'identite (« Untrusted » au journal). Il n'ecrit qu'a
|
|
# quelques destinataires connus ; un MX au certificat invalide fait refuser le message au lieu
|
|
# de le livrer, et c'est voulu. Mesure avant : mx.chezlepro.ca et Gmail « Verified ».
|
|
serveur_postfix_tls_sortant: "{{ 'verify' if serveur_postfix_mode == 'relais' else 'may' }}"
|
|
# Les autorites PUBLIQUES du systeme : celles des MX de l'Internet, pas celle de l'ecosysteme.
|
|
# UN FICHIER, PAS UN DOSSIER : `smtp` tourne en chroot ; `CAfile` est lu AVANT d'y entrer,
|
|
# `CApath` dedans — sur une copie que Debian refait au redemarrage, et qui vieillit entre deux.
|
|
serveur_postfix_tls_ca_publiques: "/etc/ssl/certs/ca-certificates.crt"
|
|
# Une ligne par session TLS au journal : ce qui se dit chiffre doit pouvoir se MESURER.
|
|
serveur_postfix_tls_journal: 1
|
|
|
|
# Zero-confiance : verifier le TLS de la livraison LMTP vers Dovecot (cert step-ca).
|
|
serveur_postfix_lmtp_tls_verify: false
|
|
serveur_postfix_lmtp_tls_cafile: "/etc/step/certs/root_ca.crt"
|
|
|
|
# --- Sonde de supervision -----------------------------------------------------------
|
|
# UN COURRIEL EN ATTENTE N'EST PAS UNE PANNE — un relais distant momentanement muet suffit
|
|
# a en garder quelques-uns. C'est l'ACCUMULATION qui parle. Les seuils sont bas parce que
|
|
# cet ecosysteme n'emet presque rien : dix messages en attente y sont deja anormaux.
|
|
serveur_postfix_sonde_avert: 10
|
|
serveur_postfix_sonde_crit: 50
|