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

Reply via email to