DEF(SET_STR_VARS, mail_attachment_dir),
DEF(SET_STR, mail_attachment_hash),
DEF(SET_SIZE, mail_attachment_min_size),
+ DEF(SET_STR, mail_attachment_detection_options),
DEF(SET_STR_VARS, mail_attribute_dict),
DEF(SET_UINT, mail_prefetch_count),
DEF(SET_STR, mail_cache_fields),
.mail_attachment_dir = "",
.mail_attachment_hash = "%{sha1}",
.mail_attachment_min_size = 1024*128,
+ .mail_attachment_detection_options = "",
.mail_attribute_dict = "",
.mail_prefetch_count = 0,
.mail_cache_fields = "flags",
}
/* <settings checks> */
-static bool mail_storage_settings_check(void *_set, pool_t pool ATTR_UNUSED,
+static bool mail_storage_settings_check(void *_set, pool_t pool,
const char **error_r)
{
struct mail_storage_settings *set = _set;
// FIXME: check set->mail_server_admin syntax (RFC 5464, Section 6.2.2)
+ /* parse mail_attachment_indicator_options */
+ if (*set->mail_attachment_detection_options != '\0') {
+ ARRAY_TYPE(const_string) content_types;
+ p_array_init(&content_types, pool, 2);
+
+ const char *const *options =
+ t_strsplit_spaces(set->mail_attachment_detection_options, " ");
+
+ while(*options != NULL) {
+ const char *opt = *options;
+
+ if (strcmp(opt, "add-flags-on-save") == 0) {
+ set->parsed_mail_attachment_detection_add_flags_on_save = TRUE;
+ } else if (strcmp(opt, "add-flags-on-fetch") == 0) {
+ set->parsed_mail_attachment_detection_add_flags_on_fetch = TRUE;
+ } else if (strcmp(opt, "exclude-inlined") == 0) {
+ set->parsed_mail_attachment_exclude_inlined = TRUE;
+ } else if (strncmp(opt, "content-type=", 13) == 0) {
+ const char *value = p_strdup(pool, opt+13);
+ array_append(&content_types, &value, 1);
+ }
+ options++;
+ }
+
+ array_append_zero(&content_types);
+ set->parsed_mail_attachment_content_type_filter = array_idx(&content_types, 0);
+ }
+
return TRUE;
}
const char *ssl_client_ca_dir;
const char *ssl_client_ca_file;
const char *ssl_crypto_device;
+ const char *mail_attachment_detection_options;
enum file_lock_method parsed_lock_method;
enum fsync_mode parsed_fsync_mode;
+
+ const char *const *parsed_mail_attachment_content_type_filter;
+ bool parsed_mail_attachment_exclude_inlined;
+ bool parsed_mail_attachment_detection_add_flags_on_save;
+ bool parsed_mail_attachment_detection_add_flags_on_fetch;
};
struct mail_namespace_settings {