On 1/12/2015 2:19 PM, Petar Bogdanovic wrote:
> On Mon, Jan 12, 2015 at 01:19:18PM +0100, Stephan Bosch wrote:
>> Petar Bogdanovic schreef op 12-1-2015 om 13:05:
>>> Hi,
>>>
>>> I ran into some troubles while upgrading pigeonhole:
>>>
>>>   crane dovecot: lda(petar): Error: sieve: Failed to access user storage 
>>> (temporary failure)
>>>   crane dovecot: lda(petar): Error: sieve: file storage: Could not find 
>>> storage root directory; path was left unconfigured and autodetection failed
>>>
>>> After reading through the changelog, I noticed that there have been some
>>> changes in the script storage location syntax but that old prefix-less
>>> paths should still work fine.
>>>
>>> My lda-configuration is very simple:
>>>
>>>   # lda
>>>   protocol lda {
>>>     mail_plugins = sieve
>>>     postmaster_address = <snip>
>>>   }
>>>   plugin {
>>>     sieve = /data/dovecot/user/%u.sieve
>>>     sieve_extensions = +editheader
>>>     sieve_max_redirects = 50
>>>   }
>>>
>>> And even if I change $sieve to:
>>>
>>>   sieve = file:/data/dovecot/user/%u.sieve
>>>
>>> the error messages disappear but based on the sudden unfiltered wave of
>>> mails in my INBOX that I usually store somewhere else, I guess the path
>>> still doesn't work.
>> You can enable mail_debug=yes to see where it is looking for the Sieve
>> scripts.
> Thanks.  The following output is with:
>
>   sieve = /data/dovecot/user/%u.sieve
>
>       master: Dovecot v2.2.15 starting up for imap
>       lda: Debug: Loading modules from directory: /usr/pkg/lib/dovecot
>       lda: Debug: Module loaded: /usr/pkg/lib/dovecot/lib90_sieve_plugin.so
>       lda(petar): Debug: Effective uid=2000, gid=2000, home=/etc/skel
>       lda(petar): Debug: maildir++: root=/data/dovecot/user/petar, index=, 
> indexpvt=, control=, inbox=/data/dovecot/user/petar, alt=
>       lda(petar): Debug: userdb lookup skipped, username taken from USER 
> environment
>       lda(petar): Debug: none: root=, index=, indexpvt=, control=, inbox=, 
> alt=
>       lda(petar): Debug: Destination address: petar@<snip> (source: 
> user@hostname)
>       lda(petar): Debug: sieve: Pigeonhole version 0.4.6 (3e924b1b6c5c+) 
> initializing
>       lda(petar): Debug: sieve: include: sieve_global is not set; it is 
> currently not possible to include `:global' scripts.
>       lda(petar): Debug: sieve: file storage: Performing auto-detection
>       lda(petar): Debug: sieve: file storage: access(/etc/skel, rwx) failed: 
> Permission denied
>       lda(petar): Error: sieve: file storage: Could not find storage root 
> directory; path was left unconfigured and autodetection failed
>       lda(petar): Error: sieve: Failed to access user storage (temporary 
> failure)
>
> The inbox-path seems found but the sieve path isn't mentioned.
> ($HOME is /etc/skel and its read-only.)
>
> The following output is with:
>
>   sieve = file:/data/dovecot/user/%u.sieve
>
>       master: Dovecot v2.2.15 starting up for imap
>       lda: Debug: Loading modules from directory: /usr/pkg/lib/dovecot
>       lda: Debug: Module loaded: /usr/pkg/lib/dovecot/lib90_sieve_plugin.so
>       lda(petar): Debug: Effective uid=2000, gid=2000, home=/etc/skel
>       lda(petar): Debug: maildir++: root=/data/dovecot/user/petar, index=, 
> indexpvt=, control=, inbox=/data/dovecot/user/petar, alt=
>       lda(petar): Debug: userdb lookup skipped, username taken from USER 
> environment
>       lda(petar): Debug: none: root=, index=, indexpvt=, control=, inbox=, 
> alt=
>       lda(petar): Debug: Destination address: petar@<snip> (source: 
> user@hostname)
>       lda(petar): Debug: sieve: Pigeonhole version 0.4.6 (3e924b1b6c5c+) 
> initializing
>       lda(petar): Debug: sieve: include: sieve_global is not set; it is 
> currently not possible to include `:global' scripts.
>       lda(petar): Debug: sieve: file storage: Active script path is 
> unconfigured; using default (path=~/.dovecot.sieve)
>       lda(petar): Debug: sieve: file storage: Using script storage path: 
> /data/dovecot/user/petar.sieve
>       lda(petar): Debug: sieve: file storage: Using active Sieve script path: 
> /etc/skel/.dovecot.sieve
>       lda(petar): Debug: sieve: file storage: Relative path to sieve storage 
> in active link: /data/dovecot/user/petar.sieve/
>       lda(petar): Debug: sieve: file storage: Using script storage path: 
> /etc/skel/.dovecot.sieve
>       lda(petar): Debug: sieve: file script: File `/etc/skel/.dovecot.sieve' 
> not found
>       lda(petar): Debug: sieve: No active Sieve script exists in user storage 
> `/data/dovecot/user/petar.sieve' (trying default script location instead)
>       lda(petar): Debug: sieve: No default script configured for user
>       lda(petar): Debug: sieve: User has no personal script
>       lda(petar): Debug: sieve: No scripts to execute: reverting to default 
> delivery.
>
>       # ls -la /data/dovecot/user/petar.*
>       -rw-------  1 petar  petar  32946 /data/dovecot/user/petar.sieve
>       -rw-------  1 petar  petar    532 /data/dovecot/user/petar.sieve.log
>       -rw-------  1 petar  petar  31571 /data/dovecot/user/petar.svbin
>
>
> Shouldn't both variants at least fail identically if no prefix implies 
> `file:'?

There is some backwards compatibility that makes these cases different.

But, first of all, it is not a good idea to have a read-only home
directory. A writable home directory is important; e.g., to store
vacation response status information.

That said, I do think this a bug, especially since it worked before.
I've investigated this a bit and this is going to be a somewhat bigger
change that I need to test thoroughly, so this may take a couple of
days. A workaround for now would be to give it a dummy sieve_dir setting
that points to a writable directory.

Regards,

Stephan.

Reply via email to