Files @ cf15a5f3d965
Branch filter:

Location: majic-ansible-roles/roles/mail_forwarder/tasks/main.yml - annotation

branko
MAR-218: Quote all octal modes to avoid ambiguity due to changes in YAML standard.
7ab6518de03b
7ab6518de03b
7ab6518de03b
c10934519e18
23200e1ae9a8
13982172ed2e
61e6cfb81789
01f4b619cfa6
c10934519e18
01f4b619cfa6
13982172ed2e
01f4b619cfa6
61e6cfb81789
c10934519e18
23200e1ae9a8
23200e1ae9a8
13982172ed2e
7ab6518de03b
1b05bae8e440
c10934519e18
f774e938a4ed
f774e938a4ed
f774e938a4ed
f774e938a4ed
7cabc17c71c3
1b05bae8e440
af834be42e8e
c10934519e18
ed73868fa196
ed73868fa196
7cabc17c71c3
ed73868fa196
ed73868fa196
ed73868fa196
ed73868fa196
ed73868fa196
bf96a77e88ab
c10934519e18
23200e1ae9a8
23200e1ae9a8
23200e1ae9a8
23200e1ae9a8
7cabc17c71c3
bf96a77e88ab
bf96a77e88ab
bf96a77e88ab
7ab6518de03b
c10934519e18
23200e1ae9a8
23200e1ae9a8
23200e1ae9a8
23200e1ae9a8
7cabc17c71c3
7ab6518de03b
7ab6518de03b
7ab6518de03b
7ab6518de03b
c10934519e18
7ab6518de03b
7ab6518de03b
7ab6518de03b
7ab6518de03b
922cda0a1834
7ab6518de03b
7ab6518de03b
c9b8c60fbd5e
aa7b596ef595
c10934519e18
23200e1ae9a8
23200e1ae9a8
aa7b596ef595
a561d73e3242
441a70c073b9
c10934519e18
a3d247bb2e09
441a70c073b9
441a70c073b9
441a70c073b9
441a70c073b9
441a70c073b9
441a70c073b9
441a70c073b9
441a70c073b9
441a70c073b9
c10934519e18
a3d247bb2e09
441a70c073b9
441a70c073b9
441a70c073b9
441a70c073b9
441a70c073b9
441a70c073b9
441a70c073b9
441a70c073b9
441a70c073b9
c10934519e18
441a70c073b9
441a70c073b9
441a70c073b9
441a70c073b9
c10934519e18
441a70c073b9
441a70c073b9
441a70c073b9
13fd27e4004c
c10934519e18
23200e1ae9a8
23200e1ae9a8
23200e1ae9a8
23200e1ae9a8
7cabc17c71c3
13fd27e4004c
13fd27e4004c
13fd27e4004c
c9b8c60fbd5e
c10934519e18
23200e1ae9a8
13982172ed2e
7387caca37f3
7387caca37f3
c10934519e18
fcf5abdd3ad5
7387caca37f3
7387caca37f3
---

- name: Install Postfix
  ansible.builtin.apt:
    name: postfix
    state: present

- name: Install procmail
  ansible.builtin.apt:
    name: procmail
    state: present

- name: Purge Exim configuration
  ansible.builtin.apt:
    name: "exim4*"
    state: absent
    purge: true

- name: Deploy the SMTP relay TLS truststore
  ansible.builtin.copy:
    content: "{{ smtp_relay_truststore }}"
    dest: "/etc/ssl/certs/smtp_relay_truststore.pem"
    owner: root
    group: root
    mode: "0644"

- name: Generate the SMTP server Diffie-Hellman parameter
  community.crypto.openssl_dhparam:
    owner: root
    group: root
    mode: "0640"
    path: "/etc/ssl/private/{{ ansible_fqdn }}_smtp.dh.pem"
    size: 2048
  notify:
    - Restart Postfix

- name: Configure visible mail name of the system
  ansible.builtin.copy:
    content: "{{ inventory_hostname }}"
    dest: "/etc/mailname"
    owner: root
    group: root
    mode: "0644"
  notify:
    - Restart Postfix

- name: Deploy Postfix main configuration
  ansible.builtin.template:
    src: "main.cf.j2"
    dest: "/etc/postfix/main.cf"
    owner: root
    group: root
    mode: "0644"
  notify:
    - Restart Postfix

- name: Set-up local mail aliases
  ansible.builtin.lineinfile:
    dest: "/etc/aliases"
    line: "{{ item.key }}: {{ item.value }}"
    regexp: "^{{ item.key }}"
    state: present
  with_dict: "{{ local_mail_aliases }}"
  notify:
    - Rebuild mail aliases

- name: Enable and start postfix service
  ansible.builtin.service:
    name: postfix
    state: started
    enabled: true

- name: Retrieve IPv4 addresses of SMTP relay host
  ansible.builtin.shell: "getent ahostsv4 '{{ smtp_relay_host }}' | awk '{ print $1 }' | sort -u"  # noqa risky-shell-pipe
  # [risky-shell-pipe] Shells that use pipes should set the pipefail option
  #   The getent ahostsv4 command has non-zero exit code if the
  #   supplies name cannot be resolved. However, that is a valid
  #   use-case for extracting this information. It effectively means
  #   that no IPv4 firewall rules will be deployed for allowing
  #   incoming connections from the SMTP relay host.
  changed_when: false
  register: smtp_relay_host_ipv4

- name: Retrieve IPv6 addresses of SMTP relay host
  ansible.builtin.shell: "getent ahostsv6 '{{ smtp_relay_host }}' | awk '{ print $1 }' | grep -v '^::ffff:' | sort -u"  # noqa risky-shell-pipe
  # [risky-shell-pipe] Shells that use pipes should set the pipefail option
  #   The getent ahostsv6 command has non-zero exit code if the
  #   supplies name cannot be resolved. However, that is a valid
  #   use-case for extracting this information. It effectively means
  #   that no IPv6 firewall rules will be deployed for allowing
  #   incoming connections from the SMTP relay host.
  changed_when: false
  register: smtp_relay_host_ipv6

- name: Normalise the SMTP relay host IPv4 addresses variable
  ansible.builtin.set_fact:
    smtp_relay_host_ipv4: "{{ smtp_relay_host_ipv4.stdout_lines | reject('equalto', '') | list }}"
  when: "smtp_relay_host | length != 0"

- name: Normalise the SMTP relay host IPv6 addresses variable
  ansible.builtin.set_fact:
    smtp_relay_host_ipv6: "{{ smtp_relay_host_ipv6.stdout_lines | reject('equalto', '') | list }}"
  when: "smtp_relay_host | length != 0"

- name: Deploy firewall configuration for mail forwader
  ansible.builtin.template:
    src: "ferm_mail.conf.j2"
    dest: "/etc/ferm/conf.d/20-mail.conf"
    owner: root
    group: root
    mode: "0640"
  notify:
    - Restart ferm

- name: Install SWAKS
  ansible.builtin.apt:
    name: swaks
    state: present

- name: Explicitly run all handlers
  ansible.builtin.include_tasks: ../handlers/main.yml
  when: "run_handlers | default(False) | bool()"
  tags:
    - handlers