Using Dovecot 2.2.25 and Pigeonhole 0.4.14. I can provide the output of doveconf -n if needed.
We use a moderately clever global Sieve script to create a read-only (using ACLs) backup/archive of all incoming and outgoing mails. Mail messages filtered this way are filed into folders in a namespace called "Backup", e.g. Backup/sent-backup/${year}/${month} and Backup/received-backup/${year}/${month}. The Sieve script in question can be found at the end of this message for reference.
Now obviously we generally want mailboxes to be created automatically, so we set
lda_mailbox_autocreate = yes
in dovecot.conf. We also want regular mailboxes, created by our users' own Sieve scripts, to be autocreated and autosubscribed, so we also set
lda_mailbox_autosubscribe = yes
in dovecot.conf.
But we *don't* want the Backup mailboxes to be subscribed automatically, because our users usually only need access to those when they want to restore messages accidentally deleted from their INBOX or other folders. So the idea is to keep these Backup mailboxes unsubscribed, which also saves lots of space and network traffic on the user side. When a user then wants to restore a deleted mail message they subscribe to the right Backup folder and copy the message back to their INBOX (and then unsubscribe again).
Is there a way to control autocreate/autosubscribe per namespace?
Currently it doesn't look that way, and lda_mailbox_autocreate/lda_mailbox_autosubscribe are valid globally.
The "Backup" namespace is configured this way:
namespace backup { hidden = no list = yes inbox = no location = maildir:~/Maildir-backup prefix = Backup/ separator = / type = private }
This is the Sieve script in /etc/dovecot/sieve.d/before/002-backup-mails.sieve:
require ["subaddress", "fileinto", "copy", "envelope", "imap4flags", "variables", "date", "mailbox" ];
if currentdate :matches "year" "*" { set "year" "${1}"; } if currentdate :matches "month" "*" { set "month" "${1}"; }
# This makes use of sender_bcc_maps in Postfix if envelope :detail "to" "sent-backup" { fileinto :flags "\\Seen" "Backup/sent-backup/${year}/${month}"; stop; }
# We only want to backup incoming mail if it is not marked as spam. if header :contains "X-Spam-Flag" ["YES"] { discard; stop; } else { fileinto :copy :flags "\\Seen" "Backup/received-backup/${year}/${month}"; }
Thanks,
Andreas