--- - name: Install Postfix ansible.builtin.package: name: postfix state: present notify: - Restart Postfix - name: Create /usr/local/etc/mail ansible.builtin.file: path: /usr/local/etc/mail state: directory owner: root group: wheel mode: '0755' - name: Install Postfix mailer.conf ansible.builtin.copy: dest: /usr/local/etc/mail/mailer.conf src: /usr/local/share/postfix/mailer.conf.postfix remote_src: true owner: root group: wheel mode: '0644' - name: Disable sendmail sysrc: name: sendmail_enable value: NONE - name: Make sure sendmail is stopped ansible.builtin.service: name: sendmail state: stopped - name: Disable sendmail periodic tasks ansible.builtin.lineinfile: path: /etc/periodic.conf owner: root group: wheel mode: '0444' regexp: '^{{ item }}=' line: '{{ item }}="NO"' with_items: '{{ sendmail_periodic }}' - name: Add /var/log/postfix to fstab ansible.posix.mount: path: /var/log/postfix src: tmpfs fstype: tmpfs opts: 'rw,size={{ postfix_log_size }},mode={{ postfix_log_mode }},uid={{ postfix_log_uid }},gid={{ postfix_log_gid }},late' state: mounted - name: Create Postfix service directories ansible.builtin.file: path: '{{ s6_etc_dir }}/service/{{ item }}' state: directory owner: root group: wheel mode: '0755' with_items: '{{ postfix_service_dirs }}' - name: Generate Postfix service scripts ansible.builtin.template: dest: '{{ s6_etc_dir }}/service/{{ item }}' src: '{{ item }}.j2' mode: '0555' owner: root group: wheel with_items: '{{ postfix_service_scripts }}' notify: - Reload s6-rc - Restart Postfix - name: Generate Postfix service configuration ansible.builtin.copy: dest: '{{ s6_etc_dir }}/service/{{ item.name }}' content: '{{ item.content }}' mode: '0444' owner: root group: wheel loop_control: label: '{{ item.name }} = {{ item.content }}' notify: - Reload s6-rc - Restart Postfix with_items: '{{ postfix_service_config }}' - name: Generate Postfix maps ansible.builtin.template: dest: '/usr/local/etc/postfix/{{ item.name }}' src: '{{ item.name }}.j2' mode: '0444' owner: root group: wheel with_items: '{{ postfix_maps }}' notify: - Rebuild Postfix maps - Reload Postfix - name: Configure Postfix postconf: name: '{{ item.name }}' value: '{{ item.value | default(omit) }}' state: '{{ item.state | default(omit) }}' with_items: '{{ postfix_config }}' notify: - Reload Postfix - name: Configure Postfix services ansible.builtin.lineinfile: path: /usr/local/etc/postfix/master.cf regexp: '^{{ item.name }} +{{ item.type }}' value: '{{ item.value }}' with_items: '{{ postfix_services }}' notify: - Restart Postfix - name: Configure per service overrides postconf_master: name: '{{ item.name }}' value: '{{ item.value | default(omit) }}' state: '{{ item.state | default(omit) }}' with_items: '{{ postfix_params }}' notify: - Restart Postfix - name: Flush handlers ansible.builtin.meta: flush_handlers - name: Start Postfix ansible.builtin.command: fdmove -c 2 1 s6-rc -l {{ s6_live_dir }} -u -v 2 change postfix register: change changed_when: change.stdout | length > 0 - name: Enable Postfix ansible.builtin.lineinfile: path: '{{ s6_etc_dir }}/service/enabled/contents' regexp: "^postfix$" line: "postfix" notify: - Reload s6-rc - name: Flush handlers (again) ansible.builtin.meta: flush_handlers