mail-user.c revision 87ca4b209c10954826b878da165d303d9b4dc5a2
5f5870385cff47efd2f58e7892f251cf13761528Timo Sirainen/* Copyright (c) 2008-2012 Dovecot authors, see the included COPYING file */
128ab2c52a29068be87e12ab5aebbb8fdc933adfTimo Sirainenstruct mail_user_module_register mail_user_module_register = { 0 };
128ab2c52a29068be87e12ab5aebbb8fdc933adfTimo Sirainenstruct auth_master_connection *mail_user_auth_master_conn;
128ab2c52a29068be87e12ab5aebbb8fdc933adfTimo Sirainenstatic void mail_user_deinit_base(struct mail_user *user)
3f442e48e5708f2f80cc937cd722c56a4fbd1c70Timo Sirainenstruct mail_user *mail_user_alloc(const char *username,
ba153863e55d75a7c2f28c9c010a905b8887b62bTimo Sirainen pool = pool_alloconly_create("mail user", 16*1024);
e156adefc1260d31a145df2f5e9b3c82050d4163Timo Sirainen user->unexpanded_set = settings_dup(set_info, set, pool);
e156adefc1260d31a145df2f5e9b3c82050d4163Timo Sirainen user->set = settings_dup(set_info, set, pool);
e156adefc1260d31a145df2f5e9b3c82050d4163Timo Sirainen user->service = master_service_get_name(master_service);
e156adefc1260d31a145df2f5e9b3c82050d4163Timo Sirainen user->default_normalizer = uni_utf8_to_decomposed_titlecase;
e156adefc1260d31a145df2f5e9b3c82050d4163Timo Sirainen /* check settings so that the duplicated structure will again
e156adefc1260d31a145df2f5e9b3c82050d4163Timo Sirainen contain the parsed fields */
e156adefc1260d31a145df2f5e9b3c82050d4163Timo Sirainen if (!settings_check(set_info, pool, user->set, &error))
7b9f0c6aba07358e5520dc60c058126a4cae4056Timo Sirainen i_panic("Settings check unexpectedly failed: %s", error);
7b9f0c6aba07358e5520dc60c058126a4cae4056Timo Sirainen p_array_init(&user->module_contexts, user->pool, 5);
128ab2c52a29068be87e12ab5aebbb8fdc933adfTimo Sirainenmail_user_expand_plugins_envs(struct mail_user *user, const char **error_r)
e156adefc1260d31a145df2f5e9b3c82050d4163Timo Sirainen unsigned int i, count;
e156adefc1260d31a145df2f5e9b3c82050d4163Timo Sirainen if (!array_is_created(&user->set->plugin_envs))
e156adefc1260d31a145df2f5e9b3c82050d4163Timo Sirainen envs = array_get_modifiable(&user->set->plugin_envs, &count);
128ab2c52a29068be87e12ab5aebbb8fdc933adfTimo Sirainen "userdb didn't return a home directory, "
128ab2c52a29068be87e12ab5aebbb8fdc933adfTimo Sirainen "but plugin setting %s used it (%%h): %s",
e156adefc1260d31a145df2f5e9b3c82050d4163Timo Sirainen var_expand(str, envs[i+1], mail_user_var_expand_table(user));
bool need_home_dir;
return NULL;
const struct var_expand_table *
return path;
int ret;
if (ret > 0) {
return ret;
int ret;
if (ret < 0)
const char *const *plugins;
bool ret;
T_BEGIN {
} T_END;
return ret;
const char *name)
const char *const *envs;
unsigned int i, count;
return NULL;
return NULL;
return NULL;
const char **error_r)
const char *mounts_path;
return TRUE;
return FALSE;
return TRUE;
struct mail_storage *
return storage;
return NULL;
return storage;