- name: install postfix apt: pkg: - postfix - name: install prometheus postfix exporter apt: pkg: - prometheus-postfix-exporter - name: configure prometheus postfix exporter template: src: prometheus-postfix-exporter.j2 dest: /etc/default/prometheus-postfix-exporter owner: root group: root mode: 0644 notify: - restart prometheus-postfix-exporter - name: Install and setup utilities for LDAP when: postfix.ldap.enable block: - name: install utility packages for LDAP auth & config apt: pkg: - postfix-ldap - sasl2-bin - name: Configure saslauthd template: src: saslauthd.conf.j2 dest: /etc/saslauthd.conf owner: root group: root mode: 0644 notify: - restart saslauthd - name: Copy saslauthd defaults copy: src: saslauthd-defaults dest: /etc/default/saslauthd owner: root group: root mode: 0644 notify: - restart saslauthd - name: Copy smtpd.conf copy: src: smtpd.conf dest: /etc/postfix/sasl/smtpd.conf owner: root group: root mode: 0644 notify: - restart postfix - name: Add postfix to sasl group user: name: postfix append: yes groups: sasl notify: - restart postfix - name: remove exim4 package apt: name: exim4 state: absent - name: copy postfix config template: src: "{{ item.src }}" dest: "{{ item.dest }}" owner: root group: root mode: 0644 with_items: - { src: "main.cf.j2", dest: "/etc/postfix/main.cf" } - { src: "master.cf.j2", dest: "/etc/postfix/master.cf" } - { src: "virtual-aliases.cf.j2", dest: "/etc/postfix/virtual-aliases.cf" } - { src: "header_checks.j2", dest: "/etc/postfix/header_checks" } notify: - restart postfix - name: copy postfix maps template: src: maps.j2 dest: "{{ item }}" owner: root group: root mode: 0644 with_items: "{{ postfix.postfixmaps }}" notify: - restart postfix - name: create virtual table template: src: virtual.in.j2 dest: /etc/postfix/virtual.in owner: root group: root mode: 0644 register: create_virtual_table - name: check virtual table db loop: - /etc/postfix/virtual.in - /etc/postfix/virtual.db ansible.builtin.stat: path: '{{ item }}' register: virtual_table_stats - name: update virtual table db when: create_virtual_table.changed or not virtual_table_stats.results[1].stat.exists or virtual_table_stats.results[0].stat.mtime > virtual_table_stats.results[1].stat.mtime ansible.builtin.shell: 'postmap hash:/etc/postfix/virtual.in && mv /etc/postfix/virtual.in.db /etc/postfix/virtual.db' - name: create sender logins table template: src: sender_logins.in.j2 dest: /etc/postfix/sender_logins.in owner: root group: root mode: 0644 register: create_sender_logins_table - name: check sender logins table db loop: - /etc/postfix/sender_logins.in - /etc/postfix/sender_logins.db ansible.builtin.stat: path: '{{ item }}' register: sender_logins_table_stats - name: update sender logins table db when: create_sender_logins_table.changed or not sender_logins_table_stats.results[1].stat.exists or sender_logins_table_stats.results[0].stat.mtime > sender_logins_table_stats.results[1].stat.mtime ansible.builtin.shell: 'postmap hash:/etc/postfix/sender_logins.in && mv /etc/postfix/sender_logins.in.db /etc/postfix/sender_logins.db'