Hi,
Dovecot version is 2.3.19.1 (9b53102964) running on fully up-to-date Debian 12 (Bookworm) operating system.
For the life of me I cannot figure out how to get sieve scripts working correctly in a central directory location. Calling them from users’ home directories works fine (as described below).
(Note: This system has recently been migrated from Cyrus IMAP, so some of the directories for a central location are very similar to what would find in a standard Cyrus IMAP installation.)
If I set sieve to its default value of file:~/sieve;active=~/.dovecot.sieve in conf.d/90-sieve.conf, sieve works as expected. I have a file ~/sieve/default.sieve and, as per documentation, I make a symbolic link ~/.dovecot.sieve that points to that file. The sieve script runs, and I see a default.svbin either created or updated in the ~/sieve directories as emails arrive.
Setting sieve to file:~/lib/sieve;active=~/.dovecot.sieve also works as expected. So this verifies I can change the directory where sieve scripts are stored.
However, if I then set sieve to file:/var/spool/dovecot/home/%1n/user/%n/sieve;active=file:/var/spool/dovecot/home/%1n/user/%n/.dovecot.sieve, again a default.sieve in each of these user’s centralized sieve directories, sieve scripts silently fail to run. No messages of any kind found in any log files.
So, with the same exact same configuration as one that is the default and as proven to working, with the single exception of changing the top-level directory (TLD) for the scripts, results in silent failure. Why?
What I find particularly odd is that if I keep sieve set to this central directory location (i.e., no config changes), and mv sieve/default.sieve sieve.tmp; rmdir sieve; mv sieve.tmp, that is, have a *file* called sieve where the setting sieve points to (which, per docs and experience, should be a *directory*), the users’ sieve scripts *do* run, but with a warning along the lines of Warning: sieve: file storage: Explicitly specified active script path file:/var/spool/dovecot/home/m/user/morse/.dovecot.sieve' is ignored; storage path /var/spool/dovecot/home/m/user/morse/sieve' is not a directory.
In the docs I see that sieve used to refer to a file (PidgeonHole Sieve v.0.31 or prior, I believe), and there is mention of a a sieve_dir setting (which I have *never* set or used). So my guess is that sieve working in this centralized TLD with sieve as a file rather than directory is due to support for some deprecated config / functionality.
I have fiddle around with this for some hours, including setting and not setting mail_home to the central directory location (i.e., mail_home in conf.d/10-mail.conf set to the same value as sieve in conf.d/90-sieve.conf),to no avail. No matter what I do, I cannot get sieve scripts to run in a centralized directory location as they do under /home. The only exception is as just described in the preceding paragraph. But the solution only allows a user to have a single sieve script, and I imagine managesieve will not work properly is sieve is set up as described in the preceding paragraph.
What am I missing or doing incorrectly?
Any and all assistance most appreciated.
Doug