Le deploiement depuis ops-01 passe de 3 plays a 21 : douze machines sur quinze
deployees completement. Deux defauts restaient.
UN PORT SYMBOLIQUE ECRIT TEL QUEL.
/etc/nftables.conf:36: Could not resolve service: Servname not supported
ip saddr { ... } udp dport derive accept # serveur_powerdns
`port: derive` dit que le port depend du deploiement. Le devis de la frontiere le
resout depuis le 2026-08-25 ; le generateur nftables ecrivait le mot, et nft
refusait TOUT le fichier. Il resout desormais par le plan et n emet rien quand il
ne peut pas, en le DISANT — un flux tu en silence est une porte qu on croit
ouverte. Verifie que ca ne ferme rien : infra-dns-01 garde son 53 par
serveur_resolveur, et l omission de PowerDNS est juste puisqu il ecoute en loopback
derriere lui.
LA VALIDATION NE POSE PAS LA MEME QUESTION QUE L EMISSION. Ma premiere garde
refusait tout port non numerique et a fait echouer P09, qui valide les roles HORS
instance — la ou derive est legitime. PORTS_SYMBOLIQUES nomme le vocabulaire : le
mot passe a la validation, jamais dans un fichier, et un mot inconnu reste refuse
des deux cotes.
RECHARGER N APPLIQUE PAS UN CHANGEMENT D ECOUTE, deuxieme fois.
warning: to change inet_protocols, stop and start Postfix
fatal: :::submission: Address family for hostname not supported
main.cf porte inet_protocols, que Postfix refuse de changer a chaud. Le master garde
all, tente d ouvrir :::submission en IPv6 et meurt — APRES avoir accepte une
configuration valide. postfix check ne dit rien parce que la configuration EST
valide : c est la transition qui ne l est pas. Meme famille que nginx. main.cf
notifie desormais le redemarrage.
Diagnostic corrige en chemin : j ai d abord accuse postfix@-.service, dont
l assertion echouait — c est moi qui l avais declenche par un demarrage manuel,
postfix.service le declare en Conflicts.
make verifier : vert. make prouver : CONFORME, 55 OK, 0 echec, 0 saute.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019f91zs9SDdwSzL2CVei6on
|
||
|---|---|---|
| .. | ||
| defaults | ||
| handlers | ||
| meta | ||
| tasks | ||
| templates | ||
| README.md | ||
serveur_postfix
MTA : Postfix 3.x (Debian 13) sur le nœud edge-mta — réception SMTP :25, cartes LDAP
(domaines, boîtes, alias), remise LMTP réseau vers le mailstore (serveur_dovecot).
Ne stocke aucune boîte. Cf. docs/courriel-conception.md.
Rôle
- Préconfigure Postfix par debconf (installation non interactive), installe
postfix+postfix-ldap. - Chroot : recopie
/etc/hostsdans/var/spool/postfix/etc/— le MTA hérite du plancher de résolution (hosts_statiques), sinon il ne résout aucun nom interne. - TLS : pont de certificat step_ca (
client_pki) — scriptsetops-postfix-cert-sync- unités
.service/.path, recharge Postfix à chaque renouvellement.
- unités
- Annuaire : connexion fournie par
resoudre_annuaire; carteldap-mailboxes.cf(validation des destinataires contre LDAP). - Soumission
:587optionnelle, avec SASL délégué à Dovecot (passdb LDAP). - Valide la configuration (
postfix check) avant d'activer le service.
Liaisons (meta/liens.yml)
Le rôle accepte deux liens déclarés côté application dans plan/applications.yml :
| Lien | Effet |
|---|---|
mailstore |
Injecte serveur_postfix_mailstore_hote = FQDN de la cible (Dovecot LMTP) |
milter |
Passe serveur_postfix_rspamd_milter à true (rspamd co-localisé) |
C'est le sens « app→app », résolu par scripts/instancier.py. Cf.
docs/bindings-conception.md.
Variables principales
| Variable | Défaut | Rôle |
|---|---|---|
serveur_postfix_mailstore_hote |
(vide — obligatoire) | Nœud Dovecot, normalement injecté par le lien mailstore |
serveur_postfix_lmtp_port |
24 |
LMTP vers le mailstore |
serveur_postfix_reseaux_confiance |
127.0.0.0/8 [::1]/128 |
mynetworks (relais autorisé) |
serveur_postfix_submission_actif |
false |
Soumission :587 (SASL Dovecot) |
serveur_postfix_rspamd_milter |
false |
Milter antispam/DKIM co-localisé |
serveur_postfix_lmtp_tls_verify |
false |
Zéro-confiance : vérifier le certificat du mailstore |
Flux (meta/flux.yml)
25/tcp entrant (externe + client_smtp) · 587/tcp soumission (flotte) ·
24/tcp → Dovecot (TLS vérifié) · 12345/tcp → Dovecot (SASL) ·
11332/tcp → rspamd local · 636/tcp → OpenLDAP · 25/tcp sortant (MX distants).
Notes / limites
- Le rôle exige
serveur_postfix_mailstore_hote(assertion) : pas de remise locale, la remise finale appartient au mailstore. C'est la scission edge-mta / mail-store. serveur_postfix_reseaux_confianceest à adapter au réseau de l'instance — laissé au strict minimum par défaut.serveur_postfix_lmtp_tls_verify: truedemande que la racine step_ca soit lisible (/etc/step/certs/root_ca.crt, posée en0644parclient_pki).- La frontière publique (MX, SPF/DKIM/DMARC publics, filtrage entrant) relève de l'OPNsense — Étape B, hors flotte Ansible.
Prérequis
serveur_postfix requiert serveur_dovecot actif(docs/dependances-groupes.yml).client_pkiappliqué sur le nœud.