aboutsummaryrefslogtreecommitdiff
path: root/roles/mail/tasks/main.yaml
blob: 66b42158ab4fb07cfff35ab4bf7ae444aec9ef31 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
- name: Install Mail Packages
  ansible.builtin.dnf:
    name:
      - postfix
      - dovecot
      - opendkim
      - opendkim-tools
    state: present

- name: Ensure OpenDKIM keys directory exists
  ansible.builtin.file:
    path: "/etc/opendkim/keys/{{ vault_public_domain }}"
    state: directory
    owner: opendkim
    group: opendkim
    mode: "0750"

- name: Generate DKIM Key
  ansible.builtin.command:
    cmd: "opendkim-genkey -a ed25519 -s default -d {{ vault_public_domain }} -D /etc/opendkim/keys/{{ vault_public_domain }}/"
    creates: "/etc/opendkim/keys/{{ vault_public_domain }}/default.private"
  notify: Fix DKIM permissions

- name: Configure OpenDKIM mappings
  ansible.builtin.copy:
    dest: "{{ item.path }}"
    content: "{{ item.content }}"
    mode: "0644"
  loop:
    - { path: /etc/opendkim/KeyTable, content: "default._domainkey.{{ vault_public_domain }} {{ vault_public_domain }}:default:/etc/opendkim/keys/{{ vault_public_domain }}/default.private\n" }
    - { path: /etc/opendkim/SigningTable, content: "*@{{ vault_public_domain }} default._domainkey.{{ vault_public_domain }}\n" }
    - { path: /etc/opendkim/TrustedHosts, content: "127.0.0.1\nlocalhost\n10.0.0.0/24\n" }
  notify: Restart Mail Services

- name: Deploy Configurations
  ansible.builtin.template:
    src: "{{ item.src }}"
    dest: "{{ item.dest }}"
    mode: "0644"
  loop:
    - { src: postfix_main.cf.j2, dest: /etc/postfix/main.cf }
    - { src: postfix_master.cf.j2, dest: /etc/postfix/master.cf }
    - { src: dovecot.conf.j2, dest: /etc/dovecot/dovecot.conf }
    - { src: opendkim.conf.j2, dest: /etc/opendkim.conf }
  notify: Restart Mail Services

- name: Add Mail User
  ansible.builtin.user:
    name: me
    shell: /sbin/nologin
    password: "{{ vault_mail_user_password | password_hash('sha512') }}"

- name: Ensure Services are Enabled and Running
  ansible.builtin.systemd:
    name: "{{ item }}"
    state: started
    enabled: yes
  loop:
    - postfix
    - dovecot
    - opendkim