--- - name: Exiger le mot de passe de bind LDAP (Vault) ansible.builtin.assert: that: - serveur_postfix_ldap_bind_password | length > 0 fail_msg: "serveur_postfix_ldap_bind_password requis (via Ansible Vault, ex. vault_openldap_admin)." - name: Exiger le nœud mail-store (remise LMTP) ansible.builtin.assert: that: - serveur_postfix_mailstore_hote | length > 0 fail_msg: "serveur_postfix_mailstore_hote requis (FQDN du nœud Dovecot qui héberge les boîtes)." - name: Installer debconf-utils (requis par le module debconf) ansible.builtin.apt: name: debconf-utils state: present update_cache: true cache_valid_time: 3600 - name: Préconfigurer Postfix (debconf, installation non interactive) ansible.builtin.debconf: name: postfix question: "{{ item.question }}" vtype: "{{ item.vtype }}" value: "{{ item.value }}" loop: - { question: "postfix/main_mailer_type", vtype: "select", value: "Internet Site" } - { question: "postfix/mailname", vtype: "string", value: "{{ serveur_postfix_domaine }}" } loop_control: label: "{{ item.question }}" - name: Installer Postfix ansible.builtin.apt: name: "{{ serveur_postfix_paquets }}" state: present update_cache: true - name: Assurer le répertoire etc du chroot Postfix ansible.builtin.file: path: /var/spool/postfix/etc state: directory owner: root group: root mode: "0755" - name: Fournir la résolution de noms au chroot Postfix (plancher /etc/hosts) ansible.builtin.copy: src: "{{ item }}" dest: "/var/spool/postfix{{ item }}" remote_src: true owner: root group: root mode: "0644" loop: - /etc/hosts - /etc/resolv.conf - /etc/nsswitch.conf - /etc/services notify: Recharger postfix # --- Pont de certificat step_ca (déposé par client_pki) --- - name: TLS — créer le répertoire des certificats ansible.builtin.file: path: "{{ serveur_postfix_tls_dir }}" state: directory owner: root group: root mode: "0755" when: serveur_postfix_tls_actif | bool - name: TLS — déployer le script de synchronisation du certificat ansible.builtin.template: src: setops-postfix-cert-sync.sh.j2 dest: /usr/local/sbin/setops-postfix-cert-sync owner: root group: root mode: "0755" when: serveur_postfix_tls_actif | bool - name: TLS — déployer les unités de synchronisation (service + path) ansible.builtin.template: src: "{{ item.s }}" dest: "{{ item.d }}" owner: root group: root mode: "0644" loop: - { s: "setops-postfix-cert-sync.service.j2", d: "/etc/systemd/system/setops-postfix-cert-sync.service" } - { s: "setops-postfix-cert-sync.path.j2", d: "/etc/systemd/system/setops-postfix-cert-sync.path" } loop_control: label: "{{ item.d | basename }}" when: serveur_postfix_tls_actif | bool - name: TLS — synchroniser le certificat maintenant ansible.builtin.command: /usr/local/sbin/setops-postfix-cert-sync changed_when: false when: - serveur_postfix_tls_actif | bool - not ansible_check_mode - name: TLS — activer la surveillance du certificat (renouvellement) ansible.builtin.systemd: name: setops-postfix-cert-sync.path enabled: true state: started daemon_reload: true when: - serveur_postfix_tls_actif | bool - not ansible_check_mode - name: TLS — vérifier que le certificat est en place ansible.builtin.stat: path: "{{ serveur_postfix_tls_dir }}/cert.pem" register: serveur_postfix_cert when: serveur_postfix_tls_actif | bool - name: TLS — exiger le certificat (intégration client_pki requise sur ce nœud) ansible.builtin.assert: that: - serveur_postfix_cert.stat.exists | default(false) fail_msg: >- Aucun certificat step_ca ({{ serveur_postfix_tls_source_cert }}). Le nœud Postfix doit porter l'intégration client_pki. Déploie-la, puis relance. when: - serveur_postfix_tls_actif | bool - not ansible_check_mode # --- Configuration --- - name: Déployer la carte LDAP des boîtes ansible.builtin.template: src: ldap-mailboxes.cf.j2 dest: /etc/postfix/ldap-mailboxes.cf owner: root group: postfix mode: "0640" no_log: true # contient le mot de passe de bind LDAP notify: Recharger postfix - name: Déployer main.cf ansible.builtin.template: src: main.cf.j2 dest: /etc/postfix/main.cf owner: root group: root mode: "0644" notify: Recharger postfix - name: Valider la configuration Postfix ansible.builtin.command: postfix check changed_when: false when: not ansible_check_mode - name: Activer et démarrer Postfix when: not ansible_check_mode ansible.builtin.systemd: name: "{{ serveur_postfix_service }}" enabled: true state: started daemon_reload: true