From 5f13bb20467df80523ff91b99df8f027059ebf13 Mon Sep 17 00:00:00 2001 From: FreddleSpl0it <75116288+FreddleSpl0it@users.noreply.github.com> Date: Mon, 9 Nov 2026 19:41:17 +0100 Subject: [PATCH] [Dockerapi] Group IMAP grants: set ACLs only on existing folders --- data/Dockerfiles/dockerapi/modules/DockerApi.py | 4 ++-- docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/data/Dockerfiles/dockerapi/modules/DockerApi.py b/data/Dockerfiles/dockerapi/modules/DockerApi.py index 3de02ac3f..362581631 100644 --- a/data/Dockerfiles/dockerapi/modules/DockerApi.py +++ b/data/Dockerfiles/dockerapi/modules/DockerApi.py @@ -586,8 +586,8 @@ class DockerApi: if not user or id in ('user=', 'group='): return Response(content=json.dumps({ 'type': 'danger', 'msg': 'user and id required' }, indent=4), media_type="application/json") action = 'doveadm acl set -u "$ACL_USER" -- "$folder" "$ACL_ID" $ACL_RIGHTS' if rights else 'doveadm acl delete -u "$ACL_USER" -- "$folder" "$ACL_ID"' - script = ('set -o pipefail; doveadm mailbox list -u "$ACL_USER" | while IFS= read -r folder; do ' - 'case "$folder" in Shared/*) continue;; esac; ' + action + ' || exit 1; done && doveadm acl recalc -u "$ACL_USER"') + script = ('set -o pipefail; doveadm -f tab mailbox status -u "$ACL_USER" guid "*" | tail -n +2 | cut -f1 | while IFS= read -r folder; do ' + 'case "$folder" in Shared|Shared/*) continue;; esac; ' + action + ' || exit 1; done && doveadm acl recalc -u "$ACL_USER"') acl_return = container.exec_run(["/bin/bash", "-c", script], environment={ 'ACL_USER': user, 'ACL_ID': id, 'ACL_RIGHTS': ' '.join(rights) }) return self.exec_run_handler('generic', acl_return) diff --git a/docker-compose.yml b/docker-compose.yml index c6e07d7c5..ecd460d46 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -612,7 +612,7 @@ services: - watchdog dockerapi-mailcow: - image: ghcr.io/mailcow/dockerapi:2.15 + image: ghcr.io/mailcow/dockerapi:2.16 security_opt: - label=disable restart: always