28 struct sockaddr_in *sin;
34 struct sockaddr_in6 *sin6;
35 ngx_mail_in6_addr_t *addr6;
60 switch (sa->sa_family) {
64 sin6 = (
struct sockaddr_in6 *) sa;
70 for (i = 0; i < port->
naddrs - 1; i++) {
71 if (
ngx_memcmp(&addr6[i].addr6, &sin6->sin6_addr, 16) == 0) {
76 addr_conf = &addr6[
i].conf;
82 sin = (
struct sockaddr_in *) sa;
88 for (i = 0; i < port->
naddrs - 1; i++) {
89 if (addr[i].addr == sin->sin_addr.s_addr) {
94 addr_conf = &addr[
i].
conf;
105 addr_conf = &addr6[0].conf;
111 addr_conf = &addr[0].
conf;
145 c->
log->
action =
"sending client greeting line";
158 ngx_mail_ssl_init_connection(&sslcf->
ssl, c);
162 if (addr_conf->ssl) {
166 if (sslcf->
ssl.
ctx == NULL) {
168 "no \"ssl_certificate\" is defined "
169 "in server listening on SSL port");
174 ngx_mail_ssl_init_connection(&sslcf->
ssl, c);
181 ngx_mail_init_session(c);
202 ngx_mail_ssl_init_connection(&sslcf->
ssl, c);
225 c->ssl->handler = ngx_mail_ssl_handshake_handler;
230 ngx_mail_ssl_handshake_handler(c);
240 if (c->ssl->handshaked) {
257 ngx_mail_init_session(c);
280 if (s->
ctx == NULL) {
296 sizeof(
" <18446744073709551616.@>" CRLF) - 1
342 #if (NGX_DEBUG_MAIL_PASSWD)
344 "mail auth plain: \"%V\"", &arg[n]);
348 if (plain.
data == NULL) {
354 "client sent invalid base64 encoding in AUTH PLAIN command");
359 last = p + plain.
len;
361 while (p < last && *p++) { }
365 "client sent invalid login in AUTH PLAIN command");
371 while (p < last && *p) { p++; }
375 "client sent invalid password in AUTH PLAIN command");
384 #if (NGX_DEBUG_MAIL_PASSWD)
386 "mail auth plain: \"%V\" \"%V\"", &s->
login, &s->
passwd);
402 "mail auth login username: \"%V\"", &arg[n]);
411 "client sent invalid base64 encoding in AUTH LOGIN command");
416 "mail auth login username: \"%V\"", &s->
login);
429 #if (NGX_DEBUG_MAIL_PASSWD)
431 "mail auth login password: \"%V\"", &arg[0]);
442 "client sent invalid base64 encoding in AUTH LOGIN command");
446 #if (NGX_DEBUG_MAIL_PASSWD)
448 "mail auth login password: \"%V\"", &s->
passwd);
457 char *prefix,
size_t len)
475 p[n++] =
CR; p[n++] =
LF;
493 "mail auth cram-md5: \"%V\"", &arg[0]);
502 "client sent invalid base64 encoding in AUTH CRAM-MD5 command");
520 "client sent invalid CRAM-MD5 hash in AUTH CRAM-MD5 command");
525 "mail auth cram-md5: \"%V\" \"%V\"", &s->
login, &s->
passwd);
640 "client sent too long command \"%V\"", &l);
698 "close mail connection: %d", c->
fd);
712 (void) ngx_atomic_fetch_add(ngx_stat_active, -1);
751 s->
starttls ?
" using starttls" :
"",
764 if (s->
proxy == NULL) {