const char *reason)
{
struct mail_user *user = ctx->rcpt_user;
- struct ssl_iostream_settings ssl_set;
struct mail *mail = ctx->src_mail;
struct istream *input;
struct smtp_submit_input smtp_input;
vtable = get_var_expand_table(mail, recipient, reason);
- mail_user_init_ssl_client_settings(user, &ssl_set);
-
i_zero(&smtp_input);
- smtp_input.ssl = &ssl_set;
+ smtp_input.ssl = user->ssl_set;
smtp_submit = smtp_submit_init_simple(&smtp_input, ctx->smtp_set, NULL);
smtp_submit_add_rcpt(smtp_submit, return_addr);
output = smtp_submit_send(smtp_submit);
mail_user_set_get_temp_prefix(str, ns->user->set);
set.temp_path_prefix = str_c(str);
- mail_user_init_ssl_client_settings(ns->user, &set.ssl_set);
+ set.ssl_set = *ns->user->ssl_set;
if (!imapc_set->imapc_ssl_verify)
set.ssl_set.allow_invalid_cert = TRUE;
client_set.rawlog_dir =
mail_user_home_expand(storage->user, set->pop3c_rawlog_dir);
- mail_user_init_ssl_client_settings(storage->user, &client_set.ssl_set);
+ client_set.ssl_set = *storage->user->ssl_set;
if (!set->pop3c_ssl_verify)
client_set.ssl_set.allow_invalid_cert = TRUE;
user->settings_expanded = TRUE;
mail_user_expand_plugins_envs(user);
+ user->ssl_set = p_new(user->pool, struct ssl_iostream_settings, 1);
+ if (user->error == NULL &&
+ mail_storage_service_user_init_ssl_client_settings(
+ user->service_user, user->pool,
+ user->ssl_set, &error) < 0)
+ user->error = p_strdup(user->pool, error);
+
/* autocreated users for shared mailboxes need to be fully initialized
if they don't exist, since they're going to be used anyway */
if (user->error == NULL || user->nonexistent) {
return user2;
}
-void mail_user_init_ssl_client_settings(struct mail_user *user,
- struct ssl_iostream_settings *ssl_set_r)
-{
- const struct master_service_ssl_settings *ssl_set =
- mail_storage_service_user_get_ssl_settings(user->service_user);
-
- master_service_ssl_client_settings_to_iostream_set(ssl_set,
- pool_datastack_create(), ssl_set_r);
-}
-
void mail_user_init_fs_settings(struct mail_user *user,
struct fs_settings *fs_set,
struct ssl_iostream_settings *ssl_set_r)
fs_set->enable_timing = user->stats_enabled;
fs_set->ssl_client_set = ssl_set_r;
- mail_user_init_ssl_client_settings(user, ssl_set_r);
+ *ssl_set_r = *user->ssl_set;
}
static int
struct setting_parser_context *set_parser;
const struct mail_user_settings *unexpanded_set;
struct mail_user_settings *set;
+ struct ssl_iostream_settings *ssl_set;
struct mail_namespace *namespaces;
struct mail_storage *storages;
struct dict_op_settings *dict_op_set;
/* Import any event_ fields from userdb fields to mail user event. */
void mail_user_add_event_fields(struct mail_user *user);
-/* Initialize SSL client settings from mail_user settings. */
-void mail_user_init_ssl_client_settings(struct mail_user *user,
- struct ssl_iostream_settings *ssl_set_r);
-
/* Initialize fs_settings from mail_user settings. */
void mail_user_init_fs_settings(struct mail_user *user,
struct fs_settings *fs_set,
{
struct solr_fts_backend *backend = (struct solr_fts_backend *)_backend;
struct fts_solr_user *fuser = FTS_SOLR_USER_CONTEXT(_backend->ns->user);
- struct ssl_iostream_settings ssl_set;
const char *str;
if (fuser == NULL) {
return -1;
}
- mail_user_init_ssl_client_settings(_backend->ns->user, &ssl_set);
- if (solr_connection_init(&fuser->set, &ssl_set, _backend->event,
+ if (solr_connection_init(&fuser->set, _backend->ns->user->ssl_set,
+ _backend->event,
&backend->solr_conn, error_r) < 0)
return -1;
{
struct solr_fts_backend *backend = (struct solr_fts_backend *)_backend;
struct fts_solr_user *fuser = FTS_SOLR_USER_CONTEXT(_backend->ns->user);
- struct ssl_iostream_settings ssl_set;
if (fuser == NULL) {
*error_r = "Invalid fts_solr setting";
_backend->flags |= FTS_BACKEND_FLAG_TOKENIZED_INPUT;
}
- mail_user_init_ssl_client_settings(_backend->ns->user, &ssl_set);
- return solr_connection_init(&fuser->set, &ssl_set, _backend->event,
+ return solr_connection_init(&fuser->set, _backend->ns->user->ssl_set,
+ _backend->event,
&backend->solr_conn, error_r);
}
struct event *event = parser_context->event;
struct fts_parser_tika_user *tuser = TIKA_USER_CONTEXT(user);
struct http_client_settings http_set;
- struct ssl_iostream_settings ssl_set;
const char *url, *error;
url = mail_user_plugin_getenv(user, "fts_tika");
}
if (tika_http_client == NULL) {
- mail_user_init_ssl_client_settings(user, &ssl_set);
-
i_zero(&http_set);
http_set.max_idle_time_msecs = 100;
http_set.max_parallel_connections = 1;
http_set.max_attempts = 3;
http_set.connect_timeout_msecs = 5*1000;
http_set.request_timeout_msecs = 60*1000;
- http_set.ssl = &ssl_set;
+ http_set.ssl = user->ssl_set;
http_set.debug = event_want_debug(user->event);
http_set.event_parent = user->event;
struct push_notification_driver_ox_config *config)
{
struct http_client_settings http_set;
- struct ssl_iostream_settings ssl_set;
if (ox_global->http_client == NULL) {
/* This is going to use the first user's settings, but these are
http_set.max_attempts = config->http_max_retries+1;
http_set.request_timeout_msecs = config->http_timeout_msecs;
http_set.event_parent = user->event;
- mail_user_init_ssl_client_settings(user, &ssl_set);
- http_set.ssl = &ssl_set;
+ http_set.ssl = user->ssl_set;
ox_global->http_client = http_client_init(&http_set);
}
event_set_append_log_prefix(rbackend->backend.event, "relay: ");
- mail_user_init_ssl_client_settings(user, &ssl_set);
+ ssl_set = *user->ssl_set;
if (set->ssl_verify)
ssl_set.verbose_invalid_cert = TRUE;
else