-----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-----