summaryrefslogtreecommitdiff
path: root/roles/mox/tasks/main.yml
blob: 2e41a4cc4b95e00491548b138d1c058fa213c10f (plain)
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
- name: Add mox group
  ansible.builtin.group:
    name: mox

- name: Add mox user
  ansible.builtin.user:
    name: mox
    group: mox
    groups:
      - tls
    append: false

- name: Create mox configuration directory
  register: mox_conf_dir
  ansible.builtin.file:
    path: ~mox/config/
    owner: mox

- name: Create DKIM private keys directory
  register: mox_dkim_dir
  ansible.builtin.file:
    path: ~mox/config/dkim

- name: Install DKIM private key A
  register: mox_dkim_a
  ansible.builtin.copy:
    src: dkim/2026a._domainkey.mail.joeac.net.20260705T163220.rsa2048.privatekey.pkcs8.pem
    dest: ~mox/config/dkim/2026a._domainkey.mail.joeac.net.20260705T163220.rsa2048.privatekey.pkcs8.pem
    mode: o-rwx

- name: Install DKIM private key B
  register: mox_dkim_b
  ansible.builtin.copy:
    src: dkim/2026b._domainkey.mail.joeac.net.20260705T163220.rsa2048.privatekey.pkcs8.pem
    dest: ~mox/config/dkim/2026b._domainkey.mail.joeac.net.20260705T163220.rsa2048.privatekey.pkcs8.pem
    mode: o-rwx

- name: Install adminpasswd
  register: mox_adminpasswd
  ansible.builtin.copy:
    src: adminpasswd
    dest: ~mox/config/adminpasswd
    mode: o-rwx

- name: Install mox configuration
  register: mox_conf
  ansible.builtin.template:
    src: mox.conf
    dest: ~mox/config/mox.conf
    mode: o-rwx

- name: Install mox domain configuration
  register: mox_domain_conf
  ansible.builtin.template:
    src: domains.conf
    dest: ~mox/config/domains.conf
    mode: o-rwx

- name: Create mox data directory
  ansible.builtin.file:
    path: ~mox/data
    state: directory
    mode: o-rwx

- name: Create unbound configuration directory
  ansible.builtin.file:
    path: /etc/unbound/unbound.conf.d
    state: directory
    mode: "444"

- name: Install DNSSEC configuration
  register: dnssec_conf
  ansible.builtin.template:
    src: dnssec.conf
    dest: /etc/unbound/unbound.conf.d/dnssec.conf

- name: Install unbound binary
  community.general.apk:
    name: unbound
    state: present

- name: Restart unbound service and configure to start on boot
  when: dnssec_conf is changed
  ansible.builtin.service:
    name: unbound
    enabled: true
    state: restarted

- name: Start unbound service and configure to start on boot
  when: not ( dnssec_conf is changed )
  ansible.builtin.service:
    name: unbound
    enabled: true
    state: started

- name: Configure networking to point at unbound DNS resolver
  ansible.builtin.copy:
    content: "nameserver: 127.0.0.1"
    dest: /etc/resolv.conf
    backup: true
    mode: "444"

- name: Install mox binary
  register: mox_binary
  ansible.builtin.get_url:
    dest: /usr/bin/mox
    mode: "755"
    url: "{{ mox_url }}"

- name: Install mox service
  register: mox_service
  ansible.builtin.template:
    src: openrc/mox
    dest: /etc/init.d/mox
    mode: "755"

- name: Restart mox service and configure to start on boot
  when:
    mox_conf_dir is changed
      or mox_dkim_dir is change
      or mox_dkim_a is change
      or mox_dkim_b is change
      or mox_adminpasswd is change
      or mox_conf is change
      or mox_domain_conf is changed
      or mox_binary is changed
      or mox_service is changed
  ansible.builtin.service:
    name: mox
    enabled: true
    state: restarted

- name: Start mox service and configure to start on boot
  when: not (
    mox_conf_dir is changed
      or mox_dkim_dir is change
      or mox_dkim_a is change
      or mox_dkim_b is change
      or mox_adminpasswd is change
      or mox_conf is change
      or mox_domain_conf is changed
      or mox_binary is changed
      or mox_service is changed )
  ansible.builtin.service:
    name: mox
    enabled: true
    state: started

- name: Set account passwords
  loop: "{{ email_accounts }}"
  no_log: true
  ansible.builtin.command:
    cmd: mox setaccountpassword {{ item.name }}
    stdin: "{{ item.password }}"
    chdir: ~mox