From: Timo Sirainen Date: Fri, 20 Aug 2010 17:19:50 +0000 (+0100) Subject: Added default_mail_extra_groups setting. imap/pop3/lmtp services' extra_groups defaul... X-Git-Tag: 2.0.1~26 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=8b55be744bdaade38b0832af5a5509ab549b2b45;p=thirdparty%2Fdovecot%2Fcore.git Added default_mail_extra_groups setting. imap/pop3/lmtp services' extra_groups defaults to it. For now this default is empty to make sure existing installations don't break. --- diff --git a/src/imap/imap-settings.c b/src/imap/imap-settings.c index 103f9e9abc..e9d072c246 100644 --- a/src/imap/imap-settings.c +++ b/src/imap/imap-settings.c @@ -34,7 +34,7 @@ struct service_settings imap_service_settings = { .user = "", .group = "", .privileged_group = "", - .extra_groups = "", + .extra_groups = "$default_mail_extra_groups", .chroot = "", .drop_priv_before_exec = FALSE, diff --git a/src/lmtp/lmtp-settings.c b/src/lmtp/lmtp-settings.c index e917593323..ffc127726d 100644 --- a/src/lmtp/lmtp-settings.c +++ b/src/lmtp/lmtp-settings.c @@ -33,7 +33,7 @@ struct service_settings lmtp_login_service_settings = { .user = "", .group = "", .privileged_group = "", - .extra_groups = "", + .extra_groups = "$default_mail_extra_groups", .chroot = "", .drop_priv_before_exec = FALSE, diff --git a/src/master/master-settings.c b/src/master/master-settings.c index be642327c8..f183844ce7 100644 --- a/src/master/master-settings.c +++ b/src/master/master-settings.c @@ -175,6 +175,7 @@ static const struct setting_define master_setting_defines[] = { DEF(SET_ENUM, ssl), DEF(SET_STR, default_internal_user), DEF(SET_STR, default_login_user), + DEF(SET_STR, default_mail_extra_groups), DEF(SET_UINT, default_process_limit), DEF(SET_UINT, default_client_limit), DEF(SET_UINT, default_idle_kill), @@ -202,6 +203,7 @@ static const struct master_settings master_default_settings = { .ssl = "yes:no:required", .default_internal_user = "dovecot", .default_login_user = "dovenull", + .default_mail_extra_groups = "", .default_process_limit = 100, .default_client_limit = 1000, .default_idle_kill = 60, @@ -256,6 +258,14 @@ expand_user(const char **user, enum service_user_default *default_r, } } +static void +expand_group(const char **group, const struct master_settings *set) +{ + /* same reason as expand_user() */ + if (strcmp(*group, "$default_mail_extra_groups") == 0) + *group = set->default_mail_extra_groups; +} + static void fix_file_listener_paths(ARRAY_TYPE(file_listener_settings) *l, pool_t pool, const struct master_settings *master_set, @@ -409,6 +419,7 @@ master_settings_verify(void *_set, pool_t pool, const char **error_r) } } expand_user(&service->user, &service->user_default, set); + expand_group(&service->extra_groups, set); service_set_login_dump_core(service); } set->protocols_split = p_strsplit_spaces(pool, set->protocols, " "); diff --git a/src/master/master-settings.h b/src/master/master-settings.h index 04f9d03a7c..35a74cf496 100644 --- a/src/master/master-settings.h +++ b/src/master/master-settings.h @@ -11,6 +11,7 @@ struct master_settings { const char *ssl; const char *default_internal_user; const char *default_login_user; + const char *default_mail_extra_groups; unsigned int default_process_limit; unsigned int default_client_limit; unsigned int default_idle_kill; diff --git a/src/pop3/pop3-settings.c b/src/pop3/pop3-settings.c index 0fa239f6ca..8c0d906f21 100644 --- a/src/pop3/pop3-settings.c +++ b/src/pop3/pop3-settings.c @@ -34,7 +34,7 @@ struct service_settings pop3_service_settings = { .user = "", .group = "", .privileged_group = "", - .extra_groups = "", + .extra_groups = "$default_mail_extra_groups", .chroot = "", .drop_priv_before_exec = FALSE,