{
bool ssl_required = (strcmp(client->ssl_set->ssl, "required") == 0);
- if (client->connection_secured ||
- (client->set->auth_allow_cleartext && !ssl_required))
+ i_assert(!ssl_required || !client->set->auth_allow_cleartext);
+
+ if (client->set->auth_allow_cleartext ||
+ client->connection_secured)
return TRUE;
e_info(client->event_auth, "Login failed: "
DEF(BOOL, auth_debug),
DEF(BOOL, verbose_proctitle),
+ DEF(ENUM, ssl),
+
DEF(UINT, mail_max_userip_connections),
SETTING_DEFINE_LIST_END
.auth_debug = FALSE,
.verbose_proctitle = FALSE,
+ .ssl = "yes:no:required",
+
.mail_max_userip_connections = 10
};
/* <settings checks> */
static bool login_settings_check(void *_set, pool_t pool,
- const char **error_r ATTR_UNUSED)
+ const char **error_r)
{
struct login_settings *set = _set;
set->log_format_elements_split =
p_strsplit(pool, set->login_log_format_elements, " ");
+ if (strcmp(set->ssl, "required") == 0 && set->auth_allow_cleartext) {
+ *error_r = "auth_allow_cleartext=yes has no effect with ssl=required";
+ return FALSE;
+ }
+
return TRUE;
}
/* </settings checks> */
unsigned int login_proxy_max_disconnect_delay;
const char *login_proxy_rawlog_dir;
const char *login_auth_socket_path;
+ const char *ssl; /* for settings check */
bool auth_ssl_require_client_cert;
bool auth_ssl_username_from_cert;