Stephen O'Dor
2009-Aug-13 01:04 UTC
[Dovecot] Tilde expansion in ManageSieve for dovecot-1.1.
Greetings all, I'll skip the details of the setup, except to say that it has a non-standard (and non-templateable) home directory path for virtual users. Ran into the following problem when a debian (possibly from backports) packaged dovecot-1.1.2 was upgraded to a dovecot-1.1.13-2~bpo50+1 (definately from backports): sieve-storage: root directory specified by mail data does not exist: ~/Maildir After some analysis, it would appear that ManageSieve (looks like 0.10.4 is included in the debian backports) doesn't do the tilde expansion before doing a stat test to see if the ~/Maildir exists. Here's a quick diff of the change I made to make it work: sodor at madawg:~/tmp/deb-dove/dovecot-1.1-managesieve-0.10.4/src/lib-sievestorage$ diff sieve-storage.c ../../../sieve-storage.c 73c73 < const char *root_dir, *dir, *p, *d; ---> const char *root_dir, *dir, *p, *d, *home;127a128,133> /* expand tilde in root so that the stat below works */ > home = getenv("HOME"); > if (home != NULL && *home != '\0') { > root_dir = home_expand_tilde( root_dir, home ); > } >I'm not sure if this was the best way to fix this (or if this is even a bug, I might just have a crazy setup). Thanks, -Steve
Stephan Bosch
2009-Aug-13 07:39 UTC
[Dovecot] Tilde expansion in ManageSieve for dovecot-1.1.
Stephen O'Dor schreef:> Greetings all, > > I'll skip the details of the setup, except to say that it has a > non-standard (and non-templateable) home directory path for virtual > users. Ran into the following problem when a debian (possibly from > backports) packaged dovecot-1.1.2 was upgraded to a > dovecot-1.1.13-2~bpo50+1 (definately from backports): > > sieve-storage: root directory specified by mail data does not exist: ~/Maildir > > After some analysis, it would appear that ManageSieve (looks like > 0.10.4 is included in the debian backports) doesn't do the tilde > expansion before doing a stat test to see if the ~/Maildir exists. > > Here's a quick diff of the change I made to make it work: > > sodor at madawg:~/tmp/deb-dove/dovecot-1.1-managesieve-0.10.4/src/lib-sievestorage$ > diff sieve-storage.c ../../../sieve-storage.c > 73c73 > < const char *root_dir, *dir, *p, *d; > --- >> const char *root_dir, *dir, *p, *d, *home; > 127a128,133 >> /* expand tilde in root so that the stat below works */ >> home = getenv("HOME"); >> if (home != NULL && *home != '\0') { >> root_dir = home_expand_tilde( root_dir, home ); >> } >> >This was fixed some time ago: http://hg.rename-it.nl/dovecot-1.1-managesieve/rev/2515d477da9f> I'm not sure if this was the best way to fix this (or if this is even > a bug, I might just have a crazy setup).Best workaround is to just explicitly specify sieve_storage= in your config file, meaning that ManageSieve will not use your mail location. Regards, -- Stephan Bosch stephan at rename-it.nl