annotate src/mail/ngx_mail.h @ 571:5938746e70c2 PATCH_NGINX_MAIL_0_8

Mail: get rid of ugly protocol check in ngx_mail_auth_parse(). Instead, use index of argument which holds authentication mechanism name. For IMAP and POP3 it's 0, for SMTP - 1 as SMTP preserves command in first argument to allow pipelining support. While here, add check that we actually have argument holding authentication mechanism name. Currently IMAP has no appropriate checks before calling ngx_mail_auth_parse() which results in possible access of uninitialized memory.
author Maxim Dounin <mdounin@mdounin.ru>
date Sun, 27 Sep 2009 00:52:15 +0400
parents 9773720b845e
children 0b460e61bdcd
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
290
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
1
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
2 /*
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
3 * Copyright (C) Igor Sysoev
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
4 */
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
5
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
6
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
7 #ifndef _NGX_MAIL_H_INCLUDED_
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
8 #define _NGX_MAIL_H_INCLUDED_
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
9
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
10
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
11 #include <ngx_config.h>
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
12 #include <ngx_core.h>
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
13 #include <ngx_event.h>
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
14 #include <ngx_event_connect.h>
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
15
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
16 #if (NGX_MAIL_SSL)
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
17 #include <ngx_mail_ssl_module.h>
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
18 #endif
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
19
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
20
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
21
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
22 typedef struct {
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
23 void **main_conf;
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
24 void **srv_conf;
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
25 } ngx_mail_conf_ctx_t;
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
26
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
27
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
28 typedef struct {
532
98143f74eb3d nginx 0.7.58
Igor Sysoev <http://sysoev.ru>
parents: 482
diff changeset
29 u_char sockaddr[NGX_SOCKADDRLEN];
98143f74eb3d nginx 0.7.58
Igor Sysoev <http://sysoev.ru>
parents: 482
diff changeset
30 socklen_t socklen;
290
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
31
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
32 /* server ctx */
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
33 ngx_mail_conf_ctx_t *ctx;
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
34
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
35 unsigned bind:1;
532
98143f74eb3d nginx 0.7.58
Igor Sysoev <http://sysoev.ru>
parents: 482
diff changeset
36 unsigned wildcard:1;
426
a094317ba307 nginx 0.7.14
Igor Sysoev <http://sysoev.ru>
parents: 366
diff changeset
37 #if (NGX_MAIL_SSL)
a094317ba307 nginx 0.7.14
Igor Sysoev <http://sysoev.ru>
parents: 366
diff changeset
38 unsigned ssl:1;
a094317ba307 nginx 0.7.14
Igor Sysoev <http://sysoev.ru>
parents: 366
diff changeset
39 #endif
532
98143f74eb3d nginx 0.7.58
Igor Sysoev <http://sysoev.ru>
parents: 482
diff changeset
40 #if (NGX_HAVE_INET6 && defined IPV6_V6ONLY)
98143f74eb3d nginx 0.7.58
Igor Sysoev <http://sysoev.ru>
parents: 482
diff changeset
41 unsigned ipv6only:2;
98143f74eb3d nginx 0.7.58
Igor Sysoev <http://sysoev.ru>
parents: 482
diff changeset
42 #endif
290
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
43 } ngx_mail_listen_t;
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
44
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
45
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
46 typedef struct {
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
47 ngx_mail_conf_ctx_t *ctx;
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
48 ngx_str_t addr_text;
426
a094317ba307 nginx 0.7.14
Igor Sysoev <http://sysoev.ru>
parents: 366
diff changeset
49 #if (NGX_MAIL_SSL)
a094317ba307 nginx 0.7.14
Igor Sysoev <http://sysoev.ru>
parents: 366
diff changeset
50 ngx_uint_t ssl; /* unsigned ssl:1; */
a094317ba307 nginx 0.7.14
Igor Sysoev <http://sysoev.ru>
parents: 366
diff changeset
51 #endif
532
98143f74eb3d nginx 0.7.58
Igor Sysoev <http://sysoev.ru>
parents: 482
diff changeset
52 } ngx_mail_addr_conf_t;
98143f74eb3d nginx 0.7.58
Igor Sysoev <http://sysoev.ru>
parents: 482
diff changeset
53
98143f74eb3d nginx 0.7.58
Igor Sysoev <http://sysoev.ru>
parents: 482
diff changeset
54 typedef struct {
98143f74eb3d nginx 0.7.58
Igor Sysoev <http://sysoev.ru>
parents: 482
diff changeset
55 in_addr_t addr;
98143f74eb3d nginx 0.7.58
Igor Sysoev <http://sysoev.ru>
parents: 482
diff changeset
56 ngx_mail_addr_conf_t conf;
290
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
57 } ngx_mail_in_addr_t;
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
58
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
59
532
98143f74eb3d nginx 0.7.58
Igor Sysoev <http://sysoev.ru>
parents: 482
diff changeset
60 #if (NGX_HAVE_INET6)
98143f74eb3d nginx 0.7.58
Igor Sysoev <http://sysoev.ru>
parents: 482
diff changeset
61
290
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
62 typedef struct {
532
98143f74eb3d nginx 0.7.58
Igor Sysoev <http://sysoev.ru>
parents: 482
diff changeset
63 struct in6_addr addr6;
98143f74eb3d nginx 0.7.58
Igor Sysoev <http://sysoev.ru>
parents: 482
diff changeset
64 ngx_mail_addr_conf_t conf;
98143f74eb3d nginx 0.7.58
Igor Sysoev <http://sysoev.ru>
parents: 482
diff changeset
65 } ngx_mail_in6_addr_t;
98143f74eb3d nginx 0.7.58
Igor Sysoev <http://sysoev.ru>
parents: 482
diff changeset
66
98143f74eb3d nginx 0.7.58
Igor Sysoev <http://sysoev.ru>
parents: 482
diff changeset
67 #endif
290
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
68
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
69
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
70 typedef struct {
532
98143f74eb3d nginx 0.7.58
Igor Sysoev <http://sysoev.ru>
parents: 482
diff changeset
71 /* ngx_mail_in_addr_t or ngx_mail_in6_addr_t */
98143f74eb3d nginx 0.7.58
Igor Sysoev <http://sysoev.ru>
parents: 482
diff changeset
72 void *addrs;
98143f74eb3d nginx 0.7.58
Igor Sysoev <http://sysoev.ru>
parents: 482
diff changeset
73 ngx_uint_t naddrs;
98143f74eb3d nginx 0.7.58
Igor Sysoev <http://sysoev.ru>
parents: 482
diff changeset
74 } ngx_mail_port_t;
98143f74eb3d nginx 0.7.58
Igor Sysoev <http://sysoev.ru>
parents: 482
diff changeset
75
98143f74eb3d nginx 0.7.58
Igor Sysoev <http://sysoev.ru>
parents: 482
diff changeset
76
98143f74eb3d nginx 0.7.58
Igor Sysoev <http://sysoev.ru>
parents: 482
diff changeset
77 typedef struct {
98143f74eb3d nginx 0.7.58
Igor Sysoev <http://sysoev.ru>
parents: 482
diff changeset
78 int family;
290
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
79 in_port_t port;
532
98143f74eb3d nginx 0.7.58
Igor Sysoev <http://sysoev.ru>
parents: 482
diff changeset
80 ngx_array_t addrs; /* array of ngx_mail_conf_addr_t */
98143f74eb3d nginx 0.7.58
Igor Sysoev <http://sysoev.ru>
parents: 482
diff changeset
81 } ngx_mail_conf_port_t;
290
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
82
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
83
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
84 typedef struct {
532
98143f74eb3d nginx 0.7.58
Igor Sysoev <http://sysoev.ru>
parents: 482
diff changeset
85 struct sockaddr *sockaddr;
98143f74eb3d nginx 0.7.58
Igor Sysoev <http://sysoev.ru>
parents: 482
diff changeset
86 socklen_t socklen;
98143f74eb3d nginx 0.7.58
Igor Sysoev <http://sysoev.ru>
parents: 482
diff changeset
87
290
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
88 ngx_mail_conf_ctx_t *ctx;
532
98143f74eb3d nginx 0.7.58
Igor Sysoev <http://sysoev.ru>
parents: 482
diff changeset
89
290
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
90 unsigned bind:1;
532
98143f74eb3d nginx 0.7.58
Igor Sysoev <http://sysoev.ru>
parents: 482
diff changeset
91 unsigned wildcard:1;
426
a094317ba307 nginx 0.7.14
Igor Sysoev <http://sysoev.ru>
parents: 366
diff changeset
92 #if (NGX_MAIL_SSL)
a094317ba307 nginx 0.7.14
Igor Sysoev <http://sysoev.ru>
parents: 366
diff changeset
93 unsigned ssl:1;
a094317ba307 nginx 0.7.14
Igor Sysoev <http://sysoev.ru>
parents: 366
diff changeset
94 #endif
532
98143f74eb3d nginx 0.7.58
Igor Sysoev <http://sysoev.ru>
parents: 482
diff changeset
95 #if (NGX_HAVE_INET6 && defined IPV6_V6ONLY)
98143f74eb3d nginx 0.7.58
Igor Sysoev <http://sysoev.ru>
parents: 482
diff changeset
96 unsigned ipv6only:2;
98143f74eb3d nginx 0.7.58
Igor Sysoev <http://sysoev.ru>
parents: 482
diff changeset
97 #endif
98143f74eb3d nginx 0.7.58
Igor Sysoev <http://sysoev.ru>
parents: 482
diff changeset
98 } ngx_mail_conf_addr_t;
290
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
99
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
100
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
101 typedef struct {
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
102 ngx_array_t servers; /* ngx_mail_core_srv_conf_t */
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
103 ngx_array_t listen; /* ngx_mail_listen_t */
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
104 } ngx_mail_core_main_conf_t;
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
105
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
106
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
107 #define NGX_MAIL_POP3_PROTOCOL 0
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
108 #define NGX_MAIL_IMAP_PROTOCOL 1
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
109 #define NGX_MAIL_SMTP_PROTOCOL 2
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
110
336
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
111
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
112 typedef struct ngx_mail_protocol_s ngx_mail_protocol_t;
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
113
290
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
114
336
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
115 typedef struct {
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
116 ngx_mail_protocol_t *protocol;
290
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
117
336
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
118 ngx_msec_t timeout;
366
babd3d9efb62 nginx 0.6.27
Igor Sysoev <http://sysoev.ru>
parents: 354
diff changeset
119 ngx_msec_t resolver_timeout;
290
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
120
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
121 ngx_flag_t so_keepalive;
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
122
336
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
123 ngx_str_t server_name;
290
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
124
336
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
125 u_char *file_name;
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
126 ngx_int_t line;
290
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
127
366
babd3d9efb62 nginx 0.6.27
Igor Sysoev <http://sysoev.ru>
parents: 354
diff changeset
128 ngx_resolver_t *resolver;
babd3d9efb62 nginx 0.6.27
Igor Sysoev <http://sysoev.ru>
parents: 354
diff changeset
129
290
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
130 /* server ctx */
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
131 ngx_mail_conf_ctx_t *ctx;
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
132 } ngx_mail_core_srv_conf_t;
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
133
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
134
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
135 typedef enum {
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
136 ngx_pop3_start = 0,
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
137 ngx_pop3_user,
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
138 ngx_pop3_passwd,
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
139 ngx_pop3_auth_login_username,
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
140 ngx_pop3_auth_login_password,
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
141 ngx_pop3_auth_plain,
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
142 ngx_pop3_auth_cram_md5
354
583decdb82a4 nginx 0.6.21
Igor Sysoev <http://sysoev.ru>
parents: 336
diff changeset
143 } ngx_pop3_state_e;
290
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
144
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
145
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
146 typedef enum {
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
147 ngx_imap_start = 0,
322
d16d691432c9 nginx 0.6.5
Igor Sysoev <http://sysoev.ru>
parents: 290
diff changeset
148 ngx_imap_auth_login_username,
d16d691432c9 nginx 0.6.5
Igor Sysoev <http://sysoev.ru>
parents: 290
diff changeset
149 ngx_imap_auth_login_password,
d16d691432c9 nginx 0.6.5
Igor Sysoev <http://sysoev.ru>
parents: 290
diff changeset
150 ngx_imap_auth_plain,
d16d691432c9 nginx 0.6.5
Igor Sysoev <http://sysoev.ru>
parents: 290
diff changeset
151 ngx_imap_auth_cram_md5,
290
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
152 ngx_imap_login,
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
153 ngx_imap_user,
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
154 ngx_imap_passwd
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
155 } ngx_imap_state_e;
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
156
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
157
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
158 typedef enum {
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
159 ngx_smtp_start = 0,
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
160 ngx_smtp_auth_login_username,
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
161 ngx_smtp_auth_login_password,
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
162 ngx_smtp_auth_plain,
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
163 ngx_smtp_auth_cram_md5,
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
164 ngx_smtp_helo,
449
ad0a34a8efa6 nginx 0.7.22
Igor Sysoev <http://sysoev.ru>
parents: 426
diff changeset
165 ngx_smtp_helo_xclient,
ad0a34a8efa6 nginx 0.7.22
Igor Sysoev <http://sysoev.ru>
parents: 426
diff changeset
166 ngx_smtp_helo_from,
ad0a34a8efa6 nginx 0.7.22
Igor Sysoev <http://sysoev.ru>
parents: 426
diff changeset
167 ngx_smtp_xclient,
ad0a34a8efa6 nginx 0.7.22
Igor Sysoev <http://sysoev.ru>
parents: 426
diff changeset
168 ngx_smtp_xclient_from,
482
33394d1255b0 nginx 0.7.34
Igor Sysoev <http://sysoev.ru>
parents: 449
diff changeset
169 ngx_smtp_xclient_helo,
449
ad0a34a8efa6 nginx 0.7.22
Igor Sysoev <http://sysoev.ru>
parents: 426
diff changeset
170 ngx_smtp_from,
ad0a34a8efa6 nginx 0.7.22
Igor Sysoev <http://sysoev.ru>
parents: 426
diff changeset
171 ngx_smtp_to
290
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
172 } ngx_smtp_state_e;
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
173
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
174
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
175 typedef struct {
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
176 ngx_peer_connection_t upstream;
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
177 ngx_buf_t *buffer;
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
178 } ngx_mail_proxy_ctx_t;
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
179
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
180
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
181 typedef struct {
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
182 uint32_t signature; /* "MAIL" */
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
183
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
184 ngx_connection_t *connection;
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
185
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
186 ngx_str_t out;
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
187 ngx_buf_t *buffer;
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
188
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
189 void **ctx;
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
190 void **main_conf;
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
191 void **srv_conf;
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
192
366
babd3d9efb62 nginx 0.6.27
Igor Sysoev <http://sysoev.ru>
parents: 354
diff changeset
193 ngx_resolver_ctx_t *resolver_ctx;
babd3d9efb62 nginx 0.6.27
Igor Sysoev <http://sysoev.ru>
parents: 354
diff changeset
194
290
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
195 ngx_mail_proxy_ctx_t *proxy;
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
196
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
197 ngx_uint_t mail_state;
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
198
336
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
199 unsigned protocol:3;
290
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
200 unsigned blocked:1;
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
201 unsigned quit:1;
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
202 unsigned quoted:1;
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
203 unsigned backslash:1;
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
204 unsigned no_sync_literal:1;
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
205 unsigned starttls:1;
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
206 unsigned esmtp:1;
449
ad0a34a8efa6 nginx 0.7.22
Igor Sysoev <http://sysoev.ru>
parents: 426
diff changeset
207 unsigned auth_method:3;
290
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
208 unsigned auth_wait:1;
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
209
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
210 ngx_str_t login;
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
211 ngx_str_t passwd;
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
212
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
213 ngx_str_t salt;
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
214 ngx_str_t tag;
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
215 ngx_str_t tagged_line;
336
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
216 ngx_str_t text;
290
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
217
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
218 ngx_str_t *addr_text;
366
babd3d9efb62 nginx 0.6.27
Igor Sysoev <http://sysoev.ru>
parents: 354
diff changeset
219 ngx_str_t host;
290
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
220 ngx_str_t smtp_helo;
449
ad0a34a8efa6 nginx 0.7.22
Igor Sysoev <http://sysoev.ru>
parents: 426
diff changeset
221 ngx_str_t smtp_from;
ad0a34a8efa6 nginx 0.7.22
Igor Sysoev <http://sysoev.ru>
parents: 426
diff changeset
222 ngx_str_t smtp_to;
290
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
223
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
224 ngx_uint_t command;
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
225 ngx_array_t args;
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
226
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
227 ngx_uint_t login_attempt;
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
228
336
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
229 /* used to parse POP3/IMAP/SMTP command */
290
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
230
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
231 ngx_uint_t state;
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
232 u_char *cmd_start;
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
233 u_char *arg_start;
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
234 u_char *arg_end;
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
235 ngx_uint_t literal_len;
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
236 } ngx_mail_session_t;
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
237
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
238
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
239 typedef struct {
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
240 ngx_str_t *client;
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
241 ngx_mail_session_t *session;
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
242 } ngx_mail_log_ctx_t;
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
243
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
244
322
d16d691432c9 nginx 0.6.5
Igor Sysoev <http://sysoev.ru>
parents: 290
diff changeset
245 #define NGX_POP3_USER 1
d16d691432c9 nginx 0.6.5
Igor Sysoev <http://sysoev.ru>
parents: 290
diff changeset
246 #define NGX_POP3_PASS 2
d16d691432c9 nginx 0.6.5
Igor Sysoev <http://sysoev.ru>
parents: 290
diff changeset
247 #define NGX_POP3_CAPA 3
d16d691432c9 nginx 0.6.5
Igor Sysoev <http://sysoev.ru>
parents: 290
diff changeset
248 #define NGX_POP3_QUIT 4
d16d691432c9 nginx 0.6.5
Igor Sysoev <http://sysoev.ru>
parents: 290
diff changeset
249 #define NGX_POP3_NOOP 5
d16d691432c9 nginx 0.6.5
Igor Sysoev <http://sysoev.ru>
parents: 290
diff changeset
250 #define NGX_POP3_STLS 6
d16d691432c9 nginx 0.6.5
Igor Sysoev <http://sysoev.ru>
parents: 290
diff changeset
251 #define NGX_POP3_APOP 7
d16d691432c9 nginx 0.6.5
Igor Sysoev <http://sysoev.ru>
parents: 290
diff changeset
252 #define NGX_POP3_AUTH 8
d16d691432c9 nginx 0.6.5
Igor Sysoev <http://sysoev.ru>
parents: 290
diff changeset
253 #define NGX_POP3_STAT 9
d16d691432c9 nginx 0.6.5
Igor Sysoev <http://sysoev.ru>
parents: 290
diff changeset
254 #define NGX_POP3_LIST 10
d16d691432c9 nginx 0.6.5
Igor Sysoev <http://sysoev.ru>
parents: 290
diff changeset
255 #define NGX_POP3_RETR 11
d16d691432c9 nginx 0.6.5
Igor Sysoev <http://sysoev.ru>
parents: 290
diff changeset
256 #define NGX_POP3_DELE 12
d16d691432c9 nginx 0.6.5
Igor Sysoev <http://sysoev.ru>
parents: 290
diff changeset
257 #define NGX_POP3_RSET 13
d16d691432c9 nginx 0.6.5
Igor Sysoev <http://sysoev.ru>
parents: 290
diff changeset
258 #define NGX_POP3_TOP 14
d16d691432c9 nginx 0.6.5
Igor Sysoev <http://sysoev.ru>
parents: 290
diff changeset
259 #define NGX_POP3_UIDL 15
290
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
260
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
261
322
d16d691432c9 nginx 0.6.5
Igor Sysoev <http://sysoev.ru>
parents: 290
diff changeset
262 #define NGX_IMAP_LOGIN 1
d16d691432c9 nginx 0.6.5
Igor Sysoev <http://sysoev.ru>
parents: 290
diff changeset
263 #define NGX_IMAP_LOGOUT 2
d16d691432c9 nginx 0.6.5
Igor Sysoev <http://sysoev.ru>
parents: 290
diff changeset
264 #define NGX_IMAP_CAPABILITY 3
d16d691432c9 nginx 0.6.5
Igor Sysoev <http://sysoev.ru>
parents: 290
diff changeset
265 #define NGX_IMAP_NOOP 4
d16d691432c9 nginx 0.6.5
Igor Sysoev <http://sysoev.ru>
parents: 290
diff changeset
266 #define NGX_IMAP_STARTTLS 5
290
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
267
322
d16d691432c9 nginx 0.6.5
Igor Sysoev <http://sysoev.ru>
parents: 290
diff changeset
268 #define NGX_IMAP_NEXT 6
d16d691432c9 nginx 0.6.5
Igor Sysoev <http://sysoev.ru>
parents: 290
diff changeset
269
d16d691432c9 nginx 0.6.5
Igor Sysoev <http://sysoev.ru>
parents: 290
diff changeset
270 #define NGX_IMAP_AUTHENTICATE 7
290
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
271
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
272
322
d16d691432c9 nginx 0.6.5
Igor Sysoev <http://sysoev.ru>
parents: 290
diff changeset
273 #define NGX_SMTP_HELO 1
d16d691432c9 nginx 0.6.5
Igor Sysoev <http://sysoev.ru>
parents: 290
diff changeset
274 #define NGX_SMTP_EHLO 2
d16d691432c9 nginx 0.6.5
Igor Sysoev <http://sysoev.ru>
parents: 290
diff changeset
275 #define NGX_SMTP_AUTH 3
d16d691432c9 nginx 0.6.5
Igor Sysoev <http://sysoev.ru>
parents: 290
diff changeset
276 #define NGX_SMTP_QUIT 4
d16d691432c9 nginx 0.6.5
Igor Sysoev <http://sysoev.ru>
parents: 290
diff changeset
277 #define NGX_SMTP_NOOP 5
d16d691432c9 nginx 0.6.5
Igor Sysoev <http://sysoev.ru>
parents: 290
diff changeset
278 #define NGX_SMTP_MAIL 6
d16d691432c9 nginx 0.6.5
Igor Sysoev <http://sysoev.ru>
parents: 290
diff changeset
279 #define NGX_SMTP_RSET 7
d16d691432c9 nginx 0.6.5
Igor Sysoev <http://sysoev.ru>
parents: 290
diff changeset
280 #define NGX_SMTP_RCPT 8
d16d691432c9 nginx 0.6.5
Igor Sysoev <http://sysoev.ru>
parents: 290
diff changeset
281 #define NGX_SMTP_DATA 9
d16d691432c9 nginx 0.6.5
Igor Sysoev <http://sysoev.ru>
parents: 290
diff changeset
282 #define NGX_SMTP_VRFY 10
d16d691432c9 nginx 0.6.5
Igor Sysoev <http://sysoev.ru>
parents: 290
diff changeset
283 #define NGX_SMTP_EXPN 11
d16d691432c9 nginx 0.6.5
Igor Sysoev <http://sysoev.ru>
parents: 290
diff changeset
284 #define NGX_SMTP_HELP 12
d16d691432c9 nginx 0.6.5
Igor Sysoev <http://sysoev.ru>
parents: 290
diff changeset
285 #define NGX_SMTP_STARTTLS 13
290
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
286
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
287
482
33394d1255b0 nginx 0.7.34
Igor Sysoev <http://sysoev.ru>
parents: 449
diff changeset
288 #define NGX_MAIL_AUTH_PLAIN 0
33394d1255b0 nginx 0.7.34
Igor Sysoev <http://sysoev.ru>
parents: 449
diff changeset
289 #define NGX_MAIL_AUTH_LOGIN 1
33394d1255b0 nginx 0.7.34
Igor Sysoev <http://sysoev.ru>
parents: 449
diff changeset
290 #define NGX_MAIL_AUTH_LOGIN_USERNAME 2
33394d1255b0 nginx 0.7.34
Igor Sysoev <http://sysoev.ru>
parents: 449
diff changeset
291 #define NGX_MAIL_AUTH_APOP 3
33394d1255b0 nginx 0.7.34
Igor Sysoev <http://sysoev.ru>
parents: 449
diff changeset
292 #define NGX_MAIL_AUTH_CRAM_MD5 4
33394d1255b0 nginx 0.7.34
Igor Sysoev <http://sysoev.ru>
parents: 449
diff changeset
293 #define NGX_MAIL_AUTH_NONE 5
290
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
294
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
295
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
296 #define NGX_MAIL_AUTH_PLAIN_ENABLED 0x0002
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
297 #define NGX_MAIL_AUTH_LOGIN_ENABLED 0x0004
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
298 #define NGX_MAIL_AUTH_APOP_ENABLED 0x0008
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
299 #define NGX_MAIL_AUTH_CRAM_MD5_ENABLED 0x0010
449
ad0a34a8efa6 nginx 0.7.22
Igor Sysoev <http://sysoev.ru>
parents: 426
diff changeset
300 #define NGX_MAIL_AUTH_NONE_ENABLED 0x0020
290
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
301
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
302
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
303 #define NGX_MAIL_PARSE_INVALID_COMMAND 20
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
304
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
305
336
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
306 typedef void (*ngx_mail_init_session_pt)(ngx_mail_session_t *s,
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
307 ngx_connection_t *c);
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
308 typedef void (*ngx_mail_init_protocol_pt)(ngx_event_t *rev);
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
309 typedef void (*ngx_mail_auth_state_pt)(ngx_event_t *rev);
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
310 typedef ngx_int_t (*ngx_mail_parse_command_pt)(ngx_mail_session_t *s);
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
311
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
312
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
313 struct ngx_mail_protocol_s {
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
314 ngx_str_t name;
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
315 in_port_t port[4];
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
316 ngx_uint_t type;
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
317
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
318 ngx_mail_init_session_pt init_session;
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
319 ngx_mail_init_protocol_pt init_protocol;
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
320 ngx_mail_parse_command_pt parse_command;
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
321 ngx_mail_auth_state_pt auth_state;
290
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
322
336
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
323 ngx_str_t internal_server_error;
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
324 };
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
325
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
326
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
327 typedef struct {
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
328 ngx_mail_protocol_t *protocol;
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
329
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
330 void *(*create_main_conf)(ngx_conf_t *cf);
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
331 char *(*init_main_conf)(ngx_conf_t *cf, void *conf);
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
332
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
333 void *(*create_srv_conf)(ngx_conf_t *cf);
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
334 char *(*merge_srv_conf)(ngx_conf_t *cf, void *prev,
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
335 void *conf);
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
336 } ngx_mail_module_t;
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
337
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
338
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
339 #define NGX_MAIL_MODULE 0x4C49414D /* "MAIL" */
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
340
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
341 #define NGX_MAIL_MAIN_CONF 0x02000000
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
342 #define NGX_MAIL_SRV_CONF 0x04000000
290
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
343
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
344
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
345 #define NGX_MAIL_MAIN_CONF_OFFSET offsetof(ngx_mail_conf_ctx_t, main_conf)
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
346 #define NGX_MAIL_SRV_CONF_OFFSET offsetof(ngx_mail_conf_ctx_t, srv_conf)
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
347
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
348
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
349 #define ngx_mail_get_module_ctx(s, module) (s)->ctx[module.ctx_index]
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
350 #define ngx_mail_set_ctx(s, c, module) s->ctx[module.ctx_index] = c;
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
351 #define ngx_mail_delete_ctx(s, module) s->ctx[module.ctx_index] = NULL;
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
352
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
353
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
354 #define ngx_mail_get_module_main_conf(s, module) \
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
355 (s)->main_conf[module.ctx_index]
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
356 #define ngx_mail_get_module_srv_conf(s, module) (s)->srv_conf[module.ctx_index]
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
357
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
358 #define ngx_mail_conf_get_module_main_conf(cf, module) \
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
359 ((ngx_mail_conf_ctx_t *) cf->ctx)->main_conf[module.ctx_index]
322
d16d691432c9 nginx 0.6.5
Igor Sysoev <http://sysoev.ru>
parents: 290
diff changeset
360 #define ngx_mail_conf_get_module_srv_conf(cf, module) \
d16d691432c9 nginx 0.6.5
Igor Sysoev <http://sysoev.ru>
parents: 290
diff changeset
361 ((ngx_mail_conf_ctx_t *) cf->ctx)->srv_conf[module.ctx_index]
290
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
362
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
363
336
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
364 #if (NGX_MAIL_SSL)
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
365 void ngx_mail_starttls_handler(ngx_event_t *rev);
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
366 ngx_int_t ngx_mail_starttls_only(ngx_mail_session_t *s, ngx_connection_t *c);
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
367 #endif
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
368
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
369
290
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
370 void ngx_mail_init_connection(ngx_connection_t *c);
336
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
371
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
372 ngx_int_t ngx_mail_salt(ngx_mail_session_t *s, ngx_connection_t *c,
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
373 ngx_mail_core_srv_conf_t *cscf);
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
374 ngx_int_t ngx_mail_auth_plain(ngx_mail_session_t *s, ngx_connection_t *c,
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
375 ngx_uint_t n);
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
376 ngx_int_t ngx_mail_auth_login_username(ngx_mail_session_t *s,
482
33394d1255b0 nginx 0.7.34
Igor Sysoev <http://sysoev.ru>
parents: 449
diff changeset
377 ngx_connection_t *c, ngx_uint_t n);
336
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
378 ngx_int_t ngx_mail_auth_login_password(ngx_mail_session_t *s,
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
379 ngx_connection_t *c);
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
380 ngx_int_t ngx_mail_auth_cram_md5_salt(ngx_mail_session_t *s,
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
381 ngx_connection_t *c, char *prefix, size_t len);
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
382 ngx_int_t ngx_mail_auth_cram_md5(ngx_mail_session_t *s, ngx_connection_t *c);
571
5938746e70c2 Mail: get rid of ugly protocol check in ngx_mail_auth_parse().
Maxim Dounin <mdounin@mdounin.ru>
parents: 570
diff changeset
383 ngx_int_t ngx_mail_auth_parse(ngx_mail_session_t *s, ngx_connection_t *c,
5938746e70c2 Mail: get rid of ugly protocol check in ngx_mail_auth_parse().
Maxim Dounin <mdounin@mdounin.ru>
parents: 570
diff changeset
384 ngx_uint_t n);
336
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
385
290
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
386 void ngx_mail_send(ngx_event_t *wev);
336
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
387 ngx_int_t ngx_mail_read_command(ngx_mail_session_t *s, ngx_connection_t *c);
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
388 void ngx_mail_auth(ngx_mail_session_t *s, ngx_connection_t *c);
290
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
389 void ngx_mail_close_connection(ngx_connection_t *c);
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
390 void ngx_mail_session_internal_server_error(ngx_mail_session_t *s);
336
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
391 u_char *ngx_mail_log_error(ngx_log_t *log, u_char *buf, size_t len);
290
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
392
336
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
393
1c519aff5c0c nginx 0.6.12
Igor Sysoev <http://sysoev.ru>
parents: 322
diff changeset
394 char *ngx_mail_capabilities(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
290
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
395
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
396
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
397 /* STUB */
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
398 void ngx_mail_proxy_init(ngx_mail_session_t *s, ngx_peer_addr_t *peer);
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
399 void ngx_mail_auth_http_init(ngx_mail_session_t *s);
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
400 /**/
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
401
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
402
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
403 extern ngx_uint_t ngx_mail_max_module;
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
404 extern ngx_module_t ngx_mail_core_module;
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
405
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
406
f745bf973510 nginx 0.5.15
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
407 #endif /* _NGX_MAIL_H_INCLUDED_ */