Some checks are pending
verifier / verifier (push) Waiting to run
Le site a son temoin : site-mon-01 (VLAN 36) porte PostgreSQL, Icinga et un relais. Le depot lui rapporte, et son premier verdict fut un vrai defaut — site-mon-01 n avait jamais depose son propre etat. Les trois sont au vert. serveur_backup_verification_locale repasse a true sur le depot : le drapeau ne dit plus on renonce mais verifie ce que tu peux ouvrir . La liste des noeuds attendus derive de l inventaire ou tourne le role, donc du site seul. serveur_postfix gagne un mode relais : un site n heberge aucune boite, il expedie. Directement par sa frontiere — emprunter le MTA d un locataire ferait dependre l hebergeur d un ecosysteme qu il peut outvivre. LA PANNE DE FOND : le modele de routes OPNsense lit enabled ; on lui envoyait disabled=0, un champ ignore. enabled restait a son defaut, ETEINT. Chaque route creee par Set-OPS depuis l origine l etait desactivee — invisible, parce qu une route eteinte EXISTE dans le modele et compte posee . Le rechargement lance pour activer la nouvelle patte a fait reprendre au noyau sa table depuis le modele : 14 routes sur 15 disparues, 11 machines de Chezlepro injoignables le lendemain de sa reconstruction, et le devis toujours vert. Trois corrections empilees : la cause (enabled), la cecite (le plan lit la table du NOYAU et signale absent ou eteint), l inaction (la reconfiguration ne se declenchait que sur un changement du modele). Aussi : un role du site peut enfin en appeler un autre a travers la frontiere — le devis traitait tout pair nomme comme l exterieur . Et nftables_admin_ssh se DERIVE de la carte : recopie a la main, il retardait d une zone, et m a verrouille dehors de la machine que je venais de creer. Reste ouvert : le destinataire des alertes est encore root@localhost. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019f91zs9SDdwSzL2CVei6on
64 lines
2.7 KiB
Django/Jinja
64 lines
2.7 KiB
Django/Jinja
# Géré par Set-OPS (rôle serveur_postfix). Ne pas éditer à la main.
|
|
compatibility_level = 3.6
|
|
myhostname = {{ serveur_postfix_nom_hote }}
|
|
mydomain = {{ serveur_postfix_domaine }}
|
|
myorigin = $mydomain
|
|
inet_interfaces = all
|
|
inet_protocols = ipv4
|
|
biff = no
|
|
append_dot_mydomain = no
|
|
readme_directory = no
|
|
smtpd_banner = $myhostname ESMTP
|
|
mynetworks = {{ serveur_postfix_reseaux_confiance }}
|
|
|
|
# Aucune remise locale : ce MTA ne fait QUE des boîtes virtuelles (via LDAP + LMTP).
|
|
mydestination =
|
|
local_recipient_maps =
|
|
|
|
{% if serveur_postfix_mode == 'relais' %}
|
|
{# UN RELAIS N'HEBERGE RIEN, IL EXPEDIE.
|
|
Pas de domaine virtuel, pas de carte LDAP, pas de remise LMTP : il n'y a aucune
|
|
boite ici. Ce qu'il faut, c'est que la supervision puisse SORTIR une alerte, et
|
|
qu'elle sorte au nom du SITE — pas d'un locataire. #}
|
|
relayhost =
|
|
{# `mynetworks` seul decide qui peut faire relayer : la loopback, donc les services de
|
|
cette machine, et rien d'autre. Un relais ouvert est repere et exploite en heures. #}
|
|
smtpd_relay_restrictions = permit_mynetworks, reject_unauth_destination
|
|
{% else %}
|
|
# --- Boîtes virtuelles : validation LDAP + remise LMTP vers le nœud mail-store (Dovecot) ---
|
|
virtual_mailbox_domains = {{ serveur_postfix_domaine }}
|
|
virtual_mailbox_maps = ldap:/etc/postfix/ldap-mailboxes.cf
|
|
virtual_transport = lmtp:inet:[{{ serveur_postfix_mailstore_hote }}]:{{ serveur_postfix_lmtp_port }}
|
|
# Résolution via le plancher /etc/hosts (indépendant du DNS) pour la remise interne.
|
|
lmtp_host_lookup = native
|
|
{% endif %}
|
|
|
|
{% if serveur_postfix_tls_actif %}
|
|
# --- TLS (certificat step_ca) ---
|
|
smtpd_tls_cert_file = {{ serveur_postfix_tls_dir }}/cert.pem
|
|
smtpd_tls_key_file = {{ serveur_postfix_tls_dir }}/key.pem
|
|
smtpd_tls_security_level = may
|
|
smtpd_tls_protocols = >=TLSv1.2, !SSLv2, !SSLv3
|
|
smtp_tls_security_level = may
|
|
{% if serveur_postfix_lmtp_tls_verify | default(false) %}
|
|
# Zero-confiance : livraison LMTP vers Dovecot chiffree ET verifiee (cert step-ca).
|
|
# `wrappermode` = TLS des la connexion : c'est ce que sait offrir un `inet_listener`
|
|
# Dovecot. Sans lui, Postfix tentait STARTTLS sur un port qui ne le propose pas, et
|
|
# la poignee de main expirait au bout de 300 s — livraison differee en silence.
|
|
lmtp_tls_wrappermode = yes
|
|
lmtp_tls_security_level = verify
|
|
lmtp_tls_CAfile = {{ serveur_postfix_lmtp_tls_cafile }}
|
|
{% endif %}
|
|
{% endif %}
|
|
|
|
{% if serveur_postfix_rspamd_milter %}
|
|
# --- Milter rspamd (antispam + signature DKIM), co-localisé sur edge-mta ---
|
|
smtpd_milters = inet:localhost:{{ serveur_postfix_rspamd_milter_port }}
|
|
non_smtpd_milters = $smtpd_milters
|
|
milter_protocol = 6
|
|
milter_default_action = accept
|
|
{% endif %}
|
|
|
|
# --- Restrictions de base ---
|
|
smtpd_helo_required = yes
|
|
smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination
|