-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On Mon, 10 Aug 2015, matthias lay wrote:


Hi Matthias,

there is another possibility:

require ["fileinto", "variables", "subaddress", "envelope"];

if envelope :detail :matches "to" "*"
{
        set "myfolder" "${1}";
} else {
        set "myfolder" "INBOX";
}
fileinto "my_${myfolder}";
stop;

/usr/local/dovecot/libexec/dovecot/deliver -d user -m box -a user+box

And enable the recipient_delimiter option.

=====

Dear Stephan,

If you find this code OK, please merge it into Pigeonhole. I find this information useful, too. The +detail and the default mailbox are not necessarily the same. Maybe, there is a namespace to expose this information easily?

For the archive:

+ This works for both LDA and LMTP.

+ The Dovecot LDA requires option -m .

+ LMTP requires an active recipient_delimiter option.

+ If there is no -m option or no +detail, INBOX is the defaultfolder.

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



- -- Steffen Kaiser
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iQEVAwUBVci1LXz1H7kL/d9rAQJJogf+PJl87IL3KEmc3uPDi7q8yJBRTChmqlGN
39SrJ6DGfe8+IZSlipJZzAAnE/nn+D/YHGcS20X40Nas4QassoZi16ZfX6OGId1O
8IvYjGc0k0Mu8Nnk0vyX0DwTA23oId0y934HCQxhxvgS6bM9iexA+Fs2KPA2ta+9
xOEtpjQCTvYFX6VvqhjQaz6lv/f+mSEoU/EFbvC9jMNV+v4a2SQ3Dazfg6OAoRUp
WfXjYAgmvsH/xbL/QGqzFkJX/1vVTBX8wJRDoZHC/XcWNr2775VFQHaO4PQrPAr/
48dHbiSwinGLBD4RkLVq7l9zZWfuxf6EMTmdNWHRO49cE3ZahxBtoQ==
=Jq9R
-----END PGP SIGNATURE-----

Reply via email to