Hello University of Athens NOC Development Team, First, thanks for the Cyrus imapd autocreate patches; they've proven to be very useful. I noticed there is a bug in the is_script_parsable() function. Specifically, is_script_parsable() does not obey the "sieve_extensions" setting in imapd.conf(5); instead, it registers a predefined list of sieve functions. This can lead to two problems: 1. is_script_parsable() can reject as invalid a sieve script that sieve_generate_bytecode() has no issues with. 2. is_script_parsable() can accept as valid a sieve script that sieve_generate_bytecode() will fail. As an example of #1, consider these imapd.conf(5) settings: sieve_extensions: copy envelope fileinto imapflags include notify regex relational subaddress vacation autosievefolders: Junk autocreate_sieve_script: /usr/share/cyrus-imapd/sieve/default Let's say that /usr/share/cyrus-imapd/sieve/default contains: require ["include"]; include :global "spam-auto-file"; This script is valid, because sieve_extensions contains "include", but is_script_parsable() rejects it, because it doesn't register the include function: Dec 10 20:02:02 example imap[14059]: autocreate_sieve: Error while parsing script script errors: line 1: unsupported feature . As an example of #2, note that since we deliberately exclude "reject" from sieve_extensions (users always seem to want to use it to reject spam, which is very bad, because doing so generates backscatter), a script that calls reject will fail, even though is_script_parsable() will pass it. It's possible to work around this bug by compiling the Sieve script in advance with sievec, and then setting (e.g.): autocreate_sieve_script: /usr/share/cyrus-imapd/sieve/default autocreate_sieve_compiledscript: /usr/share/cyrus-imapd/sieve/default.bc This does the right thing; the user gets the byte-compiled version of the script installed and activated, but also gets the plain-text version (so they can edit it to customize it). And it's arguably better to do it this way, as then one eliminates the overhead of performing the byte-compile for all newly-created Inboxes. But, still, is_script_parsable() really should obey the sieve_extensions setting... Is this a known issue? If not, although we are in the process of migrating from Cyrus to Exchange (alas), I think I could come up with a patch for this without too much difficulty... ---- Cyrus Home Page: http://cyrusimap.web.cmu.edu/ Cyrus Wiki/FAQ: http://cyrusimap.web.cmu.edu/twiki List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html