Le 09-Jan-10 20:29, Stephan Bosch a écrit :
I thought this would be an excellent opportunity to test the new Pigeonhole plugin support and also to do something interesting with the namespace functionality of the variables extension. That is why I gave this a short look, which promptly resulted in a preliminary implementation.
If you want to play around with it, you can download it from:
http://hg.rename-it.nl/pigeonhole-sieve-extdata/
It will compile and run with both Pigeonhole for Dovecot v1.2 and Pigeonhole for Dovecot v2.0, but only with the tip Mercurial revisions (since only those have plugin support).
Thanks Stephan,
I have the extdata plugin compiled, and am now trying to make a global sieve script to test it. I'm running into problems when using sievec to compile the script - I'm not getting the plugin's variables that are provided in dovecot.conf's plugin {}. I added a few sieve_sys_warning messages to track the calls to sieve_setting_get()
<output> /usr/local/bin/sievec -d -P sieve_extdata /usr/local/etc/dovecot/sieve/before.sv Warning: sieve: sieve_setting_get: req: 'sieve_max_script_size' res: '(null)' Warning: sieve: sieve_setting_get: req: 'sieve_max_actions' res: '(null)' Warning: sieve: sieve_setting_get: req: 'sieve_max_redirects' res: '(null)' Warning: sieve: sieve_setting_get: req: 'sieve_subaddress_sep' res: '(null)' Warning: sieve: sieve_setting_get: req: 'recipient_delimiter' res: '(null)' Warning: sieve: sieve_setting_get: req: 'sieve_plugin_dir' res: '(null)' Warning: sieve: sieve_setting_get: req: 'sieve_plugins' res: '(null)' Warning: sieve: sieve_setting_get: req: 'sieve_extdata_dict_uri' res: '(null)' Warning: sieve: extdata: no dict uri specified, extension is unconfigured (sieve_extdata_dict_uri is not set).
Required extensions:
0: vacation (9) 1: variables (17) 2: vnd.dovecot.extdata (29)
Main program (block: 1):
00000000: EXTENSIONS [3]: 00000001: vacation 00000002: variables 00000003: SCOPE [0] (end: 00000008) 00000008: vnd.dovecot.extdata 00000009: VACATION 0000000a: (source line: 3) 0000000d: subject: VAR ${extdata.vacation_subject} 00000023: reason: VAR ${extdata.vacation_message} 00000038: handle: STR[77] "${extdata.vacation_message}${extdata.vacation_subject}<default-from><NO-MIME>" 00000088: [End of code] </output>
I'm new to dovecot's internals, it looks like it just needs some environment variables provided, but I'm puzzled as to how this is to be done. I've traced it through sievec.c -> sieve_tool_sieve_env -> sieve_tool_get_setting -> getenv() call.
More info:
- I've traced the process, there's no attempt to open or stat any dovecot.conf
- using tip dovecot-1.2, dovecot-1.2-sieve, pigeonhole-sieve-extdata.
I pulled+updated & rebuilt and confirmed the above behaviour just prior to sending this message. - The test scripts run because the test framework uses the test_config mechanism to provide sieve_extdata_dict_uri.
Any hints on how to get the dovecot.conf data to sievec?
Thanks,
-Martin Foster