mail-storage-settings.h revision 50053223085da761ce3f9491f428381503ce3ec9
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh#ifndef MAIL_STORAGE_SETTINGS_H
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh#define MAIL_STORAGE_SETTINGS_H
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh#include "file-lock.h"
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh#include "fsync-mode.h"
72680cf5a1002d05d9daaa30635598ea7db543d1Darren Reed
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh#define MAIL_STORAGE_SET_DRIVER_NAME "MAIL"
94bdecd9e84ae1042607002db3e64a6849da5874Rob Gulewich
94bdecd9e84ae1042607002db3e64a6849da5874Rob Gulewichstruct mail_user;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dhstruct mail_storage;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dhstruct mail_storage_settings {
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh const char *mail_location;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh const char *mail_attachment_fs;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh const char *mail_attachment_dir;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh const char *mail_attachment_hash;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh uoff_t mail_attachment_min_size;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh const char *mail_attribute_dict;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh unsigned int mail_prefetch_count;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh const char *mail_cache_fields;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh const char *mail_always_cache_fields;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh const char *mail_never_cache_fields;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh unsigned int mail_cache_min_mail_count;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh unsigned int mailbox_idle_check_interval;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh unsigned int mail_max_keyword_length;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh unsigned int mail_max_lock_timeout;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh unsigned int mail_temp_scan_interval;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh bool mail_save_crlf;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh const char *mail_fsync;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh bool mmap_disable;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh bool dotlock_use_excl;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh bool mail_nfs_storage;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh bool mail_nfs_index;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh bool mailbox_list_index;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh bool mailbox_list_index_very_dirty_syncs;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh bool mail_debug;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh bool mail_full_filesystem_access;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh bool maildir_stat_dirs;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh bool mail_shared_explicit_inbox;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh const char *lock_method;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh const char *pop3_uidl_format;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh const char *ssl_client_ca_dir;
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed const char *ssl_client_ca_file;
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed const char *ssl_crypto_device;
94bdecd9e84ae1042607002db3e64a6849da5874Rob Gulewich
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed enum file_lock_method parsed_lock_method;
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed enum fsync_mode parsed_fsync_mode;
94bdecd9e84ae1042607002db3e64a6849da5874Rob Gulewich};
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dhstruct mail_namespace_settings {
14d3298ea5ac04e3c29e86a4769ff92a49e9f4afAlexandr Nedvedicky const char *name;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh const char *type;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh const char *separator;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh const char *prefix;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh const char *location;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh const char *alias_for;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh bool inbox;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh bool hidden;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh const char *list;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh bool subscriptions;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh bool ignore_on_failure;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh bool disabled;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh unsigned int order;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh ARRAY(struct mailbox_settings *) mailboxes;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh struct mail_user_settings *user_set;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh};
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh/* <settings checks> */
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh#define MAILBOX_SET_AUTO_NO "no"
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh#define MAILBOX_SET_AUTO_CREATE "create"
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh#define MAILBOX_SET_AUTO_SUBSCRIBE "subscribe"
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh/* </settings checks> */
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dhstruct mailbox_settings {
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh const char *name;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh const char *autocreate;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh const char *special_use;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh const char *driver;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh};
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dhstruct mail_user_settings {
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh const char *base_dir;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh const char *auth_socket_path;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh const char *mail_temp_dir;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh const char *mail_uid;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh const char *mail_gid;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh const char *mail_home;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh const char *mail_chroot;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh const char *mail_access_groups;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh const char *mail_privileged_group;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh const char *valid_chroot_dirs;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh unsigned int first_valid_uid, last_valid_uid;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh unsigned int first_valid_gid, last_valid_gid;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh
14d3298ea5ac04e3c29e86a4769ff92a49e9f4afAlexandr Nedvedicky const char *mail_plugins;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh const char *mail_plugin_dir;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh const char *mail_log_prefix;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh ARRAY(struct mail_namespace_settings *) namespaces;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh ARRAY(const char *) plugin_envs;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh};
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dhextern const struct setting_parser_info mail_user_setting_parser_info;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dhextern const struct setting_parser_info mail_namespace_setting_parser_info;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dhextern const struct setting_parser_info mail_storage_setting_parser_info;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dhextern const struct mail_namespace_settings mail_namespace_default_settings;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dhextern const struct mailbox_settings mailbox_default_settings;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dhconst void *
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dhmail_user_set_get_driver_settings(const struct setting_parser_info *info,
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh const struct mail_user_settings *set,
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh const char *driver);
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reedconst struct mail_storage_settings *
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reedmail_user_set_get_storage_set(struct mail_user *user);
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reedconst void *mail_storage_get_driver_settings(struct mail_storage *storage);
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reedconst struct dynamic_settings_parser *
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reedmail_storage_get_dynamic_parsers(pool_t pool);
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed#endif
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed