mail-storage-settings.h revision 46e917c9fa05cbe7bddf805d3a9838b61e3960e1
e437b19c184243f688c2dd9b3bf083a454c804c7Julian Kornberger#ifndef MAIL_STORAGE_SETTINGS_H
e437b19c184243f688c2dd9b3bf083a454c804c7Julian Kornberger#define MAIL_STORAGE_SETTINGS_H
e3ae5c822699ae375f274bec0a24c1a0b36b731fJulian Kornberger
dca8e84db91cb5a99bbe25b83c731fa3b96263d6Eugen Kuksa#include "file-lock.h"
8020ba658ffa8f8c9a14ba3a7d2e9257ea400becTim Reddehase#include "fsync-mode.h"
8020ba658ffa8f8c9a14ba3a7d2e9257ea400becTim Reddehase
e937ecc97e91f77e9f1f63de78c8bd8f074865b9Eugen Kuksa#define MAIL_STORAGE_SET_DRIVER_NAME "MAIL"
e3ae5c822699ae375f274bec0a24c1a0b36b731fJulian Kornberger
e437b19c184243f688c2dd9b3bf083a454c804c7Julian Kornbergerstruct mail_user;
4e4dd16617d60a2293b37431ebc21d94aeea80dcEugen Kuksastruct mail_namespace;
e437b19c184243f688c2dd9b3bf083a454c804c7Julian Kornbergerstruct mail_storage;
e437b19c184243f688c2dd9b3bf083a454c804c7Julian Kornberger
0782f0889387f60a6bcf31f9f869c930466db1dbEugen Kuksastruct mail_storage_settings {
dc6831d0eb2d0ab3af7b0268a429562b110e07bbTim Reddehase const char *mail_location;
17e57f34169ca7ed023832806a77f0e0613074f1Tim Reddehase const char *mail_attachment_fs;
e437b19c184243f688c2dd9b3bf083a454c804c7Julian Kornberger const char *mail_attachment_dir;
7aa257096578ae891833367f3e2cc75ded9dbd36Eileen Bolloff const char *mail_attachment_hash;
daa05c1ca31894d2bcba80bea773829908efbef8Tim Reddehase uoff_t mail_attachment_min_size;
daa05c1ca31894d2bcba80bea773829908efbef8Tim Reddehase const char *mail_attribute_dict;
7aa257096578ae891833367f3e2cc75ded9dbd36Eileen Bolloff unsigned int mail_prefetch_count;
e437b19c184243f688c2dd9b3bf083a454c804c7Julian Kornberger const char *mail_cache_fields;
e437b19c184243f688c2dd9b3bf083a454c804c7Julian Kornberger const char *mail_always_cache_fields;
e437b19c184243f688c2dd9b3bf083a454c804c7Julian Kornberger const char *mail_never_cache_fields;
e437b19c184243f688c2dd9b3bf083a454c804c7Julian Kornberger const char *mail_server_comment;
ef68dc9d6ba7fc331ecdef35f74cff6bb12835b8Tim Reddehase const char *mail_server_admin;
ef68dc9d6ba7fc331ecdef35f74cff6bb12835b8Tim Reddehase unsigned int mail_cache_min_mail_count;
789e293810190b918998fa027c76126e7aa4bf38henning mueller unsigned int mailbox_idle_check_interval;
ef68dc9d6ba7fc331ecdef35f74cff6bb12835b8Tim Reddehase unsigned int mail_max_keyword_length;
ef68dc9d6ba7fc331ecdef35f74cff6bb12835b8Tim Reddehase unsigned int mail_max_lock_timeout;
ef68dc9d6ba7fc331ecdef35f74cff6bb12835b8Tim Reddehase unsigned int mail_temp_scan_interval;
ef68dc9d6ba7fc331ecdef35f74cff6bb12835b8Tim Reddehase bool mail_save_crlf;
ef68dc9d6ba7fc331ecdef35f74cff6bb12835b8Tim Reddehase const char *mail_fsync;
ef68dc9d6ba7fc331ecdef35f74cff6bb12835b8Tim Reddehase bool mmap_disable;
ef68dc9d6ba7fc331ecdef35f74cff6bb12835b8Tim Reddehase bool dotlock_use_excl;
c829cb13b4875500efbe54aaa3d3c013564d9a8dTim Reddehase bool mail_nfs_storage;
8bc65b8b85b830b0432ea7701f2047acd552cedcTim Reddehase bool mail_nfs_index;
3b5cf2ac667519a8140833a003a74991fd20f5b5Eugen Kuksa bool mailbox_list_index;
3b5cf2ac667519a8140833a003a74991fd20f5b5Eugen Kuksa bool mailbox_list_index_very_dirty_syncs;
3b5cf2ac667519a8140833a003a74991fd20f5b5Eugen Kuksa bool mail_debug;
3b5cf2ac667519a8140833a003a74991fd20f5b5Eugen Kuksa bool mail_full_filesystem_access;
297d4dd3c6e0819eebb2ba39e04536053691c0feEugen Kuksa bool maildir_stat_dirs;
297d4dd3c6e0819eebb2ba39e04536053691c0feEugen Kuksa bool mail_shared_explicit_inbox;
297d4dd3c6e0819eebb2ba39e04536053691c0feEugen Kuksa const char *lock_method;
297d4dd3c6e0819eebb2ba39e04536053691c0feEugen Kuksa const char *pop3_uidl_format;
297d4dd3c6e0819eebb2ba39e04536053691c0feEugen Kuksa
297d4dd3c6e0819eebb2ba39e04536053691c0feEugen Kuksa const char *ssl_client_ca_dir;
297d4dd3c6e0819eebb2ba39e04536053691c0feEugen Kuksa const char *ssl_client_ca_file;
297d4dd3c6e0819eebb2ba39e04536053691c0feEugen Kuksa const char *ssl_crypto_device;
297d4dd3c6e0819eebb2ba39e04536053691c0feEugen Kuksa
297d4dd3c6e0819eebb2ba39e04536053691c0feEugen Kuksa enum file_lock_method parsed_lock_method;
297d4dd3c6e0819eebb2ba39e04536053691c0feEugen Kuksa enum fsync_mode parsed_fsync_mode;
297d4dd3c6e0819eebb2ba39e04536053691c0feEugen Kuksa};
297d4dd3c6e0819eebb2ba39e04536053691c0feEugen Kuksa
297d4dd3c6e0819eebb2ba39e04536053691c0feEugen Kuksastruct mail_namespace_settings {
297d4dd3c6e0819eebb2ba39e04536053691c0feEugen Kuksa const char *name;
297d4dd3c6e0819eebb2ba39e04536053691c0feEugen Kuksa const char *type;
297d4dd3c6e0819eebb2ba39e04536053691c0feEugen Kuksa const char *separator;
297d4dd3c6e0819eebb2ba39e04536053691c0feEugen Kuksa const char *prefix;
297d4dd3c6e0819eebb2ba39e04536053691c0feEugen Kuksa const char *location;
b5d0ff6d0e8ec48e5e484716f3ae17e9cacf3987Eugen Kuksa const char *alias_for;
b5d0ff6d0e8ec48e5e484716f3ae17e9cacf3987Eugen Kuksa
38eb8e414b6c73efa6bcf81760625385094b757bEugen Kuksa bool inbox;
b5d0ff6d0e8ec48e5e484716f3ae17e9cacf3987Eugen Kuksa bool hidden;
b5d0ff6d0e8ec48e5e484716f3ae17e9cacf3987Eugen Kuksa const char *list;
26352e190f20e63d3cf5cd756372f5b32001cca9Eugen Kuksa bool subscriptions;
26352e190f20e63d3cf5cd756372f5b32001cca9Eugen Kuksa bool ignore_on_failure;
26352e190f20e63d3cf5cd756372f5b32001cca9Eugen Kuksa bool disabled;
26352e190f20e63d3cf5cd756372f5b32001cca9Eugen Kuksa unsigned int order;
26352e190f20e63d3cf5cd756372f5b32001cca9Eugen Kuksa
b5d0ff6d0e8ec48e5e484716f3ae17e9cacf3987Eugen Kuksa ARRAY(struct mailbox_settings *) mailboxes;
b5d0ff6d0e8ec48e5e484716f3ae17e9cacf3987Eugen Kuksa struct mail_user_settings *user_set;
e437b19c184243f688c2dd9b3bf083a454c804c7Julian Kornberger};
297d4dd3c6e0819eebb2ba39e04536053691c0feEugen Kuksa
297d4dd3c6e0819eebb2ba39e04536053691c0feEugen Kuksa/* <settings checks> */
297d4dd3c6e0819eebb2ba39e04536053691c0feEugen Kuksa#define MAILBOX_SET_AUTO_NO "no"
e437b19c184243f688c2dd9b3bf083a454c804c7Julian Kornberger#define MAILBOX_SET_AUTO_CREATE "create"
e437b19c184243f688c2dd9b3bf083a454c804c7Julian Kornberger#define MAILBOX_SET_AUTO_SUBSCRIBE "subscribe"
e437b19c184243f688c2dd9b3bf083a454c804c7Julian Kornberger/* </settings checks> */
e437b19c184243f688c2dd9b3bf083a454c804c7Julian Kornbergerstruct mailbox_settings {
a06b758dc863e147d288497ee69491afc2d23b7dTim Reddehase const char *name;
e437b19c184243f688c2dd9b3bf083a454c804c7Julian Kornberger const char *autocreate;
5931410e830c72a0c88879ed8acf01a1210a42adEugen Kuksa const char *special_use;
5931410e830c72a0c88879ed8acf01a1210a42adEugen Kuksa const char *driver;
6b3c7e4142f5868d6ad67b43926905ffa851caecEugen Kuksa const char *comment;
6b3c7e4142f5868d6ad67b43926905ffa851caecEugen Kuksa unsigned int autoexpunge;
6b3c7e4142f5868d6ad67b43926905ffa851caecEugen Kuksa unsigned int autoexpunge_max_mails;
6b3c7e4142f5868d6ad67b43926905ffa851caecEugen Kuksa};
297d4dd3c6e0819eebb2ba39e04536053691c0feEugen Kuksa
836ef862a9f5bd2a1d5c68bbccb11c00b248758aTim Reddehasestruct mail_user_settings {
6b136443f2bc8ea49192210a7281ffa0f44b14fcTim Reddehase const char *base_dir;
297d4dd3c6e0819eebb2ba39e04536053691c0feEugen Kuksa const char *auth_socket_path;
297d4dd3c6e0819eebb2ba39e04536053691c0feEugen Kuksa const char *mail_temp_dir;
297d4dd3c6e0819eebb2ba39e04536053691c0feEugen Kuksa
297d4dd3c6e0819eebb2ba39e04536053691c0feEugen Kuksa const char *mail_uid;
836ef862a9f5bd2a1d5c68bbccb11c00b248758aTim Reddehase const char *mail_gid;
836ef862a9f5bd2a1d5c68bbccb11c00b248758aTim Reddehase const char *mail_home;
cfe6bf1bc38ab15b759dee8bb5c86c3727058a2eTim Reddehase const char *mail_chroot;
cfe6bf1bc38ab15b759dee8bb5c86c3727058a2eTim Reddehase const char *mail_access_groups;
cfe6bf1bc38ab15b759dee8bb5c86c3727058a2eTim Reddehase const char *mail_privileged_group;
6876ece18854869a08606c12e0e814435fa73a29Tim Reddehase const char *valid_chroot_dirs;
6876ece18854869a08606c12e0e814435fa73a29Tim Reddehase
6876ece18854869a08606c12e0e814435fa73a29Tim Reddehase unsigned int first_valid_uid, last_valid_uid;
6876ece18854869a08606c12e0e814435fa73a29Tim Reddehase unsigned int first_valid_gid, last_valid_gid;
e437b19c184243f688c2dd9b3bf083a454c804c7Julian Kornberger
e437b19c184243f688c2dd9b3bf083a454c804c7Julian Kornberger const char *mail_plugins;
e437b19c184243f688c2dd9b3bf083a454c804c7Julian Kornberger const char *mail_plugin_dir;
e437b19c184243f688c2dd9b3bf083a454c804c7Julian Kornberger
1b739f5dd48dc239e3b0500a9b64c58e4e2efd29Eugen Kuksa const char *mail_log_prefix;
1b739f5dd48dc239e3b0500a9b64c58e4e2efd29Eugen Kuksa
61467f8ae537212ba3c895868c91235a21985cb8Tim Reddehase ARRAY(struct mail_namespace_settings *) namespaces;
e437b19c184243f688c2dd9b3bf083a454c804c7Julian Kornberger ARRAY(const char *) plugin_envs;
e437b19c184243f688c2dd9b3bf083a454c804c7Julian Kornberger};
e437b19c184243f688c2dd9b3bf083a454c804c7Julian Kornberger
e437b19c184243f688c2dd9b3bf083a454c804c7Julian Kornbergerextern const struct setting_parser_info mail_user_setting_parser_info;
e437b19c184243f688c2dd9b3bf083a454c804c7Julian Kornbergerextern const struct setting_parser_info mail_namespace_setting_parser_info;
ee9341b3b65f9d567605249940e4948af119e784Eugen Kuksaextern const struct setting_parser_info mail_storage_setting_parser_info;
ee9341b3b65f9d567605249940e4948af119e784Eugen Kuksaextern const struct mail_namespace_settings mail_namespace_default_settings;
ee9341b3b65f9d567605249940e4948af119e784Eugen Kuksaextern const struct mailbox_settings mailbox_default_settings;
ee9341b3b65f9d567605249940e4948af119e784Eugen Kuksa
e437b19c184243f688c2dd9b3bf083a454c804c7Julian Kornbergerconst 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);
/* FIXME: Obsolete - remove in v2.3 */
const void *mail_storage_get_driver_settings(struct mail_storage *storage);
const struct dynamic_settings_parser *
mail_storage_get_dynamic_parsers(pool_t pool);
#endif