Set-OPS-Public/roles/serveur_dovecot/templates/auth-locale.conf.j2
Daniel Allaire 63f5fda091 courriel : les mots de passe de soumission ne quittent plus la machine de Postfix
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>
2026-10-12 11:26:18 -04:00

43 lines
1.8 KiB
Django/Jinja

# Géré par Set-OPS (rôle serveur_dovecot, authentification locale). Ne pas éditer à la main.
# Syntaxe Dovecot 2.4.
{#
AUTHENTIFICATION SEULE, A COTE DE POSTFIX (2026-10-12).
Postfix confiait la verification des mots de passe de soumission a la machine des
boites, par `smtpd_sasl_path = inet:<mailstore>:12345`. Le client SASL Dovecot de
Postfix ne sait pas chiffrer : chaque mot de passe traversait le reseau en clair, et le
registre le disait `tls`. Directive du 2026-10-12 : tout transit chiffre.
On ne chiffre pas ce flux, on le supprime. Ce Dovecot-ci ne sert ni IMAP ni LMTP (aucun
paquet de protocole n'est installe) et n'ecoute AUCUN port : Postfix lui parle par un
socket local, et il verifie le mot de passe sur l'annuaire en LDAPS — le chemin que
Postfix emprunte deja sur cette machine. Le mot de passe ne voyage plus que dans TLS.
Eprouve sur banc Debian 13 avant d'ecrire le role : processus `dovecot`, `auth`,
`anvil`, `log`, `config` seulement ; 235 avec le bon mot de passe, 535 avec un faux,
AUTH non offert hors TLS.
#}
dovecot_config_version = 2.4.0
# Garder l'adresse complète (user@domaine) comme identité — domaines virtuels.
auth_username_format = %{user}
auth_mechanisms = plain login
ldap_uris = {{ serveur_dovecot_ldap_uris }}
ldap_base = {{ serveur_dovecot_ldap_base }}
ldap_auth_dn = {{ serveur_dovecot_ldap_bind_dn }}
ldap_auth_dn_password = {{ serveur_dovecot_ldap_bind_password }}
{# Le meme passdb que la machine des boites : une identite, un mot de passe, une regle.
Pas de userdb : une verification SASL n'en consulte aucun. #}
passdb ldap {
ldap_filter = {{ serveur_dovecot_ldap_filter }}
ldap_bind = yes
}
service auth {
unix_listener {{ serveur_dovecot_postfix_socket_dir }}/auth {
user = postfix
group = postfix
mode = 0660
}
}