]> git.kaiwu.me - nginx.git/commitdiff
Mail: make it possible to disable SASL EXTERNAL.
authorSergey Kandaurov <pluknet@nginx.com>
Thu, 12 Jan 2017 16:22:03 +0000 (19:22 +0300)
committerSergey Kandaurov <pluknet@nginx.com>
Thu, 12 Jan 2017 16:22:03 +0000 (19:22 +0300)
src/mail/ngx_mail_imap_handler.c
src/mail/ngx_mail_pop3_handler.c
src/mail/ngx_mail_smtp_handler.c

index 1c54457853e80f60e556e6073eb72148d67f1e86..3bf09ec3c9f3544e05a45af322d2e4fa721628a7 100644 (file)
@@ -356,6 +356,8 @@ ngx_mail_imap_authenticate(ngx_mail_session_t *s, ngx_connection_t *c)
     }
 #endif
 
+    iscf = ngx_mail_get_module_srv_conf(s, ngx_mail_imap_module);
+
     rc = ngx_mail_auth_parse(s, c);
 
     switch (rc) {
@@ -383,8 +385,6 @@ ngx_mail_imap_authenticate(ngx_mail_session_t *s, ngx_connection_t *c)
 
     case NGX_MAIL_AUTH_CRAM_MD5:
 
-        iscf = ngx_mail_get_module_srv_conf(s, ngx_mail_imap_module);
-
         if (!(iscf->auth_methods & NGX_MAIL_AUTH_CRAM_MD5_ENABLED)) {
             return NGX_MAIL_PARSE_INVALID_COMMAND;
         }
@@ -406,6 +406,10 @@ ngx_mail_imap_authenticate(ngx_mail_session_t *s, ngx_connection_t *c)
 
     case NGX_MAIL_AUTH_EXTERNAL:
 
+        if (!(iscf->auth_methods & NGX_MAIL_AUTH_EXTERNAL_ENABLED)) {
+            return NGX_MAIL_PARSE_INVALID_COMMAND;
+        }
+
         ngx_str_set(&s->out, imap_username);
         s->mail_state = ngx_imap_auth_external;
 
index a2d565804f96e90fd2ebd755c62bf993eba69a7d..9310c2750f44aaa4828be00aafd3c80ac4582dcf 100644 (file)
@@ -501,6 +501,10 @@ ngx_mail_pop3_auth(ngx_mail_session_t *s, ngx_connection_t *c)
 
     case NGX_MAIL_AUTH_EXTERNAL:
 
+        if (!(pscf->auth_methods & NGX_MAIL_AUTH_EXTERNAL_ENABLED)) {
+            return NGX_MAIL_PARSE_INVALID_COMMAND;
+        }
+
         ngx_str_set(&s->out, pop3_username);
         s->mail_state = ngx_pop3_auth_external;
 
index 47756c31156fbdaa05e52759802fefd50ba39920..939fb1a51905a137c705f1d25c327eab2acfbfa9 100644 (file)
@@ -609,6 +609,8 @@ ngx_mail_smtp_auth(ngx_mail_session_t *s, ngx_connection_t *c)
         return NGX_OK;
     }
 
+    sscf = ngx_mail_get_module_srv_conf(s, ngx_mail_smtp_module);
+
     rc = ngx_mail_auth_parse(s, c);
 
     switch (rc) {
@@ -636,8 +638,6 @@ ngx_mail_smtp_auth(ngx_mail_session_t *s, ngx_connection_t *c)
 
     case NGX_MAIL_AUTH_CRAM_MD5:
 
-        sscf = ngx_mail_get_module_srv_conf(s, ngx_mail_smtp_module);
-
         if (!(sscf->auth_methods & NGX_MAIL_AUTH_CRAM_MD5_ENABLED)) {
             return NGX_MAIL_PARSE_INVALID_COMMAND;
         }
@@ -659,6 +659,10 @@ ngx_mail_smtp_auth(ngx_mail_session_t *s, ngx_connection_t *c)
 
     case NGX_MAIL_AUTH_EXTERNAL:
 
+        if (!(sscf->auth_methods & NGX_MAIL_AUTH_EXTERNAL_ENABLED)) {
+            return NGX_MAIL_PARSE_INVALID_COMMAND;
+        }
+
         ngx_str_set(&s->out, smtp_username);
         s->mail_state = ngx_smtp_auth_external;