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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 }