master-settings.c revision d646fdbd060e799a7a3812e63ae66471cd4a9086
8900b9eb2514c07047541833286428572493a9fdStéphane Graber/* Copyright (C) 2002 Timo Sirainen */
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi { type, #name, offsetof(struct settings, name) }
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi /* general */
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi { type, #name, offsetof(struct login_settings, name) }
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumistatic struct setting_def login_setting_defs[] = {
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi { type, #name, offsetof(struct auth_settings, name) }
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumistatic struct setting_def auth_setting_defs[] = {
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi MEMBER(log_timestamp) DEFAULT_FAILURE_STAMP_FORMAT,
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi /* general */
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi MEMBER(ssl_cert_file) SSLDIR"/certs/dovecot.pem",
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi MEMBER(ssl_key_file) SSLDIR"/private/dovecot.pem",
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi MEMBER(ssl_parameters_file) "ssl-parameters.dat",
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi MEMBER(imap_executable) PKG_LIBEXECDIR"/imap",
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi MEMBER(pop3_executable) PKG_LIBEXECDIR"/pop3",
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumistruct login_settings default_login_settings = {
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumistatic void fix_base_path(struct settings *set, const char **str)
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi if (*str != NULL && **str != '\0' && **str != '/') {
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumistatic void get_login_uid(struct settings *set,
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi if ((pw = getpwnam(login_set->user)) == NULL)
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi i_fatal("Login user doesn't exist: %s", login_set->user);
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi i_fatal("All login process users must belong to same group "
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumistatic void auth_settings_verify(struct auth_settings *auth)
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi i_fatal("Can't use auth executable %s: %m", auth->executable);
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi if (auth->chroot != NULL && access(auth->chroot, X_OK) < 0) {
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi i_fatal("Can't access auth chroot directory %s: %m",
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumistatic void login_settings_verify(struct login_settings *login)
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi i_fatal("Can't use login executable %s: %m", login->executable);
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi i_fatal("login_processes_count must be at least 1");
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi i_fatal("max_logging_users must be at least 1");
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumistatic const char *get_directory(const char *path)
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumistatic void settings_verify(struct settings *set)
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi const char *const *str;
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi for (login = set->logins; login != NULL; login = login->next) {
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi if (strstr(set->protocols, "imap") != NULL) {
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi if (access(set->imap_executable, X_OK) < 0) {
#ifdef HAVE_SSL
#ifndef HAVE_FLOCK
return NULL;
return NULL;
void *context)
const char *error;
return NULL;
return error;
void master_settings_init(void)
void master_settings_deinit(void)