mail-storage-settings.h revision 57b819d3aa978b88ef478e4f2397c32db231ebb7
c25356d5978632df6203437e1953bcb29e0c736fTimo Sirainen#ifndef MAIL_STORAGE_SETTINGS_H
c25356d5978632df6203437e1953bcb29e0c736fTimo Sirainen#define MAIL_STORAGE_SETTINGS_H
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen
e7ca5f820d6a1a8fe549a2966ac707a60e055ef4Timo Sirainen#include "file-lock.h"
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen#include "fsync-mode.h"
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen#define MAIL_STORAGE_SET_DRIVER_NAME "MAIL"
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainenstruct mail_user;
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainenstruct mail_storage;
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainenstruct mail_storage_settings {
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen const char *mail_location;
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen const char *mail_attachment_fs;
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen const char *mail_attachment_dir;
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen const char *mail_attachment_hash;
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen uoff_t mail_attachment_min_size;
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen unsigned int mail_prefetch_count;
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen const char *mail_cache_fields;
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen const char *mail_never_cache_fields;
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen unsigned int mail_cache_min_mail_count;
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen unsigned int mailbox_idle_check_interval;
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen unsigned int mail_max_keyword_length;
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen unsigned int mail_max_lock_timeout;
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen unsigned int mail_temp_scan_interval;
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen bool mail_save_crlf;
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen const char *mail_fsync;
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen bool mmap_disable;
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen bool dotlock_use_excl;
2f122b4db3f0d4eeb59ff9d306e54b2009d72cf9Timo Sirainen bool mail_nfs_storage;
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen bool mail_nfs_index;
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen bool mailbox_list_index;
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen bool mail_debug;
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen bool mail_full_filesystem_access;
2f122b4db3f0d4eeb59ff9d306e54b2009d72cf9Timo Sirainen bool maildir_stat_dirs;
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen bool mail_shared_explicit_inbox;
2f122b4db3f0d4eeb59ff9d306e54b2009d72cf9Timo Sirainen const char *lock_method;
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen const char *pop3_uidl_format;
2f122b4db3f0d4eeb59ff9d306e54b2009d72cf9Timo Sirainen
2f122b4db3f0d4eeb59ff9d306e54b2009d72cf9Timo Sirainen enum file_lock_method parsed_lock_method;
2f122b4db3f0d4eeb59ff9d306e54b2009d72cf9Timo Sirainen enum fsync_mode parsed_fsync_mode;
2f122b4db3f0d4eeb59ff9d306e54b2009d72cf9Timo Sirainen};
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainenstruct mail_namespace_settings {
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen const char *name;
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen const char *type;
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen const char *separator;
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen const char *prefix;
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen const char *location;
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen const char *alias_for;
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen bool inbox;
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen bool hidden;
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen const char *list;
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen bool subscriptions;
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen bool ignore_on_failure;
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen bool disabled;
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen ARRAY(struct mailbox_settings *) mailboxes;
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen struct mail_user_settings *user_set;
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen};
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen/* <settings checks> */
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen#define MAILBOX_SET_AUTO_NO "no"
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen#define MAILBOX_SET_AUTO_CREATE "create"
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen#define MAILBOX_SET_AUTO_SUBSCRIBE "subscribe"
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen/* </settings checks> */
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainenstruct mailbox_settings {
2f122b4db3f0d4eeb59ff9d306e54b2009d72cf9Timo Sirainen const char *name;
2f122b4db3f0d4eeb59ff9d306e54b2009d72cf9Timo Sirainen const char *autocreate;
2f122b4db3f0d4eeb59ff9d306e54b2009d72cf9Timo Sirainen const char *special_use;
2f122b4db3f0d4eeb59ff9d306e54b2009d72cf9Timo Sirainen};
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainenstruct mail_user_settings {
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen const char *base_dir;
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen const char *auth_socket_path;
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen const char *mail_temp_dir;
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen const char *mail_uid;
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen const char *mail_gid;
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen const char *mail_home;
e7ca5f820d6a1a8fe549a2966ac707a60e055ef4Timo Sirainen const char *mail_chroot;
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen const char *mail_access_groups;
2f122b4db3f0d4eeb59ff9d306e54b2009d72cf9Timo Sirainen const char *mail_privileged_group;
e622f05170aecc10e71f117d4d7baf55c5d12b77Timo Sirainen const char *valid_chroot_dirs;
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen unsigned int first_valid_uid, last_valid_uid;
2f122b4db3f0d4eeb59ff9d306e54b2009d72cf9Timo Sirainen unsigned int first_valid_gid, last_valid_gid;
2f122b4db3f0d4eeb59ff9d306e54b2009d72cf9Timo Sirainen
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen const char *mail_plugins;
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen const char *mail_plugin_dir;
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen const char *mail_log_prefix;
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen ARRAY(struct mail_namespace_settings *) namespaces;
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen ARRAY(const char *) plugin_envs;
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen};
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainenextern const struct setting_parser_info mail_user_setting_parser_info;
2f122b4db3f0d4eeb59ff9d306e54b2009d72cf9Timo Sirainenextern const struct setting_parser_info mail_namespace_setting_parser_info;
2f122b4db3f0d4eeb59ff9d306e54b2009d72cf9Timo Sirainenextern const struct setting_parser_info mail_storage_setting_parser_info;
2f122b4db3f0d4eeb59ff9d306e54b2009d72cf9Timo Sirainenextern const struct mail_namespace_settings mail_namespace_default_settings;
2f122b4db3f0d4eeb59ff9d306e54b2009d72cf9Timo Sirainenextern const struct mailbox_settings mailbox_default_settings;
2f122b4db3f0d4eeb59ff9d306e54b2009d72cf9Timo Sirainen
2f122b4db3f0d4eeb59ff9d306e54b2009d72cf9Timo Sirainenconst void *
2f122b4db3f0d4eeb59ff9d306e54b2009d72cf9Timo Sirainenmail_user_set_get_driver_settings(const struct setting_parser_info *info,
2f122b4db3f0d4eeb59ff9d306e54b2009d72cf9Timo Sirainen const struct mail_user_settings *set,
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen const char *driver);
e7ca5f820d6a1a8fe549a2966ac707a60e055ef4Timo Sirainenconst struct mail_storage_settings *
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainenmail_user_set_get_storage_set(struct mail_user *user);
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainenconst void *mail_storage_get_driver_settings(struct mail_storage *storage);
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainenenum mail_index_open_flags
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainenmail_storage_settings_to_index_flags(const struct mail_storage_settings *set);
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainenconst struct dynamic_settings_parser *
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainenmail_storage_get_dynamic_parsers(pool_t pool);
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen#endif
7fb70daba4e571eab5b64f496d20b9e37e31141bTimo Sirainen