summaryrefslogtreecommitdiff
path: root/ansible
diff options
context:
space:
mode:
Diffstat (limited to 'ansible')
-rw-r--r--ansible/playbook.yml11
-rw-r--r--ansible/roles/mox/tasks/main.yml2
-rw-r--r--ansible/roles/mox/templates/domains.conf2
-rw-r--r--ansible/roles/msmtp/tasks/main.yml64
-rw-r--r--ansible/roles/msmtp/templates/msmtprc13
-rw-r--r--ansible/vars/email.yml17
-rw-r--r--ansible/vars/mox.yml17
-rw-r--r--ansible/vars/msmtp.yml4
8 files changed, 111 insertions, 19 deletions
diff --git a/ansible/playbook.yml b/ansible/playbook.yml
index b8be70f..72330de 100644
--- a/ansible/playbook.yml
+++ b/ansible/playbook.yml
@@ -7,9 +7,20 @@
- mox
vars_files:
- common.yml
+ - email.yml
- mox.yml
- network.yml
+- name: Install msmtp
+ hosts: "{{ services.http.host }}"
+ become: true
+ roles:
+ - msmtp
+ vars_files:
+ - common.yml
+ - email.yml
+ - msmtp.yml
+
- name: Install ln
hosts: "{{ services.ln.host }}"
become: true
diff --git a/ansible/roles/mox/tasks/main.yml b/ansible/roles/mox/tasks/main.yml
index 8f9a9c5..7e1f6b9 100644
--- a/ansible/roles/mox/tasks/main.yml
+++ b/ansible/roles/mox/tasks/main.yml
@@ -174,7 +174,7 @@
state: started
- name: Set account passwords
- loop: "{{ mox_accounts }}"
+ loop: "{{ email_accounts }}"
no_log: true
ansible.builtin.command:
cmd: mox setaccountpassword {{ item.name }}
diff --git a/ansible/roles/mox/templates/domains.conf b/ansible/roles/mox/templates/domains.conf
index a354875..bccfab3 100644
--- a/ansible/roles/mox/templates/domains.conf
+++ b/ansible/roles/mox/templates/domains.conf
@@ -28,7 +28,7 @@ Domains:
Mailbox: TLSRPT
Accounts:
-{% for account in mox_accounts %}
+{% for account in email_accounts %}
{{ account.name }}:
Domain: mail.joeac.net
Destinations:
diff --git a/ansible/roles/msmtp/tasks/main.yml b/ansible/roles/msmtp/tasks/main.yml
new file mode 100644
index 0000000..8b2f92f
--- /dev/null
+++ b/ansible/roles/msmtp/tasks/main.yml
@@ -0,0 +1,64 @@
+- name: Check msmtp version
+ ansible.builtin.command: msmtp --version
+ register: current_msmtp_version
+ changed_when: false
+ failed_when: false
+
+- name: Install msmtp from source if needed
+ when: "'msmtp version ' ~ msmtp_version ~ '\n' not in current_msmtp_version.stdout or msmtp_auth_mech not in current_msmtp_version.stdout"
+ block:
+ - name: Install dependencies for building msmtp from source
+ community.general.apk:
+ name:
+ - autoconf
+ - automake
+ - libgsasl-dev
+ - libtool
+ - gettext
+ - git
+ - gnutls-dev
+ - pkgconf
+ - texinfo
+ state: present
+
+ - name: Fetch msmtp v{{ msmtp_version }} source code
+ ansible.builtin.get_url:
+ url: https://marlam.de/msmtp/releases/msmtp-{{ msmtp_version }}.tar.xz
+ dest: /tmp/msmtp-{{ msmtp_version }}.tar.xz
+
+ - name: Create msmtp src directory
+ ansible.builtin.file:
+ path: "{{ msmtp_src_dir }}"
+ state: directory
+ mode: "755"
+
+ - name: Extract msmtp v{{ msmtp_version }} source code
+ ansible.builtin.unarchive:
+ remote_src: true
+ src: /tmp/msmtp-{{ msmtp_version }}.tar.xz
+ dest: "{{ msmtp_src_dir }}"
+ creates: "{{ msmtp_src_dir }}/msmtp-{{ msmtp_version }}"
+
+ - name: Run msmtp configure script
+ ansible.builtin.shell:
+ cmd: ./configure --with-libgsasl
+ chdir: "{{ msmtp_src_dir }}/msmtp-{{ msmtp_version }}"
+ creates: "{{ msmtp_src_dir }}/msmtp-{{ msmtp_version }}/Makefile"
+
+- name: Install msmtp config
+ vars:
+ account: "{{ email_accounts | selectattr('name', 'eq', 'jobot') | first }}"
+ ansible.builtin.template:
+ src: msmtprc
+ dest: /etc/msmtprc
+ owner: joeac.net
+ group: joeac.net
+ mode: "600"
+
+- name: Create msmtp log directory
+ ansible.builtin.file:
+ path: "{{ msmtp_log_dir }}"
+ state: directory
+ owner: joeac.net
+ group: joeac.net
+ mode: "770"
diff --git a/ansible/roles/msmtp/templates/msmtprc b/ansible/roles/msmtp/templates/msmtprc
new file mode 100644
index 0000000..aee3a3c
--- /dev/null
+++ b/ansible/roles/msmtp/templates/msmtprc
@@ -0,0 +1,13 @@
+account {{ account.name }}@mail.joeac.net
+host mail.joeac.net
+port 465
+auth {{ msmtp_auth_mech }}
+tls on
+tls_starttls off
+tls_trust_file /etc/ssl/certs/ca-certificates.crt
+user {{ account.name }}@mail.joeac.net
+from {{ account.name }}@mail.joeac.net
+password {{ account.password }}
+logfile {{ msmtp_log_dir }}/{{ account.name }}.mail.joeac.net.log
+
+account default : {{ account.name }}@mail.joeac.net
diff --git a/ansible/vars/email.yml b/ansible/vars/email.yml
new file mode 100644
index 0000000..cd6b2ec
--- /dev/null
+++ b/ansible/vars/email.yml
@@ -0,0 +1,17 @@
+email_accounts:
+ - name: me
+ password: !vault |
+ $ANSIBLE_VAULT;1.2;AES256;ansible
+ 64666333373334373438313730393830353730373463643639386533303030353235313832363738
+ 6633623136376262633638336662326236636562363833320a333535363862326331646364373030
+ 37326135346639323830666135346239653234653564626361393761653263333933353234666233
+ 6232333132386663330a636464376161643563313863656139646534336533633736333635626532
+ 32313539306366383833353133376134616437393532303233363235363133356236
+ - name: jobot
+ password: !vault |
+ $ANSIBLE_VAULT;1.2;AES256;ansible
+ 66386562306130613835333665633534396433316363646463636536653466646133383135373933
+ 6439333031386663643732333334323438613463393933660a653731646362616635316537643538
+ 36613238343762636632663333373964323833636265623532373735303166616432313964396233
+ 6564323066613731610a333133316639613062633061666233333333316239626165653761666639
+ 65376363646231646161353461343163636533316530636265313330626562376265
diff --git a/ansible/vars/mox.yml b/ansible/vars/mox.yml
index 6f35dcd..a74acf8 100644
--- a/ansible/vars/mox.yml
+++ b/ansible/vars/mox.yml
@@ -2,20 +2,3 @@ mox_version: 0.0.15
mox_go_version: 1.26.5
mox_url_base: https://beta.gobuilds.org/github.com/mjl-/mox@v
mox_url: "{{ mox_url_base ~ mox_version ~ '/linux-' ~ mox_platform ~ '-go' ~ mox_go_version ~ '/' ~ mox_checksum ~ '/mox-v' ~ mox_version ~ '-go' ~ mox_go_version }}"
-mox_accounts:
- - name: me
- password: !vault |
- $ANSIBLE_VAULT;1.2;AES256;ansible
- 64666333373334373438313730393830353730373463643639386533303030353235313832363738
- 6633623136376262633638336662326236636562363833320a333535363862326331646364373030
- 37326135346639323830666135346239653234653564626361393761653263333933353234666233
- 6232333132386663330a636464376161643563313863656139646534336533633736333635626532
- 32313539306366383833353133376134616437393532303233363235363133356236
- - name: jobot
- password: !vault |
- $ANSIBLE_VAULT;1.2;AES256;ansible
- 66386562306130613835333665633534396433316363646463636536653466646133383135373933
- 6439333031386663643732333334323438613463393933660a653731646362616635316537643538
- 36613238343762636632663333373964323833636265623532373735303166616432313964396233
- 6564323066613731610a333133316639613062633061666233333333316239626165653761666639
- 65376363646231646161353461343163636533316530636265313330626562376265
diff --git a/ansible/vars/msmtp.yml b/ansible/vars/msmtp.yml
new file mode 100644
index 0000000..ecd4c53
--- /dev/null
+++ b/ansible/vars/msmtp.yml
@@ -0,0 +1,4 @@
+msmtp_version: 1.8.34
+msmtp_src_dir: /usr/local/src
+msmtp_log_dir: /var/log/msmtp
+msmtp_auth_mech: scram-sha-256-plus