This looks like a bug. But I cannot reproduce this here immediately. Can you enable sieve debugging (log_debug = category=sieve) and show what it logs?
Here they are: Debug: sieve: Pigeonhole version 2.4.1-4 (0a86619f) initializing Debug: sieve: Sieve imapsieve plugin for Pigeonhole version 2.4.1-4 (0a86619f) loaded Debug: sieve: storage: file: Performing auto-detection Debug: sieve: storage: file: Use home (/var/mail/vhosts/<domain>/<user>) Debug: sieve: storage: file: Checking storage path /var/mail/vhosts/<domain>/<user>/sieve Debug: sieve: storage: file: Storage path '/var/mail/vhosts/<domain>/<user>/sieve' not found Debug: sieve: storage: file: Checking storage path ~/.dovecot.sieve Debug: sieve: storage: file: Storage path '/var/mail/vhosts/<domain>/<user>/.dovecot.sieve' not found Debug: sieve: storage: Autodetection failed Debug: sieve: storage: No matching Sieve storage configured (type=personal and cause=delivery) Debug: sieve: storage default: file: Using script storage path: /etc/sieve/ Error: sieve: file storage: Performing t_readlink() on active sieve symlink '(null)' failed: readlink() failed: Bad address Error: sieve: Failed to access active Sieve script in parsonal storage 'default': Internal error occurred. Refer to server log for more information. [2025-11-15 01:47:58] (temporary failure)
It confirms the fallback to the default sieve_script… without explaining what is wrong with it and/or its location.
Bernard Rosset