Aha! Okay, it was calling cyrus_mkdir() with the wrong path: cyrus_mkdir() expects to get a path to a *file*, and it ensures all the directory components exist (but ignores the file part). But we were passing it only the directory component (/var/spool/sieve/r/root). It was ignoring "root", assuming that was a filename, and only creating as far as ...../r/.
Attached is a patch that fixes the cyrus_mkdir() to give it one of the filenames instead. It also removes a redundant syslog line, since cyrus_mkdir() already logs all the information we need when it fails. Please let me know how it oes, ellie On Thu, Oct 15, 2015, at 07:20 AM, Artyom Aleksandrov wrote: > I'm glad to help =) After applying all patches I got follow > > Oct 14 23:11:18 imapsync cyrus/imap[28525]: User root, Inbox > subfolders, created 4, subscribed 4 Oct 14 23:11:18 imapsync > cyrus/imap[28525]: autocreate_sieve: Unable to create > /var/spool/sieve/r/root/default.script.bc.NEW: No such file or > directory Oct 14 23:11:18 imapsync cyrus/imap[28525]: > autocreate_sieve: User root, default sieve script creation failed It's > absolutely right error now, because no one directory/files is creating > under */var/spool/sieve/r *directory But tmp files gone from > */var/lib/cyrus/* > > On Fri, Oct 9, 2015 at 2:36 AM, ellie timoney > <el...@fastmail.com> wrote: >> __ >> Hi again, >> >> A couple more patches: >> >> >>>> First I guest we need NOT here (?) >>> >>> Doh! >> >> >> acsieve-sievedir.patch corrects this (though it sounds like you've >> already made this change yourself -- included for completion though) >> >> >>>> Oct 7 16:54:10 imapsync cyrus/imap[4062]: autocreate_sieve: >>>> Unable to create /var/spool/sieve/r/root/default.script.bc.NEW. Unknown error >> >> >> This wouldn't be an "unknown error" if it would bother to tell us >> what the error was.... >> >> acsieve-syslog.patch fixes this, so the actual error will be logged. >> It also fixes a bunch of similar syslog calls through this function >> that were doing the same unhelpful thing (i.e. logging an error >> without including the error message). >> >> I haven't had a chance to put together a test case for this yet, >> sorry. In the meantime hopefully the improved error messages will >> help us track this down. Thanks for sending through these >> reports! :) >> >> Cheers, >> >> >> ellie >> >> >> On Fri, Oct 9, 2015, at 08:41 AM, ellie timoney wrote: >>>> First I guest we need NOT here (?) >>> >>> Doh! >>> >>>> And second creating are failing with follow logs (yes I use 'root' >>>> user for testing) >>>> >>>> Oct 7 16:54:10 imapsync cyrus/imap[4062]: User root, Inbox >>>> subfolders, created 4, subscribed 4 Oct 7 16:54:10 imapsync >>>> cyrus/imap[4062]: autocreate_sieve: Unable to create >>>> /var/spool/sieve/r/root/default.script.bc.NEW. Unknown error Oct 7 >>>> 16:54:10 imapsync cyrus/imap[4062]: autocreate_sieve: User root, >>>> default sieve script creation failed No one files/folders are >>>> creating. >>>> >>> >>> That path looks okay, at least. I expected more problems to shake >>> out when the paths were fixed, so I'll look into this some more. >>> >>> - ellie >>> >>> On Thu, Oct 8, 2015, at 01:04 AM, Artyom Aleksandrov wrote: >>>> Hi, thank you for patch. But it does not work. (( First I guest we >>>> need NOT here (?) >>>> >>>> @@ -139,7 +138,7 @@ static int autocreate_sieve(const char *userid, >>>> const char *source_script) } >>>> >>>> /* Check if sievedir is defined in imapd.conf */ - >>>> if(!(sieve_dir = config_getstring(IMAPOPT_SIEVEDIR))) { + >>>> if(config_getstring(IMAPOPT_SIEVEDIR)) { And second creating are >>>> failing with follow logs (yes I use 'root' user for testing) >>>> >>>> Oct 7 16:54:10 imapsync cyrus/imap[4062]: User root, Inbox >>>> subfolders, created 4, subscribed 4 Oct 7 16:54:10 imapsync >>>> cyrus/imap[4062]: autocreate_sieve: Unable to create >>>> /var/spool/sieve/r/root/default.script.bc.NEW. Unknown error Oct 7 >>>> 16:54:10 imapsync cyrus/imap[4062]: autocreate_sieve: User root, >>>> default sieve script creation failed No one files/folders are >>>> creating. >>>> >>>> On Tue, Oct 6, 2015 at 3:51 AM, ellie timoney <el...@fastmail.com> >>>> wrote: >>>>> __ >>>>> Hi Artyom, >>>>> >>>>> Yeah wow, this is really gross. >>>>> >>>>> I'm pretty sure the gibberish in those "??????Default.script.bc" >>>>> filenames is just whatever junk was in the (uninitialised) >>>>> sieve_script_dir variable. >>>>> >>>>> I've had a rummage around, and there's a user_sieve_path() >>>>> function in imap/user.c that does the heavy lifting of finding a >>>>> user's sieve script directory. Looks like sieve_script_dir wanted >>>>> to be the result of that. Your fix is on the right track. :) >>>>> >>>>> I've attached a patch for 2.5.x that fixes these paths using >>>>> user_sieve_path(). It also fixes the assumption that the sievedir >>>>> value will end in a "/", which it doesn't by default, and >>>>> shouldn't need to. Can you try it out and see how it goes? (The >>>>> patch should apply cleanly on any version of 2.5, this file has >>>>> barely changed since it was created.) >>>>> >>>>> The rest of the autocreate_sieve() function is pretty awful too -- >>>>> there's almost certainly more bugs in there, and fixing the paths >>>>> might just shake them out. I'd like to tidy this up significantly >>>>> (and make some test cases for it), but in the meantime hopefully >>>>> this will get you moving forward. >>>>> >>>>> Cheers, >>>>> >>>>> >>>>> ellie >>>>> >>>>> >>>>> On Tue, Oct 6, 2015, at 12:56 AM, Artyom Aleksandrov wrote: >>>>>> Guys I don't understand hot it can work. >>>>>> >>>>>> I added additional logging and found that sieve_script_dir is not >>>>>> defined. After adding this definition the problem gone. >>>>>> >>>>>> >>>>>> 147 /* Check if autocreate_sieve_compiledscript is defined in >>>>>> imapd.conf */ 148 if(!(compiled_source_script = >>>>>> config_getstring(IMAPOPT_AUTOCREATE_SIEVE_SCRIPT_COMPILED))) { >>>>>> 149 syslog(LOG_WARNING, "autocreate_sieve: >>>>>> autocreate_sieve_compiledscript option is not defined. Compiling >>>>>> it"); 150 do_compile = 1; 151 } 152 153 char >>>>>> userletter[1]; 154 userletter[0]=userid[0]; 155 >>>>>> snprintf(sieve_script_dir, MAX_FILENAME, >>>>>> "%s%s/%s/",sieve_dir,userletter,userid); >>>>>> >>>>>> >>>>>> >>>>>> On Thu, Oct 1, 2015 at 8:49 PM, Artyom Aleksandrov >>>>>> <mailing.l...@tem4uk.ru> wrote: >>>>>>> Is it works? Which version do you use? Could you guest the >>>>>>> reason of the problem? How I can troubleshoot it? >>>>>>> >>>>>>> :/var/lib/cyrus# ls -la >>>>>>> total 2176 -rw------- 1 cyrus mail 124 Sep 25 16:04 >>>>>>> ??????Default.script.bc -rw------- 1 cyrus mail 231 Sep 25 >>>>>>> 16:04 ??????Default.script.script lrwxrwxrwx 1 cyrus mail >>>>>>> 17 Sep 25 16:04 ??????defaultbc -> Default.script.bc -rw------- >>>>>>> 1 cyrus mail 124 Jul 2 12:38 ??N???Default.script.bc -rw------- >>>>>>> 1 cyrus mail 231 Jul 2 12:38 ??N???Default.script.script >>>>>>> lrwxrwxrwx 1 cyrus mail 17 Jul 2 12:38 ??N???defaultbc -> >>>>>>> Default.script.bc -rw------- 1 cyrus mail 124 Sep 22 15:10 >>>>>>> 0#?>??Default.script.bc -rw------- 1 cyrus mail 231 Sep 22 >>>>>>> 15:10 0#?>??Default.script.script lrwxrwxrwx 1 cyrus mail >>>>>>> 17 Sep 22 15:10 0#?>??defaultbc -> Default.script.bc >>>>>>> >>>>>>> >>>>>>> On Thu, Oct 1, 2015 at 7:55 PM, Alvin Starr <al...@netvel.net> >>>>>>> wrote: >>>>>>>> I use autocreate. >>>>>>>> >>>>>>>> So there is at least one. >>>>>>>> >>>>>>>> >>>>>>>> On 10/01/2015 12:18 PM, Artyom Aleksandrov wrote: >>>>>>>>> Does anybody use autocreate_sieve? >>>>>>>>> >>>>>>>>> On Sat, Sep 26, 2015 at 1:30 AM, Artyom Aleksandrov <mailing.l...@tem4uk.ru> wrote: >>>>>>>>>> >>>>>>>>>> Hello,I want to create default sieve scipt for all my users but I stuck with strange problem that looks like the bug. Unfortunately I've never wrote on C so it's difficult for me to find it. >>>>>>>>>> When Cyrus (2.5.3 or 2.5.6) create default sieve script it doesn't put file in sieve_dir/?/user folder. It jist creates tmp files in configdirectory with names like this >>>>>>>>>> -rw------- 1 cyrus mail 124 Sep 26 00:41 ?&?P??default.script.bc >>>>>>>>>> -rw------- 1 cyrus mail 231 Sep 26 00:41 ?&?P??default.script.script >>>>>>>>>> lrwxrwxrwx 1 cyrus mail 17 Sep 26 00:41 ?&?P??defaultbc -> default.script.bc >>>>>>>>>> >>>>>>>>>> There are not checks in this stage so my syslog is clean of error. >>>>>>>>>> Everything seems fine. Sep 26 00:41:34 imapsync cyrus/imap[26117]: autocreate_sieve: Problem opening compiled script file: default.script.bc. Compiling it >>>>>>>>>> Sep 26 00:41:34 imapsync cyrus/imap[26117]: autocreate_sieve: Compiled sieve script was successfully saved in default.script.bc >>>>>>>>>> Sep 26 00:41:34 imapsync cyrus/imap[26117]: autocreate_sieve: User XXXX, default sieve script creation succeeded >>>>>>>>>> >>>>>>>>>> My setting: autocreate_sieve_script: /var/spool/sieve/global/default.script >>>>>>>>>> autocreate_sieve_script_compile: yes >>>>>>>>>> autocreate_sieve_script_compiled: default.script.bc >>>>>>>>>> sievedir: /var/spool/sieve/ >>>>>>>>>> Distributive: Ubuntu 14.04.3 >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> I'll be glad for any help. ) >>>>>>>>>> >>>>>>>>>> Best regards, Artyom >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> ---- Cyrus Home Page: http://www.cyrusimap.org/ List Archives/Info: http://lists.andrew.cmu.edu/pipermail/info-cyrus/ To Unsubscribe: >>>>>>>>> https://lists.andrew.cmu.edu/mailman/listinfo/info-cyrus >>>>>>>>> >>>>>>>> >>>>>>>> -- Alvin Starr || voice: (905)513-7688[1] Netvel Inc. || Cell: (416)806-0133[2] al...@netvel.net || >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> ---- >>>>>>>> Cyrus Home Page: http://www.cyrusimap.org/ List Archives/Info: >>>>>>>> http://lists.andrew.cmu.edu/pipermail/info-cyrus/ To >>>>>>>> Unsubscribe: >>>>>>>> https://lists.andrew.cmu.edu/mailman/listinfo/info-cyrus >>>>>> ---- >>>>>> Cyrus Home Page: http://www.cyrusimap.org/ List Archives/Info: >>>>>> http://lists.andrew.cmu.edu/pipermail/info-cyrus/ To Unsubscribe: >>>>>> https://lists.andrew.cmu.edu/mailman/listinfo/info-cyrus >>>>> >>>>> >>>>> ---- >>>>> Cyrus Home Page: http://www.cyrusimap.org/ List Archives/Info: >>>>> http://lists.andrew.cmu.edu/pipermail/info-cyrus/ To Unsubscribe: >>>>> https://lists.andrew.cmu.edu/mailman/listinfo/info-cyrus >>> >>> ---- >>> Cyrus Home Page: http://www.cyrusimap.org/ List Archives/Info: >>> http://lists.andrew.cmu.edu/pipermail/info-cyrus/ To Unsubscribe: >>> https://lists.andrew.cmu.edu/mailman/listinfo/info-cyrus >> Links: 1. tel:%28905%29513-7688 2. tel:%28416%29806-0133
diff --git a/imap/autocreate.c b/imap/autocreate.c index 765eb7a..b04993f 100644 --- a/imap/autocreate.c +++ b/imap/autocreate.c @@ -198,10 +198,9 @@ static int autocreate_sieve(const char *userid, const char *source_script) */ /* Create the directory where the sieve scripts will reside */ - r = cyrus_mkdir(sieve_script_dir, 0755); + r = cyrus_mkdir(sieve_bctmpname, 0755); if(r == -1) { /* If this fails we just leave */ - syslog(LOG_WARNING,"autocreate_sieve: Unable to create directory %s. Check permissions",sieve_script_name); fclose(in_stream); return 1; }
---- Cyrus Home Page: http://www.cyrusimap.org/ List Archives/Info: http://lists.andrew.cmu.edu/pipermail/info-cyrus/ To Unsubscribe: https://lists.andrew.cmu.edu/mailman/listinfo/info-cyrus