diff options
Diffstat (limited to 'src/lib-storage/mail-storage-settings.h')
-rw-r--r-- | src/lib-storage/mail-storage-settings.h | 175 |
1 files changed, 175 insertions, 0 deletions
diff --git a/src/lib-storage/mail-storage-settings.h b/src/lib-storage/mail-storage-settings.h new file mode 100644 index 0000000..9dc8f5d --- /dev/null +++ b/src/lib-storage/mail-storage-settings.h @@ -0,0 +1,175 @@ +#ifndef MAIL_STORAGE_SETTINGS_H +#define MAIL_STORAGE_SETTINGS_H + +#include "file-lock.h" +#include "fsync-mode.h" + +#define MAIL_STORAGE_SET_DRIVER_NAME "MAIL" + +struct mail_user; +struct mail_namespace; +struct mail_storage; +struct message_address; +struct smtp_address; + +struct mail_storage_settings { + const char *mail_location; + const char *mail_attachment_fs; + const char *mail_attachment_dir; + const char *mail_attachment_hash; + uoff_t mail_attachment_min_size; + const char *mail_attribute_dict; + unsigned int mail_prefetch_count; + const char *mail_cache_fields; + const char *mail_always_cache_fields; + const char *mail_never_cache_fields; + const char *mail_server_comment; + const char *mail_server_admin; + unsigned int mail_cache_min_mail_count; + unsigned int mail_cache_unaccessed_field_drop; + uoff_t mail_cache_record_max_size; + uoff_t mail_cache_max_size; + uoff_t mail_cache_purge_min_size; + unsigned int mail_cache_purge_delete_percentage; + unsigned int mail_cache_purge_continued_percentage; + unsigned int mail_cache_purge_header_continue_count; + uoff_t mail_index_rewrite_min_log_bytes; + uoff_t mail_index_rewrite_max_log_bytes; + uoff_t mail_index_log_rotate_min_size; + uoff_t mail_index_log_rotate_max_size; + unsigned int mail_index_log_rotate_min_age; + unsigned int mail_index_log2_max_age; + unsigned int mailbox_idle_check_interval; + unsigned int mail_max_keyword_length; + unsigned int mail_max_lock_timeout; + unsigned int mail_temp_scan_interval; + unsigned int mail_vsize_bg_after_count; + unsigned int mail_sort_max_read_count; + bool mail_save_crlf; + const char *mail_fsync; + bool mmap_disable; + bool dotlock_use_excl; + bool mail_nfs_storage; + bool mail_nfs_index; + bool mailbox_list_index; + bool mailbox_list_index_very_dirty_syncs; + bool mailbox_list_index_include_inbox; + bool mail_debug; + bool mail_full_filesystem_access; + bool maildir_stat_dirs; + bool mail_shared_explicit_inbox; + const char *lock_method; + const char *pop3_uidl_format; + + const char *hostname; + const char *recipient_delimiter; + + 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; + bool parsed_mail_attachment_detection_no_flags_on_fetch; +}; + +struct mail_namespace_settings { + const char *name; + const char *type; + const char *separator; + const char *prefix; + const char *location; + const char *alias_for; + + bool inbox; + bool hidden; + const char *list; + bool subscriptions; + bool ignore_on_failure; + bool disabled; + unsigned int order; + + ARRAY(struct mailbox_settings *) mailboxes; + struct mail_user_settings *user_set; +}; + +/* <settings checks> */ +#define MAILBOX_SET_AUTO_NO "no" +#define MAILBOX_SET_AUTO_CREATE "create" +#define MAILBOX_SET_AUTO_SUBSCRIBE "subscribe" +/* </settings checks> */ +struct mailbox_settings { + const char *name; + const char *autocreate; + const char *special_use; + const char *driver; + const char *comment; + unsigned int autoexpunge; + unsigned int autoexpunge_max_mails; +}; + +struct mail_user_settings { + const char *base_dir; + const char *auth_socket_path; + const char *mail_temp_dir; + + const char *mail_uid; + const char *mail_gid; + const char *mail_home; + const char *mail_chroot; + const char *mail_access_groups; + const char *mail_privileged_group; + const char *valid_chroot_dirs; + + unsigned int first_valid_uid, last_valid_uid; + unsigned int first_valid_gid, last_valid_gid; + + const char *mail_plugins; + const char *mail_plugin_dir; + + const char *mail_log_prefix; + + const char *hostname; + const char *postmaster_address; + + ARRAY(struct mail_namespace_settings *) namespaces; + ARRAY(const char *) plugin_envs; + + /* May be NULL - use mail_storage_get_postmaster_address() instead of + directly accessing this. */ + const struct message_address *_parsed_postmaster_address; + const struct smtp_address *_parsed_postmaster_address_smtp; +}; + +extern const struct setting_parser_info mail_user_setting_parser_info; +extern const struct setting_parser_info mail_namespace_setting_parser_info; +extern const struct setting_parser_info mail_storage_setting_parser_info; +extern const struct mail_namespace_settings mail_namespace_default_settings; +extern const struct mailbox_settings mailbox_default_settings; + +struct ssl_iostream_settings; + +const void * +mail_user_set_get_driver_settings(const struct setting_parser_info *info, + const struct mail_user_settings *set, + const char *driver); + +const struct mail_storage_settings * +mail_user_set_get_storage_set(struct mail_user *user); +/* Get storage-specific settings, which may be namespace-specific. */ +const void *mail_namespace_get_driver_settings(struct mail_namespace *ns, + struct mail_storage *storage); + +const struct dynamic_settings_parser * +mail_storage_get_dynamic_parsers(pool_t pool); + +bool mail_user_set_get_postmaster_address(const struct mail_user_settings *set, + const struct message_address **address_r, + const char **error_r); +bool mail_user_set_get_postmaster_smtp(const struct mail_user_settings *set, + const struct smtp_address **address_r, + const char **error_r); + +#endif |