pigeonhole/lda accessing -m folder

matthias lay matthias.lay at securepoint.de
Mon Aug 10 11:16:12 UTC 2015



complete patch. some parts were missing before


diff --git a/src/lib-sieve/plugins/environment/ext-environment-common.c
b/src/lib-sieve/plugins/environment/ext-environment-common.c
--- a/src/lib-sieve/plugins/environment/ext-environment-common.c
+++ b/src/lib-sieve/plugins/environment/ext-environment-common.c
@@ -24,7 +24,8 @@ static const struct sieve_environment_item
*core_env_items[] = {
 	&location_env_item,
 	&phase_env_item,
 	&name_env_item,
-	&version_env_item
+	&version_env_item,
+	&defaultfolder_env_item
 };

 static unsigned int core_env_items_count = N_ELEMENTS(core_env_items);
@@ -233,7 +234,19 @@ const struct sieve_environment_item
version_env_item = {
 	.value = PIGEONHOLE_VERSION,
 };

+/* "defaultfolder":
+ * the default folder where mail is stored when no rule matches
+ */
+static const char *envit_defaultfolder_get_value
+(struct sieve_instance *svinst,
+         const struct sieve_script_env *senv)
+{
+            return senv->default_mailbox;
+}

-
+const struct sieve_environment_item defaultfolder_env_item = {
+            .name = "defaultfolder",
+            .get_value = envit_defaultfolder_get_value,
+};


diff --git a/src/lib-sieve/plugins/environment/ext-environment-common.h
b/src/lib-sieve/plugins/environment/ext-environment-common.h
--- a/src/lib-sieve/plugins/environment/ext-environment-common.h
+++ b/src/lib-sieve/plugins/environment/ext-environment-common.h
@@ -38,6 +38,7 @@ extern const struct sieve_environment_item
location_env_item;
 extern const struct sieve_environment_item phase_env_item;
 extern const struct sieve_environment_item name_env_item;
 extern const struct sieve_environment_item version_env_item;
+extern const struct sieve_environment_item defaultfolder_env_item;

 /*
  * Initialization

















On 08/07/2015 04:03 PM, matthias lay wrote:
> fixed my problem.
> 
> if somebody is interested.
> I added an variable to the environment extension, which is quite easy.
> And the value of the folder is already there. so this is all:
> 
> 
> src/lib-sieve/plugins/environment/ext-environment-common.c
> 
> static const char *envit_spfolder_get_value
> (struct sieve_instance *svinst,
>         const struct sieve_script_env *senv)
> {
>         return senv->default_mailbox;
> }
> 
> const struct sieve_environment_item spfolder_env_item = {
>         .name = "spfolder",
>         .get_value = envit_spfolder_get_value,
> };
> 
> 
> after that the variable can easily be used in a script like
> 
> if anyof ( environment :matches "spfolder" "*") {
> 	set "myfolder" "${1}";
> }
> 
> 
> 
> 
> 
> 
> 
> 
> 
> On 08/07/2015 12:40 PM, matthias lay wrote:
>> hi jost thx for the reply,
>>
>> by access I mean to read the variable
>>
>>
>> require ["fileinto", "variables", "?destfolder?" ];
>>
>> if anyof ( destfolder :matches "*") {
>>
>>         fileinto "${1}/subfolder";
>>
>> }else{
>>
>>   fileinto "INBOX/subfolder";
>>
>> }
>>
>>
>>
>> On 08/07/2015 12:26 PM, Jost Krieger wrote:
>>> On Fri Aug  7 12:19:22 2015, matthias lay wrote:
>>>  
>>>> anybody knows, if there is a way to acces the folder from a call like this
>>>>
>>>> deovecot-lda -m destfolder
>>>>
>>>> from within a sieve script?
>>>
>>> Depending on what you mean by "access", this could be as easy as
>>>
>>>  require "fileinto";
>>>
>>>  fileinto "destfolder";
>>>  
>>> Yours
>>> Jost Krieger
>>>



More information about the dovecot mailing list