Mercurial > dovecot > core-2.2
annotate src/lmtp/lmtp-settings.c @ 11822:7a6cf8dae9bf
Added mail_temp_dir setting, used by deliver and lmtp for creating temp mail files.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Thu, 15 Jul 2010 13:42:33 +0100 |
parents | d41694c931d0 |
children | 2735d9afd842 |
rev | line source |
---|---|
10582
615eef3139c2
Updated copyright notices to include year 2010.
Timo Sirainen <tss@iki.fi>
parents:
10410
diff
changeset
|
1 /* Copyright (c) 2009-2010 Dovecot authors, see the included COPYING file */ |
10039
ddcc3391adf9
lmtp: Added lmtp_proxy setting (it's no longer hardcoded to yes).
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
2 |
ddcc3391adf9
lmtp: Added lmtp_proxy setting (it's no longer hardcoded to yes).
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
3 #include "lib.h" |
10179
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10177
diff
changeset
|
4 #include "buffer.h" |
10039
ddcc3391adf9
lmtp: Added lmtp_proxy setting (it's no longer hardcoded to yes).
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
5 #include "settings-parser.h" |
10179
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10177
diff
changeset
|
6 #include "service-settings.h" |
10342
6431c35a9670
lmtp: memdup default settings so RCPT TO settings lookups won't overwrite them.
Timo Sirainen <tss@iki.fi>
parents:
10179
diff
changeset
|
7 #include "master-service.h" |
10039
ddcc3391adf9
lmtp: Added lmtp_proxy setting (it's no longer hardcoded to yes).
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
8 #include "master-service-settings.h" |
10134
545bdb7670d2
lib-storage: Changed APIs to fix reading settings for multiple users.
Timo Sirainen <tss@iki.fi>
parents:
10107
diff
changeset
|
9 #include "lda-settings.h" |
10039
ddcc3391adf9
lmtp: Added lmtp_proxy setting (it's no longer hardcoded to yes).
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
10 #include "lmtp-settings.h" |
11822
7a6cf8dae9bf
Added mail_temp_dir setting, used by deliver and lmtp for creating temp mail files.
Timo Sirainen <tss@iki.fi>
parents:
11631
diff
changeset
|
11 #include "mail-storage-settings.h" |
10039
ddcc3391adf9
lmtp: Added lmtp_proxy setting (it's no longer hardcoded to yes).
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
12 |
ddcc3391adf9
lmtp: Added lmtp_proxy setting (it's no longer hardcoded to yes).
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
13 #include <stddef.h> |
ddcc3391adf9
lmtp: Added lmtp_proxy setting (it's no longer hardcoded to yes).
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
14 #include <unistd.h> |
ddcc3391adf9
lmtp: Added lmtp_proxy setting (it's no longer hardcoded to yes).
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
15 |
10179
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10177
diff
changeset
|
16 /* <settings checks> */ |
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10177
diff
changeset
|
17 static struct file_listener_settings lmtp_login_unix_listeners_array[] = { |
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10177
diff
changeset
|
18 { "lmtp", 0666, "", "" } |
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10177
diff
changeset
|
19 }; |
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10177
diff
changeset
|
20 static struct file_listener_settings *lmtp_login_unix_listeners[] = { |
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10177
diff
changeset
|
21 &lmtp_login_unix_listeners_array[0] |
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10177
diff
changeset
|
22 }; |
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10177
diff
changeset
|
23 static buffer_t lmtp_login_unix_listeners_buf = { |
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10177
diff
changeset
|
24 lmtp_login_unix_listeners, sizeof(lmtp_login_unix_listeners), { 0, } |
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10177
diff
changeset
|
25 }; |
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10177
diff
changeset
|
26 /* </settings checks> */ |
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10177
diff
changeset
|
27 |
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10177
diff
changeset
|
28 struct service_settings lmtp_login_service_settings = { |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10342
diff
changeset
|
29 .name = "lmtp", |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10342
diff
changeset
|
30 .protocol = "lmtp", |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10342
diff
changeset
|
31 .type = "", |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10342
diff
changeset
|
32 .executable = "lmtp", |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10342
diff
changeset
|
33 .user = "", |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10342
diff
changeset
|
34 .group = "", |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10342
diff
changeset
|
35 .privileged_group = "", |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10342
diff
changeset
|
36 .extra_groups = "", |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10342
diff
changeset
|
37 .chroot = "", |
10179
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10177
diff
changeset
|
38 |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10342
diff
changeset
|
39 .drop_priv_before_exec = FALSE, |
10179
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10177
diff
changeset
|
40 |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10342
diff
changeset
|
41 .process_min_avail = 0, |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10342
diff
changeset
|
42 .process_limit = 0, |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10342
diff
changeset
|
43 .client_limit = 0, |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10342
diff
changeset
|
44 .service_count = 0, |
11631
d41694c931d0
Added support for per-service idle kill timeout.
Timo Sirainen <tss@iki.fi>
parents:
10793
diff
changeset
|
45 .idle_kill = 0, |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10342
diff
changeset
|
46 .vsz_limit = 0, |
10179
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10177
diff
changeset
|
47 |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10342
diff
changeset
|
48 .unix_listeners = { { &lmtp_login_unix_listeners_buf, |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10342
diff
changeset
|
49 sizeof(lmtp_login_unix_listeners[0]) } }, |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10342
diff
changeset
|
50 .fifo_listeners = ARRAY_INIT, |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10342
diff
changeset
|
51 .inet_listeners = ARRAY_INIT |
10179
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10177
diff
changeset
|
52 }; |
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10177
diff
changeset
|
53 |
10039
ddcc3391adf9
lmtp: Added lmtp_proxy setting (it's no longer hardcoded to yes).
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
54 #undef DEF |
ddcc3391adf9
lmtp: Added lmtp_proxy setting (it's no longer hardcoded to yes).
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
55 #define DEF(type, name) \ |
ddcc3391adf9
lmtp: Added lmtp_proxy setting (it's no longer hardcoded to yes).
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
56 { type, #name, offsetof(struct lmtp_settings, name), NULL } |
ddcc3391adf9
lmtp: Added lmtp_proxy setting (it's no longer hardcoded to yes).
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
57 |
10177
d589d568a19d
Changed all settings related structs to const and changed APIs to make it work.
Timo Sirainen <tss@iki.fi>
parents:
10134
diff
changeset
|
58 static const struct setting_define lmtp_setting_defines[] = { |
10039
ddcc3391adf9
lmtp: Added lmtp_proxy setting (it's no longer hardcoded to yes).
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
59 DEF(SET_BOOL, lmtp_proxy), |
ddcc3391adf9
lmtp: Added lmtp_proxy setting (it's no longer hardcoded to yes).
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
60 |
ddcc3391adf9
lmtp: Added lmtp_proxy setting (it's no longer hardcoded to yes).
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
61 SETTING_DEFINE_LIST_END |
ddcc3391adf9
lmtp: Added lmtp_proxy setting (it's no longer hardcoded to yes).
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
62 }; |
ddcc3391adf9
lmtp: Added lmtp_proxy setting (it's no longer hardcoded to yes).
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
63 |
10177
d589d568a19d
Changed all settings related structs to const and changed APIs to make it work.
Timo Sirainen <tss@iki.fi>
parents:
10134
diff
changeset
|
64 static const struct lmtp_settings lmtp_default_settings = { |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10342
diff
changeset
|
65 .lmtp_proxy = FALSE |
10039
ddcc3391adf9
lmtp: Added lmtp_proxy setting (it's no longer hardcoded to yes).
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
66 }; |
ddcc3391adf9
lmtp: Added lmtp_proxy setting (it's no longer hardcoded to yes).
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
67 |
10177
d589d568a19d
Changed all settings related structs to const and changed APIs to make it work.
Timo Sirainen <tss@iki.fi>
parents:
10134
diff
changeset
|
68 static const struct setting_parser_info *lmtp_setting_dependencies[] = { |
10134
545bdb7670d2
lib-storage: Changed APIs to fix reading settings for multiple users.
Timo Sirainen <tss@iki.fi>
parents:
10107
diff
changeset
|
69 &lda_setting_parser_info, |
545bdb7670d2
lib-storage: Changed APIs to fix reading settings for multiple users.
Timo Sirainen <tss@iki.fi>
parents:
10107
diff
changeset
|
70 NULL |
545bdb7670d2
lib-storage: Changed APIs to fix reading settings for multiple users.
Timo Sirainen <tss@iki.fi>
parents:
10107
diff
changeset
|
71 }; |
545bdb7670d2
lib-storage: Changed APIs to fix reading settings for multiple users.
Timo Sirainen <tss@iki.fi>
parents:
10107
diff
changeset
|
72 |
10177
d589d568a19d
Changed all settings related structs to const and changed APIs to make it work.
Timo Sirainen <tss@iki.fi>
parents:
10134
diff
changeset
|
73 const struct setting_parser_info lmtp_setting_parser_info = { |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10342
diff
changeset
|
74 .module_name = "lmtp", |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10342
diff
changeset
|
75 .defines = lmtp_setting_defines, |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10342
diff
changeset
|
76 .defaults = &lmtp_default_settings, |
10039
ddcc3391adf9
lmtp: Added lmtp_proxy setting (it's no longer hardcoded to yes).
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
77 |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10342
diff
changeset
|
78 .type_offset = (size_t)-1, |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10342
diff
changeset
|
79 .struct_size = sizeof(struct lmtp_settings), |
10106
5a25b4ec5694
Reordered struct setting_parser_info fields to make using them easier.
Timo Sirainen <tss@iki.fi>
parents:
10039
diff
changeset
|
80 |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10342
diff
changeset
|
81 .parent_offset = (size_t)-1, |
10134
545bdb7670d2
lib-storage: Changed APIs to fix reading settings for multiple users.
Timo Sirainen <tss@iki.fi>
parents:
10107
diff
changeset
|
82 |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10342
diff
changeset
|
83 .dependencies = lmtp_setting_dependencies |
10039
ddcc3391adf9
lmtp: Added lmtp_proxy setting (it's no longer hardcoded to yes).
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
84 }; |
10342
6431c35a9670
lmtp: memdup default settings so RCPT TO settings lookups won't overwrite them.
Timo Sirainen <tss@iki.fi>
parents:
10179
diff
changeset
|
85 |
10793
bf4822f0846b
lib-master: Added support for caching config lookups.
Timo Sirainen <tss@iki.fi>
parents:
10582
diff
changeset
|
86 void lmtp_settings_dup(const struct setting_parser_context *set_parser, |
11822
7a6cf8dae9bf
Added mail_temp_dir setting, used by deliver and lmtp for creating temp mail files.
Timo Sirainen <tss@iki.fi>
parents:
11631
diff
changeset
|
87 pool_t pool, |
7a6cf8dae9bf
Added mail_temp_dir setting, used by deliver and lmtp for creating temp mail files.
Timo Sirainen <tss@iki.fi>
parents:
11631
diff
changeset
|
88 const struct mail_user_settings **user_set_r, |
7a6cf8dae9bf
Added mail_temp_dir setting, used by deliver and lmtp for creating temp mail files.
Timo Sirainen <tss@iki.fi>
parents:
11631
diff
changeset
|
89 const struct lmtp_settings **lmtp_set_r, |
10342
6431c35a9670
lmtp: memdup default settings so RCPT TO settings lookups won't overwrite them.
Timo Sirainen <tss@iki.fi>
parents:
10179
diff
changeset
|
90 const struct lda_settings **lda_set_r) |
6431c35a9670
lmtp: memdup default settings so RCPT TO settings lookups won't overwrite them.
Timo Sirainen <tss@iki.fi>
parents:
10179
diff
changeset
|
91 { |
6431c35a9670
lmtp: memdup default settings so RCPT TO settings lookups won't overwrite them.
Timo Sirainen <tss@iki.fi>
parents:
10179
diff
changeset
|
92 void **sets; |
6431c35a9670
lmtp: memdup default settings so RCPT TO settings lookups won't overwrite them.
Timo Sirainen <tss@iki.fi>
parents:
10179
diff
changeset
|
93 |
10793
bf4822f0846b
lib-master: Added support for caching config lookups.
Timo Sirainen <tss@iki.fi>
parents:
10582
diff
changeset
|
94 sets = settings_parser_get_list(set_parser) + 1; |
11822
7a6cf8dae9bf
Added mail_temp_dir setting, used by deliver and lmtp for creating temp mail files.
Timo Sirainen <tss@iki.fi>
parents:
11631
diff
changeset
|
95 *user_set_r = settings_dup(&mail_user_setting_parser_info, sets[0], pool); |
10342
6431c35a9670
lmtp: memdup default settings so RCPT TO settings lookups won't overwrite them.
Timo Sirainen <tss@iki.fi>
parents:
10179
diff
changeset
|
96 *lda_set_r = settings_dup(&lda_setting_parser_info, sets[1], pool); |
6431c35a9670
lmtp: memdup default settings so RCPT TO settings lookups won't overwrite them.
Timo Sirainen <tss@iki.fi>
parents:
10179
diff
changeset
|
97 *lmtp_set_r = settings_dup(&lmtp_setting_parser_info, sets[2], pool); |
6431c35a9670
lmtp: memdup default settings so RCPT TO settings lookups won't overwrite them.
Timo Sirainen <tss@iki.fi>
parents:
10179
diff
changeset
|
98 } |