DEF(SET_STR, mail_cache_fields),
DEF(SET_STR, mail_always_cache_fields),
DEF(SET_STR, mail_never_cache_fields),
+ DEF(SET_STR, mail_server_comment),
+ DEF(SET_STR, mail_server_admin),
DEF(SET_UINT, mail_cache_min_mail_count),
DEF(SET_TIME, mailbox_idle_check_interval),
DEF(SET_UINT, mail_max_keyword_length),
.mail_cache_fields = "flags",
.mail_always_cache_fields = "",
.mail_never_cache_fields = "imap.envelope",
+ .mail_server_comment = "",
+ .mail_server_admin = "",
.mail_cache_min_mail_count = 0,
.mailbox_idle_check_interval = 30,
.mail_max_keyword_length = 50,
{ SET_ENUM, "auto", offsetof(struct mailbox_settings, autocreate), NULL } ,
DEF(SET_STR, special_use),
DEF(SET_STR, driver),
+ DEF(SET_STR, comment),
SETTING_DEFINE_LIST_END
};
MAILBOX_SET_AUTO_CREATE":"
MAILBOX_SET_AUTO_SUBSCRIBE,
.special_use = "",
- .driver = ""
+ .driver = "",
+ .comment = ""
};
const struct setting_parser_info mailbox_setting_parser_info = {
return FALSE;
}
#endif
+
+ // FIXME: check set->mail_server_admin syntax (RFC 5464, Section 6.2.2)
+
return TRUE;
}
.get = mailbox_attribute_specialuse_get
};
+/* /private/comment, /shared/comment (RFC 5464) */
+
+static int
+mailbox_attribute_comment_get(struct mailbox_transaction_context *t,
+ const char *key ATTR_UNUSED,
+ struct mail_attribute_value *value_r)
+{
+ const struct mailbox_settings *set = t->box->set;
+
+ if (set == NULL || *set->comment == '\0')
+ return 0;
+ value_r->value = set->comment;
+ return 1;
+}
+
+static struct mailbox_attribute_internal
+iattr_mbox_prv_comment = {
+ .type = MAIL_ATTRIBUTE_TYPE_PRIVATE,
+ .key = MAILBOX_ATTRIBUTE_COMMENT,
+ .rank = MAIL_ATTRIBUTE_INTERNAL_RANK_DEFAULT,
+
+ .get = mailbox_attribute_comment_get
+};
+
+static struct mailbox_attribute_internal
+iattr_mbox_shd_comment = {
+ .type = MAIL_ATTRIBUTE_TYPE_SHARED,
+ .key = MAILBOX_ATTRIBUTE_COMMENT,
+ .rank = MAIL_ATTRIBUTE_INTERNAL_RANK_DEFAULT,
+
+ .get = mailbox_attribute_comment_get
+};
+
+/*
+ * Internal server attributes
+ */
+
+/* /shared/comment (RFC 5464) */
+
+static int
+server_attribute_comment_get(struct mailbox_transaction_context *t,
+ const char *key ATTR_UNUSED,
+ struct mail_attribute_value *value_r)
+{
+ const struct mail_storage_settings *set = t->box->storage->set;
+
+ if (*set->mail_server_comment == '\0')
+ return 0;
+ value_r->value = set->mail_server_comment;
+ return 1;
+}
+
+static struct mailbox_attribute_internal
+iattr_serv_shd_comment = {
+ .type = MAIL_ATTRIBUTE_TYPE_SHARED,
+ .key = MAILBOX_ATTRIBUTE_PREFIX_DOVECOT_PVT_SERVER
+ MAIL_SERVER_ATTRIBUTE_COMMENT,
+ .rank = MAIL_ATTRIBUTE_INTERNAL_RANK_AUTHORITY,
+
+ .get = server_attribute_comment_get
+};
+
+/* /shared/admin (RFC 5464) */
+
+static int
+server_attribute_admin_get(struct mailbox_transaction_context *t,
+ const char *key ATTR_UNUSED,
+ struct mail_attribute_value *value_r)
+{
+ const struct mail_storage_settings *set = t->box->storage->set;
+
+ if (*set->mail_server_admin == '\0')
+ return 0;
+ value_r->value = set->mail_server_admin;
+ return 1;
+}
+
+static struct mailbox_attribute_internal
+iattr_serv_shd_admin = {
+ .type = MAIL_ATTRIBUTE_TYPE_SHARED,
+ .key = MAILBOX_ATTRIBUTE_PREFIX_DOVECOT_PVT_SERVER
+ MAIL_SERVER_ATTRIBUTE_ADMIN,
+ .rank = MAIL_ATTRIBUTE_INTERNAL_RANK_AUTHORITY,
+
+ .get = server_attribute_admin_get
+};
+
/*
* Registry
*/
/* /private/specialuse (RFC 6154) */
mailbox_attribute_register_internal(&iattr_mbox_prv_special_use);
+ /* /private/comment (RFC 5464) */
+ mailbox_attribute_register_internal(&iattr_mbox_prv_comment);
+ /* /shared/comment (RFC 5464) */
+ mailbox_attribute_register_internal(&iattr_mbox_shd_comment);
+
+ /*
+ * internal server attributes
+ */
+
+ /* /shared/comment (RFC 5464) */
+ mailbox_attribute_register_internal(&iattr_serv_shd_comment);
+ /* /shared/admin (RFC 5464) */
+ mailbox_attribute_register_internal(&iattr_serv_shd_admin);
}