diff --git a/src/lib-sieve/sieve-actions.c b/src/lib-sieve/sieve-actions.c index 2462395079d47bcc948bf3076f235616328c2509..be5e0f2242098996f75a2ab9ba8f807692cbf0c8 100644 --- a/src/lib-sieve/sieve-actions.c +++ b/src/lib-sieve/sieve-actions.c @@ -168,10 +168,18 @@ static void act_store_get_storage_error static struct mailbox *act_store_mailbox_open (const struct sieve_action_exec_env *aenv, struct mail_namespace *ns, const char *folder) { + enum mailbox_open_flags open_flags = + MAILBOX_OPEN_FAST | MAILBOX_OPEN_KEEP_RECENT | + MAILBOX_OPEN_SAVEONLY | MAILBOX_OPEN_POST_SESSION; struct mailbox *box; + if (strcasecmp(name, "INBOX") == 0) { + /* Deliveries to INBOX must always succeed, regardless of ACLs */ + open_flags |= MAILBOX_OPEN_IGNORE_ACLS; + } + box = mailbox_open - (ns->storage, folder, NULL, MAILBOX_OPEN_FAST |MAILBOX_OPEN_KEEP_RECENT); + (ns->storage, folder, NULL, open_flags); if ( box == NULL && aenv->scriptenv->mailbox_autocreate ) { enum mail_error error; @@ -191,7 +199,7 @@ static struct mailbox *act_store_mailbox_open /* Try opening again */ box = mailbox_open - (ns->storage, folder, NULL, MAILBOX_OPEN_FAST | MAILBOX_OPEN_KEEP_RECENT); + (ns->storage, folder, NULL, open_flags); if (box == NULL) return NULL;