|
|
|
@ -53,6 +53,7 @@ typedef struct imap_server_conf {
|
|
|
|
|
char *pass; |
|
|
|
|
char *pass_cmd; |
|
|
|
|
int max_in_progress; |
|
|
|
|
int cap_mask; |
|
|
|
|
string_list_t *auth_mechs; |
|
|
|
|
#ifdef HAVE_LIBSSL |
|
|
|
|
char ssl_type; |
|
|
|
@ -1043,6 +1044,7 @@ parse_capability( imap_store_t *ctx, char *cmd )
|
|
|
|
|
ctx->caps |= 1 << i; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
ctx->caps &= ~((imap_store_conf_t *)ctx->gen.conf)->server->cap_mask; |
|
|
|
|
if (!CAP(NOLOGIN)) |
|
|
|
|
add_string_list( &ctx->auth_mechs, "LOGIN" ); |
|
|
|
|
} |
|
|
|
@ -2687,6 +2689,7 @@ imap_parse_store( conffile_t *cfg, store_conf_t **storep )
|
|
|
|
|
imap_store_conf_t *store; |
|
|
|
|
imap_server_conf_t *server, *srv, sserver; |
|
|
|
|
const char *type, *name, *arg; |
|
|
|
|
unsigned u; |
|
|
|
|
int acc_opt = 0; |
|
|
|
|
#ifdef HAVE_LIBSSL |
|
|
|
|
/* Legacy SSL options */ |
|
|
|
@ -2756,6 +2759,20 @@ imap_parse_store( conffile_t *cfg, store_conf_t **storep )
|
|
|
|
|
error( "%s:%d: PipelineDepth must be at least 1\n", cfg->file, cfg->line ); |
|
|
|
|
cfg->err = 1; |
|
|
|
|
} |
|
|
|
|
} else if (!strcasecmp( "DisableExtension", cfg->cmd ) || |
|
|
|
|
!strcasecmp( "DisableExtensions", cfg->cmd )) { |
|
|
|
|
arg = cfg->val; |
|
|
|
|
do { |
|
|
|
|
for (u = 0; u < as(cap_list); u++) { |
|
|
|
|
if (!strcasecmp( cap_list[u], arg )) { |
|
|
|
|
server->cap_mask |= 1 << u; |
|
|
|
|
goto gotcap; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
error( "%s:%d: Unrecognized IMAP extension '%s'\n", cfg->file, cfg->line, arg ); |
|
|
|
|
cfg->err = 1; |
|
|
|
|
gotcap: ; |
|
|
|
|
} while ((arg = get_arg( cfg, ARG_OPTIONAL, 0 ))); |
|
|
|
|
} |
|
|
|
|
#ifdef HAVE_LIBSSL |
|
|
|
|
else if (!strcasecmp( "CertificateFile", cfg->cmd )) { |
|
|
|
|