invalid/unknown path to storage

Stephan Bosch
2014-08-08T00:44:22Z

On 8/7/2014 9:21 PM, Benjamin Connelly wrote:
> Am I correct: pigeonhole now wants the symlink to the filter file to
> use an absolute path instead of the relative paths we had?
>
> i.e.) sieve-filterfile@ -> /home/mail/domain/user at
domain/roundcube.sieve
> instead of sieve-filterfile@ -> roundcube.sieve
>
> Dovecot logs these:
>
> dovecot: managesieve(user at domain.org): Warning: sieve-storage: Active
> sieve script symlink
> /home/mail/domain.org/user at domain.org/sieve-filterfile is broken:
> invalid/unknown path to storage (points to roundcube.sieve).
>
> and the debug log:
>
> Jul 29 15:37:59 managesieve(user at domain.org): Debug: sieve: Pigeonhole
> version 0.4.3 initializing
> Jul 29 15:37:59 managesieve(user at domain.org): Debug: sieve: include:
> sieve_global_dir is not set; it is currently not possible to include
> `:global' scripts.
> Jul 29 15:37:59 managesieve(user at domain.org): Debug: sieve-storage:
> using active sieve script path:
> /home/mail/domain.org/user at domain.org/sieve-filterfile
> Jul 29 15:37:59 managesieve(user at domain.org): Debug: sieve-storage:
> using sieve script storage directory:
> /home/mail/domain.org/user at domain.org/
> Jul 29 15:37:59 managesieve(user at domain.org): Debug: sieve-storage:
> using permissions from /home/mail/domain.org/user at domain.org/:
> mode=0700 gid=-1
> Jul 29 15:37:59 managesieve(user at domain.org): Debug: sieve-storage:
> relative path to sieve storage in active link:
>
> I found if I manually delete a symlink and replace it using the full
> path:
>
>  sieve-filterfile ->
> /home/mail/domain.org/user at domain.org/roundcube.sieve
>
> then everybody is happy. So I'm looking to make a configuration change
> (and then change all existing symlinks.) I just wanted to check with
> the list about the two settings we return as part of the user_query:
>
>  concat(homedir, maildir, 'sieve-filterfile') as sieve,
>  concat(homedir,maildir) as sieve_dir
>
> In testing it seems like changing 'sieve' to return not the whole
path
> but just the link name, actuall causes pigeonhole to properly make the
> symlink with full path! Does this seem right?

This is probably the path comparison bug that I fixed implicitly while I
added generic sieve script storage support. (A few '*' are missing here:
http://hg.rename-it.nl/dovecot-2.2-pigeonhole/file/1c6130ff5dd6/src/lib-sievestorage/sieve-storage-script.c#l40).

I initially wondered why nobody encountered and reported this bug before
I found it. Then I realized that most people would heed the advice not
to put the active script symlink inside the script storage directory
(http://wiki2.dovecot.org/Pigeonhole/Sieve/Configuration#line-18), so
the relative path to the sieve storage in the active symlink would not
be empty. Looks like you didn't.

Anyway, your approach is a good workaround for now.

Regards,

Stephan.