master-settings.h revision ebaf8808cb1e9ab2571ab553793beae1e56e2db4
8900b9eb2514c07047541833286428572493a9fdStéphane Graber#ifndef __MASTER_SETTINGS_H
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi#define __MASTER_SETTINGS_H
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumienum mail_protocol {
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi MAIL_PROTOCOL_ANY,
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi MAIL_PROTOCOL_IMAP,
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi MAIL_PROTOCOL_POP3
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi};
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumistruct settings {
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi struct server_settings *server;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi enum mail_protocol protocol;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi /* common */
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi const char *base_dir;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi const char *log_path;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi const char *info_log_path;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi const char *log_timestamp;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi /* general */
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi const char *protocols;
a5ba96715d4ef264c43d4f187251de491ba198c0KATOH Yasufumi const char *listen;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi const char *ssl_listen;
8900b9eb2514c07047541833286428572493a9fdStéphane Graber
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi int ssl_disable;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi const char *ssl_cert_file;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi const char *ssl_key_file;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi const char *ssl_parameters_file;
faefa7f8584a7d1567df2e6f1f9240a28a6466abStéphane Graber unsigned int ssl_parameters_regenerate;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi int disable_plaintext_auth;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi int verbose_ssl;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi /* login */
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi const char *login_dir;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi const char *login_executable;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi const char *login_user;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi int login_process_per_connection;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi int login_chroot;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi unsigned int login_process_size;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi unsigned int login_processes_count;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi unsigned int login_max_processes_count;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi unsigned int login_max_logging_users;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi /* mail */
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi const char *valid_chroot_dirs;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi const char *mail_chroot;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi unsigned int max_mail_processes;
6127da6b3f5815028bee187ac98840cd94313841KATOH Yasufumi int verbose_proctitle;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi unsigned int first_valid_uid, last_valid_uid;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi unsigned int first_valid_gid, last_valid_gid;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi const char *default_mail_env;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi const char *mail_cache_fields;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi const char *mail_never_cache_fields;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi const char *client_workarounds;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi unsigned int mailbox_check_interval;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi unsigned int mailbox_idle_check_interval;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi int mail_full_filesystem_access;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi int mail_max_flag_length;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi int mail_save_crlf;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi int mail_read_mmaped;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi int maildir_copy_with_hardlinks;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi int maildir_check_content_changes;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi const char *mbox_locks;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi int mbox_read_dotlock;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi unsigned int mbox_lock_timeout;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi unsigned int mbox_dotlock_change_timeout;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi unsigned int umask;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi int mail_drop_priv_before_exec;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi int index_mmap_invalidate;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi const char *mail_executable;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi unsigned int mail_process_size;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi int mail_use_modules;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi const char *mail_modules;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi /* imap */
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi unsigned int imap_max_line_length;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi /* .. */
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi uid_t login_uid;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi int listen_fd, ssl_listen_fd;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi};
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumistruct auth_settings {
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi struct server_settings *parent;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi struct auth_settings *next;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi const char *name;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi const char *mechanisms;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi const char *realms;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi const char *default_realm;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi const char *userdb;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi const char *passdb;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi const char *executable;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi const char *user;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi const char *chroot;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi const char *username_chars;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi const char *anonymous_username;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi int use_cyrus_sasl, verbose;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi unsigned int count;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi unsigned int process_size;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi /* .. */
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi uid_t uid;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi gid_t gid;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi};
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumistruct namespace_settings {
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi struct server_settings *parent;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi struct namespace_settings *next;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi const char *type;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi const char *separator;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi const char *prefix;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi const char *location;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi int inbox;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi};
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumistruct server_settings {
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi struct server_settings *next;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi const char *name;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi struct settings *defaults;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi struct settings *imap;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi struct settings *pop3;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi struct auth_settings *auths;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi struct auth_settings auth_defaults;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi struct namespace_settings *namespaces;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi gid_t login_gid;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi};
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumiextern struct server_settings *settings_root;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumiint master_settings_read(const char *path);
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumivoid master_settings_init(void);
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumivoid master_settings_deinit(void);
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi#endif
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi