From 910c6e9cc9fe4cdf62e7fb6ec9ba3d03d0bf2396 Mon Sep 17 00:00:00 2001 From: Alberto Bertogli Date: Sun, 15 Jul 2018 11:23:12 +0100 Subject: [PATCH] test: Add workarounds for dovecot 2.3 The current dovecot config for integration test t-11-dovecot is not compatible with dovecot 2.3. There are some new services which want to change the group owner for some files to the default, and that does not work when run as non-root. The errors look like: master: Error: service(stats): chown(/tmp/chasquid-dovecot-test/run/stats-writer, 4294967295, 127) failed: Operation not permitted master: Error: service(imap-hibernate): chown(/tmp/chasquid-dovecot-test/run/imap-hibernate, 4294967295, 127) failed: Operation not permitted master: Error: service(dict): chown(/tmp/chasquid-dovecot-test/run/dict, 4294967295, 127) failed: Operation not permitted master: Error: service(dict-async): chown(/tmp/chasquid-dovecot-test/run/dict-async, 4294967295, 127) failed: Operation not permitted master: Fatal: Failed to start listeners (127 is the "dovecot" user) So this patch adds some config settings to set the group manually for these services, which is backwards compatible with 2.2. Eventually we will stop supporting 2.2 for tests, at which point we can change to just setting default_internal_group. --- test/t-11-dovecot/config/dovecot.conf.in | 29 ++++++++++++++++++++++++ test/t-11-dovecot/run.sh | 1 + 2 files changed, 30 insertions(+) diff --git a/test/t-11-dovecot/config/dovecot.conf.in b/test/t-11-dovecot/config/dovecot.conf.in index 3f59a86..77fbca3 100644 --- a/test/t-11-dovecot/config/dovecot.conf.in +++ b/test/t-11-dovecot/config/dovecot.conf.in @@ -41,6 +41,35 @@ service anvil { chroot = } +# In dovecot 2.3 these services want to change the group owner of the files, +# so override it manually to our effective group. +# This is backwards-compatible with dovecot 2.2. +# TODO: once we stop supporting dovecot 2.2 for tests, we can set +# default_internal_group and remove these settings. +service imap-hibernate { + unix_listener imap-hibernate { + group = $GROUP + } +} +service stats { + unix_listener stats { + group = $GROUP + } + unix_listener stats-writer { + group = $GROUP + } +} +service dict { + unix_listener dict { + group = $GROUP + } +} +service dict-async { + unix_listener dict-async { + group = $GROUP + } +} + # Turn on debugging information, to help troubleshooting issues. auth_verbose = yes auth_debug = yes diff --git a/test/t-11-dovecot/run.sh b/test/t-11-dovecot/run.sh index 6403056..e93e0f2 100755 --- a/test/t-11-dovecot/run.sh +++ b/test/t-11-dovecot/run.sh @@ -25,6 +25,7 @@ export ROOT="/tmp/chasquid-dovecot-test" mkdir -p $ROOT $ROOT/run rm -f $ROOT/dovecot.log +export GROUP=$(id -g -n) envsubst < config/dovecot.conf.in > $ROOT/dovecot.conf cp -f config/passwd $ROOT/passwd