mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-08 03:38:23 +00:00
Stalwart v1.0.0 rejects unknown JMAP properties ("Invalid property" ->
notCreated/notUpdated), validates OIDC tokens more strictly and refuses to
open a data store from before 1.0. Port the role and protect existing
installs:
- Milter: hostname/timeoutConnect/timeoutCommand/timeoutData become
host/connectTimeout/commandTimeout/dataTimeout; the existing milter is
looked up by host.
- Onion relay route: address becomes host.
- OIDC directory: requireAudience is gone. Set skipAudienceValidation and
unscopedTokens=interoperable on create and update, so Keycloak tokens
(no Stalwart audience, no mail scope) keep working for the WebUI and
Roundcube XOAUTH2.
- WebUI: send oauthClientId only with SSO enabled; without SSO the WebUI
falls back to its own client metadata document.
- Store guard: before anything changes, a running Stalwart whose table u
still has the 0.16 bigint layout stops the deploy and points to the
stalwart-migrate steps, which the README now documents under
"Upgrading from 0.16".
- Updater: pin the WebUI git_tags source to v2.* to match server 1.x.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
28 lines
1.1 KiB
YAML
28 lines
1.1 KiB
YAML
---
|
|
# Register the ClamAV container as a DATA-stage milter (idempotent by host).
|
|
# Short timeouts + fail-open keep mail flowing while clamd warms up.
|
|
# JMAP request bodies live in templates/jmap/*.json.j2.
|
|
- name: "📖 List existing Stalwart milters"
|
|
include_tasks: jmap_call.yml
|
|
vars:
|
|
stalwart_jmap_body: "{{ lookup('template', 'jmap/milter/get.json.j2') }}"
|
|
|
|
- name: "🔍 Resolve existing ClamAV milter id (if any)"
|
|
ansible.builtin.set_fact:
|
|
stalwart_av_milter_id: >-
|
|
{{ (stalwart_jmap.methodResponses[0][1].list
|
|
| selectattr('host', 'equalto', STALWART_CLAMAV_HOST)
|
|
| map(attribute='id') | first) | default('') }}
|
|
|
|
- name: "📁 Create the ClamAV milter"
|
|
include_tasks: jmap_call.yml
|
|
vars:
|
|
stalwart_jmap_body: "{{ lookup('template', 'jmap/milter/create.json.j2') }}"
|
|
when: stalwart_av_milter_id | length == 0
|
|
|
|
- name: "🔄 Update the ClamAV milter timeouts (fail-open on slow/cold clamd)"
|
|
include_tasks: jmap_call.yml
|
|
vars:
|
|
stalwart_jmap_body: "{{ lookup('template', 'jmap/milter/update.json.j2') }}"
|
|
when: stalwart_av_milter_id | length > 0
|