Add a config variable mailbox_default_options which allows you to, for example, enable CONDSTORE on all new mailboxes by default.
It's a bitmask, which is on the skanky end of interfaces, but there you go. --- imap/mailbox.c | 8 +++++--- lib/imapoptions | 5 +++++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/imap/mailbox.c b/imap/mailbox.c index 58ed79b..c421b56 100644 --- a/imap/mailbox.c +++ b/imap/mailbox.c @@ -959,7 +959,8 @@ int mailbox_read_index_header(struct mailbox *mailbox) ntohl(*((bit32 *)(mailbox->index_base+OFFSET_HIGHESTMODSEQ))); #endif - if (!mailbox->exists) mailbox->options |= OPT_POP3_NEW_UIDL; + if (!mailbox->exists) + mailbox->options |= OPT_POP3_NEW_UIDL; if (!mailbox_doing_reconstruct && (mailbox->minor_version < MAILBOX_MINOR_VERSION)) { @@ -1637,7 +1638,8 @@ static void mailbox_upgrade_index_work(struct mailbox *mailbox, calculate_flagcounts = 1; } if (oldstart_offset < OFFSET_MAILBOX_OPTIONS-quota_offset+sizeof(bit32)) { - unsigned long options = !exists ? OPT_POP3_NEW_UIDL : 0; + unsigned long options = config_getint(IMAPOPT_MAILBOX_DEFAULT_OPTIONS); + if (!exists) options |= OPT_POP3_NEW_UIDL; *((bit32 *)(buf+OFFSET_MAILBOX_OPTIONS)) = htonl(options); } @@ -2730,7 +2732,7 @@ int mailbox_create(const char *name, mailbox.deleted = 0; mailbox.answered = 0; mailbox.flagged = 0; - mailbox.options = OPT_POP3_NEW_UIDL; + mailbox.options = config_getint(IMAPOPT_MAILBOX_DEFAULT_OPTIONS) | OPT_POP3_NEW_UIDL; mailbox.leaked_cache_records = 0; mailbox.highestmodseq = 1; diff --git a/lib/imapoptions b/lib/imapoptions index 0e6f4eb..cb05645 100644 --- a/lib/imapoptions +++ b/lib/imapoptions @@ -534,6 +534,11 @@ are listed with ``<none>''. /* Include notations in the protocol telemetry logs indicating the number of seconds since the last command or response. */ +{ "mailbox_default_options", 0, INT } +/* Default "options" field for the mailbox on create. You'll want to know + what you're doing before setting this, but it can apply some default + annotations like condstore or duplicate supression */ + { "mailnotifier", NULL, STRING } /* Notifyd(8) method to use for "MAIL" notifications. If not set, "MAIL" notifications are disabled. */ -- 1.5.6.3