diff options
| author | Joe Carstairs <me@joeac.net> | 2026-08-11 14:43:44 +0100 |
|---|---|---|
| committer | Joe Carstairs <me@joeac.net> | 2026-08-11 14:43:44 +0100 |
| commit | 4e73a59d76e8c4949908e766657f5d634d39fb67 (patch) | |
| tree | 0a51e16fc9728af6dcc8d2162932ed978a0d9eba | |
| parent | 48b9b3a92f4593793c933ba1e21aee28dea724f9 (diff) | |
installs msmtp onto pi-broughton with ansible
| -rw-r--r-- | ansible/playbook.yml | 11 | ||||
| -rw-r--r-- | ansible/roles/mox/tasks/main.yml | 2 | ||||
| -rw-r--r-- | ansible/roles/mox/templates/domains.conf | 2 | ||||
| -rw-r--r-- | ansible/roles/msmtp/tasks/main.yml | 64 | ||||
| -rw-r--r-- | ansible/roles/msmtp/templates/msmtprc | 13 | ||||
| -rw-r--r-- | ansible/vars/email.yml | 17 | ||||
| -rw-r--r-- | ansible/vars/mox.yml | 17 | ||||
| -rw-r--r-- | ansible/vars/msmtp.yml | 4 |
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 |
