Mercurial > hg > nginx-mail
diff src/mail/ngx_mail_handler.c @ 396:e2d916d7e50f PATCH_NGINX_MAIL_0_1
Mail: starttls only support for SMTP.
Capabilities tweaks according to starttls settings.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Wed, 18 Jul 2007 02:54:56 +0000 |
parents | 1c0300c3ae88 |
children | f9e6413396d4 |
line wrap: on
line diff
--- a/src/mail/ngx_mail_handler.c +++ b/src/mail/ngx_mail_handler.c @@ -1311,6 +1311,26 @@ ngx_smtp_auth_state(ngx_event_t *rev) } else { s->esmtp = 1; + +#if (NGX_MAIL_SSL) + + if (c->ssl == NULL) { + sslcf = ngx_mail_get_module_srv_conf(s, ngx_mail_ssl_module); + + if (sslcf->starttls == NGX_MAIL_STARTTLS_ON) { + size = cscf->smtp_starttls_capability.len; + text = cscf->smtp_starttls_capability.data; + break; + } + + if (sslcf->starttls == NGX_MAIL_STARTTLS_ONLY) { + size = cscf->smtp_starttls_only_capability.len; + text = cscf->smtp_starttls_only_capability.data; + break; + } + } +#endif + size = cscf->smtp_capability.len; text = cscf->smtp_capability.data; } @@ -1319,6 +1339,18 @@ ngx_smtp_auth_state(ngx_event_t *rev) case NGX_SMTP_AUTH: +#if (NGX_MAIL_SSL) + + if (c->ssl == NULL) { + sslcf = ngx_mail_get_module_srv_conf(s, ngx_mail_ssl_module); + + if (sslcf->starttls == NGX_MAIL_STARTTLS_ONLY) { + rc = NGX_MAIL_PARSE_INVALID_COMMAND; + break; + } + } +#endif + if (s->args.nelts == 0) { text = smtp_invalid_argument; size = sizeof(smtp_invalid_argument) - 1; @@ -1471,6 +1503,7 @@ ngx_smtp_auth_state(ngx_event_t *rev) break; #if (NGX_MAIL_SSL) + case NGX_SMTP_STARTTLS: if (c->ssl == NULL) { sslcf = ngx_mail_get_module_srv_conf(s,