DEF(SET_STR, listen),
DEF(SET_ENUM, ssl),
DEF(SET_STR, default_internal_user),
+ DEF(SET_STR, default_internal_group),
DEF(SET_STR, default_login_user),
DEF(SET_UINT, default_process_limit),
DEF(SET_UINT, default_client_limit),
.listen = "*, ::",
.ssl = "yes:no:required",
.default_internal_user = "dovecot",
+ .default_internal_group = "dovecot",
.default_login_user = "dovenull",
.default_process_limit = 100,
.default_client_limit = 1000,
}
}
+static void
+expand_group(const char **group, const struct master_settings *set)
+{
+ /* $variable expansion is typically done by doveconf, but these
+ variables can come from built-in settings, so we need to expand
+ them here */
+ if (strcmp(*group, "$default_internal_group") == 0)
+ *group = set->default_internal_group;
+}
+
static bool
fix_file_listener_paths(ARRAY_TYPE(file_listener_settings) *l,
pool_t pool, const struct master_settings *master_set,
}
expand_user(&set->user, &user_default, master_set);
+ expand_group(&set->group, master_set);
if (*set->path != '/') {
set->path = p_strconcat(pool, master_set->base_dir, "/",
set->path, NULL);
}
}
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, " ");