annotate src/master/master-settings.c @ 9256:d38e0412cfb4 HEAD

dovecot -n/-a now outputs also lda settings.
author Timo Sirainen <tss@iki.fi>
date Sun, 26 Jul 2009 21:56:17 -0400
parents 62b9661b4c7a
children 93759896b0d2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
8590
b9faf4db2a9f Updated copyright notices to include year 2009.
Timo Sirainen <tss@iki.fi>
parents: 8585
diff changeset
1 /* Copyright (c) 2002-2009 Dovecot authors, see the included COPYING file */
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
2
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
3 #include "common.h"
3975
9de8bce1077e Added plugin {} section to dovecot.conf for passing extra environment
Timo Sirainen <tss@iki.fi>
parents: 3921
diff changeset
4 #include "array.h"
3901
0ae5f5b468b7 Put ssl-parameters file into login directory so it still can be accessed
Timo Sirainen <tss@iki.fi>
parents: 3900
diff changeset
5 #include "str.h"
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
6 #include "istream.h"
4197
c3ded5b815aa If we have plugins set and imap_capability unset, figure out the IMAP
Timo Sirainen <tss@iki.fi>
parents: 4190
diff changeset
7 #include "fd-close-on-exec.h"
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
8 #include "safe-mkdir.h"
3900
7ee2fc733bf6 Fix base_dir permissions if it exists
Timo Sirainen <tss@iki.fi>
parents: 3889
diff changeset
9 #include "mkdir-parents.h"
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
10 #include "unlink-directory.h"
3724
d22c883021da Added syslog_facility setting to config file.
Timo Sirainen <tss@iki.fi>
parents: 3683
diff changeset
11 #include "syslog-util.h"
4197
c3ded5b815aa If we have plugins set and imap_capability unset, figure out the IMAP
Timo Sirainen <tss@iki.fi>
parents: 4190
diff changeset
12 #include "mail-process.h"
5846
21e529b8a701 Initial implementation for mail_max_user_connections setting.
Timo Sirainen <tss@iki.fi>
parents: 5800
diff changeset
13 #include "master-login-interface.h"
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
14 #include "settings.h"
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
15
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
16 #include <stdio.h>
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
17 #include <stddef.h>
5659
b118198fbfa3 If Dovecot is already running, complain about it instead of wiping out
Timo Sirainen <tss@iki.fi>
parents: 5638
diff changeset
18 #include <stdlib.h>
3901
0ae5f5b468b7 Put ssl-parameters file into login directory so it still can be accessed
Timo Sirainen <tss@iki.fi>
parents: 3900
diff changeset
19 #include <dirent.h>
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
20 #include <unistd.h>
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
21 #include <fcntl.h>
6513
0a157f89fb52 Compiler warning fix
Timo Sirainen <tss@iki.fi>
parents: 6433
diff changeset
22 #include <signal.h>
3854
fee060a82236 /var/run/dovecot can be world-readable. Default to it, and don't try to
Timo Sirainen <tss@iki.fi>
parents: 3845
diff changeset
23 #include <sys/stat.h>
4197
c3ded5b815aa If we have plugins set and imap_capability unset, figure out the IMAP
Timo Sirainen <tss@iki.fi>
parents: 4190
diff changeset
24 #include <sys/wait.h>
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
25 #include <pwd.h>
5876
933caa747d37 Added mail_uid and mail_gid settings.
Timo Sirainen <tss@iki.fi>
parents: 5857
diff changeset
26 #include <grp.h>
6433
375ba923a622 Include sys/resource.h
Timo Sirainen <tss@iki.fi>
parents: 6429
diff changeset
27 #ifdef HAVE_SYS_RESOURCE_H
375ba923a622 Include sys/resource.h
Timo Sirainen <tss@iki.fi>
parents: 6429
diff changeset
28 # include <sys/resource.h>
375ba923a622 Include sys/resource.h
Timo Sirainen <tss@iki.fi>
parents: 6429
diff changeset
29 #endif
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
30
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
31 enum settings_type {
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
32 SETTINGS_TYPE_ROOT,
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
33 SETTINGS_TYPE_SERVER,
1656
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
34 SETTINGS_TYPE_AUTH,
2236
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
35 SETTINGS_TYPE_AUTH_SOCKET,
3183
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
36 SETTINGS_TYPE_AUTH_PASSDB,
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
37 SETTINGS_TYPE_AUTH_USERDB,
2236
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
38 SETTINGS_TYPE_NAMESPACE,
3975
9de8bce1077e Added plugin {} section to dovecot.conf for passing extra environment
Timo Sirainen <tss@iki.fi>
parents: 3921
diff changeset
39 SETTINGS_TYPE_SOCKET,
4393
9928ebb54719 Instead of passing URIs directly to dictionary server, it now accepts only
Timo Sirainen <tss@iki.fi>
parents: 4388
diff changeset
40 SETTINGS_TYPE_DICT,
3975
9de8bce1077e Added plugin {} section to dovecot.conf for passing extra environment
Timo Sirainen <tss@iki.fi>
parents: 3921
diff changeset
41 SETTINGS_TYPE_PLUGIN
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
42 };
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
43
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
44 struct settings_parse_ctx {
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
45 enum settings_type type, parent_type;
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
46 enum mail_protocol protocol;
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
47
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
48 struct server_settings *root, *server;
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
49 struct auth_settings *auth;
2236
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
50 struct socket_settings *socket;
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
51 struct auth_socket_settings *auth_socket;
3183
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
52 struct auth_passdb_settings *auth_passdb;
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
53 struct auth_userdb_settings *auth_userdb;
1656
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
54 struct namespace_settings *namespace;
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
55
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
56 int level;
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
57 };
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
58
4963
b13c7888563c deliver was treating boolean settings set to "no" as if they were "yes"
Timo Sirainen <tss@iki.fi>
parents: 4960
diff changeset
59 #include "master-settings-defs.c"
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
60
5474
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
61 #undef DEF_STR
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
62 #undef DEF_INT
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
63 #undef DEF_BOOL
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
64 #define DEF_STR(name) DEF_STRUCT_STR(name, auth_settings)
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
65 #define DEF_INT(name) DEF_STRUCT_INT(name, auth_settings)
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
66 #define DEF_BOOL(name) DEF_STRUCT_BOOL(name, auth_settings)
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
67
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
68 static struct setting_def auth_setting_defs[] = {
5474
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
69 DEF_STR(mechanisms),
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
70 DEF_STR(realms),
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
71 DEF_STR(default_realm),
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
72 DEF_INT(cache_size),
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
73 DEF_INT(cache_ttl),
6174
6c48466c23fa Added auth_cache_negative_ttl setting.
Timo Sirainen <tss@iki.fi>
parents: 6020
diff changeset
74 DEF_INT(cache_negative_ttl),
5474
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
75 DEF_STR(executable),
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
76 DEF_STR(user),
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
77 DEF_STR(chroot),
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
78 DEF_STR(username_chars),
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
79 DEF_STR(username_translation),
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
80 DEF_STR(username_format),
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
81 DEF_STR(master_user_separator),
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
82 DEF_STR(anonymous_username),
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
83 DEF_STR(krb5_keytab),
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
84 DEF_STR(gssapi_hostname),
6182
593d2ab4df0d Renamed auth_winbind_helper to auth_winbind_helper_path.
Timo Sirainen <tss@iki.fi>
parents: 6181
diff changeset
85 DEF_STR(winbind_helper_path),
7089
10d49a20b04e Added auth_failure_delay setting.
Timo Sirainen <tss@iki.fi>
parents: 7086
diff changeset
86 DEF_INT(failure_delay),
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
87
5474
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
88 DEF_BOOL(verbose),
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
89 DEF_BOOL(debug),
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
90 DEF_BOOL(debug_passwords),
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
91 DEF_BOOL(ssl_require_client_cert),
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
92 DEF_BOOL(ssl_username_from_cert),
8095
1f948670f274 Renamed auth_ntlm_use_winbind to auth_use_winbind,
Timo Sirainen <tss@iki.fi>
parents: 8092
diff changeset
93 DEF_BOOL(use_winbind),
2236
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
94
5474
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
95 DEF_INT(count),
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
96 DEF_INT(worker_max_count),
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
97 DEF_INT(process_size),
2236
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
98
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
99 { 0, NULL, 0 }
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
100 };
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
101
5474
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
102 #undef DEF_STR
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
103 #undef DEF_INT
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
104 #undef DEF_BOOL
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
105 #define DEF_STR(name) DEF_STRUCT_STR(name, socket_settings)
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
106 #define DEF_INT(name) DEF_STRUCT_INT(name, socket_settings)
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
107 #define DEF_BOOL(name) DEF_STRUCT_BOOL(name, socket_settings)
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
108
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
109 static struct setting_def socket_setting_defs[] = {
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
110 DEF_STR(path),
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
111 DEF_INT(mode),
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
112 DEF_STR(user),
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
113 DEF_STR(group),
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
114
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
115 { 0, NULL, 0 }
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
116 };
2236
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
117
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
118 static struct setting_def auth_socket_setting_defs[] = {
5474
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
119 DEF_STRUCT_STR(type, auth_socket_settings),
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
120
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
121 { 0, NULL, 0 }
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
122 };
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
123
5474
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
124 #undef DEF_STR
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
125 #undef DEF_INT
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
126 #undef DEF_BOOL
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
127 #define DEF_STR(name) DEF_STRUCT_STR(name, auth_passdb_settings)
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
128 #define DEF_INT(name) DEF_STRUCT_INT(name, auth_passdb_settings)
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
129 #define DEF_BOOL(name) DEF_STRUCT_BOOL(name, auth_passdb_settings)
3183
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
130
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
131 static struct setting_def auth_passdb_setting_defs[] = {
5474
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
132 DEF_STR(driver),
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
133 DEF_STR(args),
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
134 DEF_BOOL(deny),
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
135 DEF_BOOL(pass),
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
136 DEF_BOOL(master),
3183
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
137
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
138 { 0, NULL, 0 }
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
139 };
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
140
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
141 static struct setting_def auth_userdb_setting_defs[] = {
5474
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
142 DEF_STRUCT_STR(driver, auth_userdb_settings),
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
143 DEF_STRUCT_STR(args, auth_userdb_settings),
3183
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
144
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
145 { 0, NULL, 0 }
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
146 };
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
147
5474
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
148 #undef DEF_STR
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
149 #undef DEF_INT
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
150 #undef DEF_BOOL
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
151 #define DEF_STR(name) DEF_STRUCT_STR(name, namespace_settings)
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
152 #define DEF_INT(name) DEF_STRUCT_INT(name, namespace_settings)
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
153 #define DEF_BOOL(name) DEF_STRUCT_BOOL(name, namespace_settings)
1656
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
154
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
155 static struct setting_def namespace_setting_defs[] = {
5474
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
156 DEF_STR(type),
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
157 DEF_STR(separator),
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
158 DEF_STR(prefix),
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
159 DEF_STR(location),
8500
3efcdc45d111 Added alias_for setting for namespaces. Fixes namespace issues with fts.
Timo Sirainen <tss@iki.fi>
parents: 8461
diff changeset
160 DEF_STR(alias_for),
5474
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
161 DEF_BOOL(inbox),
331337b735c9 Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents: 5439
diff changeset
162 DEF_BOOL(hidden),
8461
659667d89f69 Added list=children option for namespaces.
Timo Sirainen <tss@iki.fi>
parents: 8403
diff changeset
163 DEF_STR(list),
6603
afc28dd2d4c5 Added subscriptions setting to namespaces to specify if it should handle
Timo Sirainen <tss@iki.fi>
parents: 6513
diff changeset
164 DEF_BOOL(subscriptions),
1656
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
165
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
166 { 0, NULL, 0 }
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
167 };
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
168
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
169 struct settings default_settings = {
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
170 MEMBER(server) NULL,
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
171 MEMBER(protocol) 0,
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
172
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
173 /* common */
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
174 MEMBER(base_dir) PKG_RUNDIR,
4388
af61031c746f Settings parser nowadays returns "" instead of NULL when it reads an empty
Timo Sirainen <tss@iki.fi>
parents: 4326
diff changeset
175 MEMBER(log_path) "",
af61031c746f Settings parser nowadays returns "" instead of NULL when it reads an empty
Timo Sirainen <tss@iki.fi>
parents: 4326
diff changeset
176 MEMBER(info_log_path) "",
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
177 MEMBER(log_timestamp) DEFAULT_FAILURE_STAMP_FORMAT,
3724
d22c883021da Added syslog_facility setting to config file.
Timo Sirainen <tss@iki.fi>
parents: 3683
diff changeset
178 MEMBER(syslog_facility) "mail",
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
179
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
180 /* general */
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
181 MEMBER(protocols) "imap imaps",
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
182 MEMBER(listen) "*",
4326
e228a9efd35d If ssl_listen setting was empty in config file, startup failed with "Can't
Timo Sirainen <tss@iki.fi>
parents: 4316
diff changeset
183 MEMBER(ssl_listen) "",
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
184
8632
5a4fcfde3e91 Renamed "ssl_disable" setting to "ssl". Added support for ssl=required.
Timo Sirainen <tss@iki.fi>
parents: 8590
diff changeset
185 MEMBER(ssl) "yes",
4388
af61031c746f Settings parser nowadays returns "" instead of NULL when it reads an empty
Timo Sirainen <tss@iki.fi>
parents: 4326
diff changeset
186 MEMBER(ssl_ca_file) "",
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
187 MEMBER(ssl_cert_file) SSLDIR"/certs/dovecot.pem",
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
188 MEMBER(ssl_key_file) SSLDIR"/private/dovecot.pem",
4388
af61031c746f Settings parser nowadays returns "" instead of NULL when it reads an empty
Timo Sirainen <tss@iki.fi>
parents: 4326
diff changeset
189 MEMBER(ssl_key_password) "",
3888
650701d41cdf Generate DH parameters and use them. Changed default regeneration time to 1
Timo Sirainen <tss@iki.fi>
parents: 3863
diff changeset
190 MEMBER(ssl_parameters_regenerate) 168,
4388
af61031c746f Settings parser nowadays returns "" instead of NULL when it reads an empty
Timo Sirainen <tss@iki.fi>
parents: 4326
diff changeset
191 MEMBER(ssl_cipher_list) "",
6364
7ad61f00ee55 Added ssl_cert_username_field setting.
Timo Sirainen <tss@iki.fi>
parents: 6283
diff changeset
192 MEMBER(ssl_cert_username_field) "commonName",
1997
1d0985f6bdd9 Added ssl_verify_client_cert setting.
Timo Sirainen <tss@iki.fi>
parents: 1996
diff changeset
193 MEMBER(ssl_verify_client_cert) FALSE,
1725
cc0690f92d96 disable_plaintext_auth defaults to yes now. ipv4 127.* and ipv6 ::1
Timo Sirainen <tss@iki.fi>
parents: 1724
diff changeset
194 MEMBER(disable_plaintext_auth) TRUE,
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
195 MEMBER(verbose_ssl) FALSE,
4165
773c4becceae Added shutdown_clients setting to control if existing imap/pop3 processes
Timo Sirainen <tss@iki.fi>
parents: 4153
diff changeset
196 MEMBER(shutdown_clients) TRUE,
4190
19fc27f57b0c Unless nfs_check=no or mmap_disable=yes, check for the first login if the
Timo Sirainen <tss@iki.fi>
parents: 4168
diff changeset
197 MEMBER(nfs_check) TRUE,
4553
d1c0514754d5 Require that master's version number matches the child's, unless
Timo Sirainen <tss@iki.fi>
parents: 4541
diff changeset
198 MEMBER(version_ignore) FALSE,
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
199
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
200 /* login */
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
201 MEMBER(login_dir) "login",
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
202 MEMBER(login_executable) NULL,
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
203 MEMBER(login_user) "dovecot",
7914
5061533382be Uppercased PACKAGE_NAME macro and started using it in some places.
Timo Sirainen <tss@iki.fi>
parents: 7561
diff changeset
204 MEMBER(login_greeting) PACKAGE_NAME" ready.",
3384
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 3294
diff changeset
205 MEMBER(login_log_format_elements) "user=<%u> method=%m rip=%r lip=%l %c",
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 3294
diff changeset
206 MEMBER(login_log_format) "%$: %s",
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
207
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
208 MEMBER(login_process_per_connection) TRUE,
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
209 MEMBER(login_chroot) TRUE,
7920
3644883cf44e Support transferring original IPs and ports through IMAP proxies.
Timo Sirainen <tss@iki.fi>
parents: 7917
diff changeset
210 MEMBER(login_trusted_networks) "",
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
211
6794
513076febc7a Increased default login_process_size to 64MB. 32MB wasn't enough in all
Timo Sirainen <tss@iki.fi>
parents: 6603
diff changeset
212 MEMBER(login_process_size) 64,
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
213 MEMBER(login_processes_count) 3,
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
214 MEMBER(login_max_processes_count) 128,
4538
9d9e72374164 Fixes to login process handling, especially with
Timo Sirainen <tss@iki.fi>
parents: 4480
diff changeset
215 MEMBER(login_max_connections) 256,
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
216
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
217 /* mail */
4388
af61031c746f Settings parser nowadays returns "" instead of NULL when it reads an empty
Timo Sirainen <tss@iki.fi>
parents: 4326
diff changeset
218 MEMBER(valid_chroot_dirs) "",
af61031c746f Settings parser nowadays returns "" instead of NULL when it reads an empty
Timo Sirainen <tss@iki.fi>
parents: 4326
diff changeset
219 MEMBER(mail_chroot) "",
6401
1eff337eade3 Dropped default max_mail_processes to 512.
Timo Sirainen <tss@iki.fi>
parents: 6399
diff changeset
220 MEMBER(max_mail_processes) 512,
5857
123748453011 Changed mail_max_user_connections to mail_max_userip_connections.
Timo Sirainen <tss@iki.fi>
parents: 5846
diff changeset
221 MEMBER(mail_max_userip_connections) 10,
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
222 MEMBER(verbose_proctitle) FALSE,
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
223
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
224 MEMBER(first_valid_uid) 500,
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
225 MEMBER(last_valid_uid) 0,
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
226 MEMBER(first_valid_gid) 1,
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
227 MEMBER(last_valid_gid) 0,
7341
af998ae4254b Replaced mail_extra_groups setting with mail_privileged_group and
Timo Sirainen <tss@iki.fi>
parents: 7339
diff changeset
228 MEMBER(mail_access_groups) "",
af998ae4254b Replaced mail_extra_groups setting with mail_privileged_group and
Timo Sirainen <tss@iki.fi>
parents: 7339
diff changeset
229 MEMBER(mail_privileged_group) "",
5876
933caa747d37 Added mail_uid and mail_gid settings.
Timo Sirainen <tss@iki.fi>
parents: 5857
diff changeset
230 MEMBER(mail_uid) "",
933caa747d37 Added mail_uid and mail_gid settings.
Timo Sirainen <tss@iki.fi>
parents: 5857
diff changeset
231 MEMBER(mail_gid) "",
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
232
4701
190a66df2f82 Renamed default_mail_env to mail_location. Keep the default_mail_env working
Timo Sirainen <tss@iki.fi>
parents: 4626
diff changeset
233 MEMBER(mail_location) "",
5948
a0b3228be6d2 Don't cache anything by default. flags aren't useful with pop3.
Timo Sirainen <tss@iki.fi>
parents: 5943
diff changeset
234 MEMBER(mail_cache_fields) "",
2330
f6c6ad1a55f9 Changed default cache fields
Timo Sirainen <tss@iki.fi>
parents: 2316
diff changeset
235 MEMBER(mail_never_cache_fields) "imap.envelope",
3909
411f20e72a8f Added mail_cache_min_mail_count setting.
Timo Sirainen <tss@iki.fi>
parents: 3901
diff changeset
236 MEMBER(mail_cache_min_mail_count) 0,
1172
f7c273202dc3 Support for IDLE extension.
Timo Sirainen <tss@iki.fi>
parents: 1168
diff changeset
237 MEMBER(mailbox_idle_check_interval) 30,
3033
146897976cfa Added mail_debug setting. Moved full_filesystem_access from global variable
Timo Sirainen <tss@iki.fi>
parents: 3027
diff changeset
238 MEMBER(mail_debug) FALSE,
1151
058f6c26f405 Added mail_full_filesystem_access setting. Some of the setting variable
Timo Sirainen <tss@iki.fi>
parents: 1138
diff changeset
239 MEMBER(mail_full_filesystem_access) FALSE,
1959
50e24ce4f9c3 and a few more custom flag -> keyword changes
Timo Sirainen <tss@iki.fi>
parents: 1920
diff changeset
240 MEMBER(mail_max_keyword_length) 50,
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
241 MEMBER(mail_save_crlf) FALSE,
5626
d1de7c486763 Removed mmap_no_write setting. The only OS requiring it is OpenBSD, so we're
Timo Sirainen <tss@iki.fi>
parents: 5498
diff changeset
242 #ifdef MMAP_CONFLICTS_WRITE
d1de7c486763 Removed mmap_no_write setting. The only OS requiring it is OpenBSD, so we're
Timo Sirainen <tss@iki.fi>
parents: 5498
diff changeset
243 MEMBER(mmap_disable) TRUE,
d1de7c486763 Removed mmap_no_write setting. The only OS requiring it is OpenBSD, so we're
Timo Sirainen <tss@iki.fi>
parents: 5498
diff changeset
244 #else
1917
68938dccbc45 Forced locking to be right with mprotect()ing index file. Support for
Timo Sirainen <tss@iki.fi>
parents: 1907
diff changeset
245 MEMBER(mmap_disable) FALSE,
68938dccbc45 Forced locking to be right with mprotect()ing index file. Support for
Timo Sirainen <tss@iki.fi>
parents: 1907
diff changeset
246 #endif
6896
139bd6094de6 Use dotlock_use_excl=yes by default.
Timo Sirainen <tss@iki.fi>
parents: 6794
diff changeset
247 MEMBER(dotlock_use_excl) TRUE,
4918
2f9173e103fd Added fsync_disable setting. Also added missing fsync()ing to dbox when
Timo Sirainen <tss@iki.fi>
parents: 4907
diff changeset
248 MEMBER(fsync_disable) FALSE,
5977
38a73d870731 Added mail_nfs_storage and mail_nfs_index settings.
Timo Sirainen <tss@iki.fi>
parents: 5948
diff changeset
249 MEMBER(mail_nfs_storage) FALSE,
38a73d870731 Added mail_nfs_storage and mail_nfs_index settings.
Timo Sirainen <tss@iki.fi>
parents: 5948
diff changeset
250 MEMBER(mail_nfs_index) FALSE,
6283
2d5363433029 Disable mailbox list indexing by default for now.
Timo Sirainen <tss@iki.fi>
parents: 6282
diff changeset
251 MEMBER(mailbox_list_index_disable) TRUE,
4120
c9afd13cf2d5 Changed the default lock_method back to fcntl. flock seems to be broken in
Timo Sirainen <tss@iki.fi>
parents: 4118
diff changeset
252 MEMBER(lock_method) "fcntl",
2078
b3daf55df932 Added maildir_stat_dirs option.
Timo Sirainen <tss@iki.fi>
parents: 2075
diff changeset
253 MEMBER(maildir_stat_dirs) FALSE,
6207
23b486d0fe6d maildir_copy_with_hardlinks=yes is now the default.
Timo Sirainen <tss@iki.fi>
parents: 6182
diff changeset
254 MEMBER(maildir_copy_with_hardlinks) TRUE,
4960
4714befe2604 Added maildir_copy_preserve_filename setting.
Timo Sirainen <timo.sirainen@movial.fi>
parents: 4918
diff changeset
255 MEMBER(maildir_copy_preserve_filename) FALSE,
8876
88aeadb32151 Added maildir_very_dirty_syncs setting.
Timo Sirainen <tss@iki.fi>
parents: 8834
diff changeset
256 MEMBER(maildir_very_dirty_syncs) FALSE,
2108
0b3a6fea167c Some of recent dotlock changes weren't committed..
Timo Sirainen <tss@iki.fi>
parents: 2097
diff changeset
257 MEMBER(mbox_read_locks) "fcntl",
0b3a6fea167c Some of recent dotlock changes weren't committed..
Timo Sirainen <tss@iki.fi>
parents: 2097
diff changeset
258 MEMBER(mbox_write_locks) "dotlock fcntl",
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
259 MEMBER(mbox_lock_timeout) 300,
4010
6519f3c7bd63 Updated mbox_dotlock_change_timeout default value to 120. Also the mbox
Timo Sirainen <timo.sirainen@movial.fi>
parents: 4003
diff changeset
260 MEMBER(mbox_dotlock_change_timeout) 120,
3912
fc0b638330a4 Added mbox_min_index_size setting.
Timo Sirainen <tss@iki.fi>
parents: 3909
diff changeset
261 MEMBER(mbox_min_index_size) 0,
2511
710e0bf25bf8 Added mbox_dirty_syncs setting which delays re-reading the whole mbox when
Timo Sirainen <tss@iki.fi>
parents: 2510
diff changeset
262 MEMBER(mbox_dirty_syncs) TRUE,
2967
b31f48d152c4 Added mbox_very_dirty_syncs setting.
Timo Sirainen <tss@iki.fi>
parents: 2960
diff changeset
263 MEMBER(mbox_very_dirty_syncs) FALSE,
2662
add94f9aa9e1 Added mbox_lazy_writes setting.
Timo Sirainen <tss@iki.fi>
parents: 2621
diff changeset
264 MEMBER(mbox_lazy_writes) TRUE,
3813
74289963b8a7 Added dbox_rotate_size and dbox_rotate_days settings.
Timo Sirainen <tss@iki.fi>
parents: 3809
diff changeset
265 MEMBER(dbox_rotate_size) 2048,
3845
18a786df5815 Added dbox_rotate_min_size and fixed rotation checks.
Timo Sirainen <tss@iki.fi>
parents: 3813
diff changeset
266 MEMBER(dbox_rotate_min_size) 16,
3813
74289963b8a7 Added dbox_rotate_size and dbox_rotate_days settings.
Timo Sirainen <tss@iki.fi>
parents: 3809
diff changeset
267 MEMBER(dbox_rotate_days) 1,
1223
52e0830ade13 Added setting mail_drop_priv_before_exec.
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
268 MEMBER(mail_drop_priv_before_exec) FALSE,
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
269
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
270 MEMBER(mail_executable) PKG_LIBEXECDIR"/imap",
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
271 MEMBER(mail_process_size) 256,
4074
dadc6e2cccb8 Replaced mail_use_modules and mail_modules settings with mail_plugins and
Timo Sirainen <tss@iki.fi>
parents: 4030
diff changeset
272 MEMBER(mail_plugins) "",
dadc6e2cccb8 Replaced mail_use_modules and mail_modules settings with mail_plugins and
Timo Sirainen <tss@iki.fi>
parents: 4030
diff changeset
273 MEMBER(mail_plugin_dir) MODULEDIR"/imap",
2805
100ecc609dd1 mail_log_prefix was using old %p, changed it to %s..
Timo Sirainen <tss@iki.fi>
parents: 2798
diff changeset
274 MEMBER(mail_log_prefix) "%Us(%u): ",
5098
176c28ad604c Added mail_log_max_lines_per_sec setting.
Timo Sirainen <tss@iki.fi>
parents: 5032
diff changeset
275 MEMBER(mail_log_max_lines_per_sec) 10,
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
276
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
277 /* imap */
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
278 MEMBER(imap_max_line_length) 65536,
4197
c3ded5b815aa If we have plugins set and imap_capability unset, figure out the IMAP
Timo Sirainen <tss@iki.fi>
parents: 4190
diff changeset
279 MEMBER(imap_capability) "",
6210
da3c8d825f5c Client is now never disconnected in IDLE because it hasn't sent anything.
Timo Sirainen <tss@iki.fi>
parents: 6207
diff changeset
280 MEMBER(imap_client_workarounds) "",
5980
57b70f64f997 Added imap_logout_format setting with default to bytes=%i/%o
Timo Sirainen <tss@iki.fi>
parents: 5977
diff changeset
281 MEMBER(imap_logout_format) "bytes=%i/%o",
7917
ca2ff54ee9b4 Added support for IMAP ID extension.
Timo Sirainen <tss@iki.fi>
parents: 7914
diff changeset
282 MEMBER(imap_id_send) "",
ca2ff54ee9b4 Added support for IMAP ID extension.
Timo Sirainen <tss@iki.fi>
parents: 7914
diff changeset
283 MEMBER(imap_id_log) "",
8955
8de5b2a19a08 Added imap_idle_notify_interval setting.
Timo Sirainen <tss@iki.fi>
parents: 8900
diff changeset
284 MEMBER(imap_idle_notify_interval) 120,
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
285
2039
f0925b2271e1 Added pop3_mails_keep_recent option. Fixed recent assert crash.
Timo Sirainen <tss@iki.fi>
parents: 2027
diff changeset
286 /* pop3 */
2719
f8adc5cb2508 Renamed pop3_mails_keep_recent to pop3_no_flag_updates which includes
Timo Sirainen <tss@iki.fi>
parents: 2717
diff changeset
287 MEMBER(pop3_no_flag_updates) FALSE,
2621
c6cc163344c3 Added pop3_enable_last setting to enable deprecated LAST command.
Timo Sirainen <tss@iki.fi>
parents: 2595
diff changeset
288 MEMBER(pop3_enable_last) FALSE,
3567
58e3fa234ef4 Added pop3_reuse_xuidl setting. Patch by Chris Wakelin
Timo Sirainen <tss@iki.fi>
parents: 3522
diff changeset
289 MEMBER(pop3_reuse_xuidl) FALSE,
4153
690c72358cd5 Added pop3_lock_session setting.
Timo Sirainen <tss@iki.fi>
parents: 4138
diff changeset
290 MEMBER(pop3_lock_session) FALSE,
6019
12f6a19dc846 Set pop3_uidl_format default to %08Xu%08Xv
Timo Sirainen <tss@iki.fi>
parents: 5980
diff changeset
291 MEMBER(pop3_uidl_format) "%08Xu%08Xv",
4388
af61031c746f Settings parser nowadays returns "" instead of NULL when it reads an empty
Timo Sirainen <tss@iki.fi>
parents: 4326
diff changeset
292 MEMBER(pop3_client_workarounds) "",
4118
b66da5c1a94b Replaced %T and %R with %p and %b. %R was already used by string-reversion,
Timo Sirainen <tss@iki.fi>
parents: 4108
diff changeset
293 MEMBER(pop3_logout_format) "top=%t/%p, retr=%r/%b, del=%d/%m, size=%s",
2039
f0925b2271e1 Added pop3_mails_keep_recent option. Fixed recent assert crash.
Timo Sirainen <tss@iki.fi>
parents: 2027
diff changeset
294
7481
768231eb84cf Added dict_db_config setting to point to a Berkeley DB config file.
Timo Sirainen <tss@iki.fi>
parents: 7341
diff changeset
295 /* dict */
768231eb84cf Added dict_db_config setting to point to a Berkeley DB config file.
Timo Sirainen <tss@iki.fi>
parents: 7341
diff changeset
296 MEMBER(dict_db_config) NULL,
8649
67c08c386702 Added dict_process_count setting for creating multiple dict processes.
Timo Sirainen <tss@iki.fi>
parents: 8633
diff changeset
297 MEMBER(dict_process_count) 1,
7481
768231eb84cf Added dict_db_config setting to point to a Berkeley DB config file.
Timo Sirainen <tss@iki.fi>
parents: 7341
diff changeset
298
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
299 /* .. */
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
300 };
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
301
1330
7cde19dbe754 Moved auth_username_chars from db-pgsql to generic for all. Some other
Timo Sirainen <tss@iki.fi>
parents: 1328
diff changeset
302 struct auth_settings default_auth_settings = {
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
303 MEMBER(parent) NULL,
1330
7cde19dbe754 Moved auth_username_chars from db-pgsql to generic for all. Some other
Timo Sirainen <tss@iki.fi>
parents: 1328
diff changeset
304 MEMBER(next) NULL,
7cde19dbe754 Moved auth_username_chars from db-pgsql to generic for all. Some other
Timo Sirainen <tss@iki.fi>
parents: 1328
diff changeset
305
7cde19dbe754 Moved auth_username_chars from db-pgsql to generic for all. Some other
Timo Sirainen <tss@iki.fi>
parents: 1328
diff changeset
306 MEMBER(name) NULL,
7cde19dbe754 Moved auth_username_chars from db-pgsql to generic for all. Some other
Timo Sirainen <tss@iki.fi>
parents: 1328
diff changeset
307 MEMBER(mechanisms) "plain",
4388
af61031c746f Settings parser nowadays returns "" instead of NULL when it reads an empty
Timo Sirainen <tss@iki.fi>
parents: 4326
diff changeset
308 MEMBER(realms) "",
af61031c746f Settings parser nowadays returns "" instead of NULL when it reads an empty
Timo Sirainen <tss@iki.fi>
parents: 4326
diff changeset
309 MEMBER(default_realm) "",
2798
54b29901a793 Added simple LRU cache for auth requests. Currently only for sql passdb.
Timo Sirainen <tss@iki.fi>
parents: 2726
diff changeset
310 MEMBER(cache_size) 0,
54b29901a793 Added simple LRU cache for auth requests. Currently only for sql passdb.
Timo Sirainen <tss@iki.fi>
parents: 2726
diff changeset
311 MEMBER(cache_ttl) 3600,
6174
6c48466c23fa Added auth_cache_negative_ttl setting.
Timo Sirainen <tss@iki.fi>
parents: 6020
diff changeset
312 MEMBER(cache_negative_ttl) 3600,
1330
7cde19dbe754 Moved auth_username_chars from db-pgsql to generic for all. Some other
Timo Sirainen <tss@iki.fi>
parents: 1328
diff changeset
313 MEMBER(executable) PKG_LIBEXECDIR"/dovecot-auth",
7cde19dbe754 Moved auth_username_chars from db-pgsql to generic for all. Some other
Timo Sirainen <tss@iki.fi>
parents: 1328
diff changeset
314 MEMBER(user) "root",
4388
af61031c746f Settings parser nowadays returns "" instead of NULL when it reads an empty
Timo Sirainen <tss@iki.fi>
parents: 4326
diff changeset
315 MEMBER(chroot) "",
1330
7cde19dbe754 Moved auth_username_chars from db-pgsql to generic for all. Some other
Timo Sirainen <tss@iki.fi>
parents: 1328
diff changeset
316 MEMBER(username_chars) "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@",
2510
0f660149c7ef Added auth_username_translation setting.
Timo Sirainen <tss@iki.fi>
parents: 2417
diff changeset
317 MEMBER(username_translation) "",
4168
3f27bf7832a2 Added auth_username_format setting.
Timo Sirainen <tss@iki.fi>
parents: 4165
diff changeset
318 MEMBER(username_format) "",
4388
af61031c746f Settings parser nowadays returns "" instead of NULL when it reads an empty
Timo Sirainen <tss@iki.fi>
parents: 4326
diff changeset
319 MEMBER(master_user_separator) "",
1437
c27c6089e933 Added support for ANONYMOUS SASL mechanism.
Timo Sirainen <tss@iki.fi>
parents: 1330
diff changeset
320 MEMBER(anonymous_username) "anonymous",
4388
af61031c746f Settings parser nowadays returns "" instead of NULL when it reads an empty
Timo Sirainen <tss@iki.fi>
parents: 4326
diff changeset
321 MEMBER(krb5_keytab) "",
5439
c5401a8f4679 Added auth_gssapi_hostname setting.
Timo Sirainen <tss@iki.fi>
parents: 5432
diff changeset
322 MEMBER(gssapi_hostname) "",
6182
593d2ab4df0d Renamed auth_winbind_helper to auth_winbind_helper_path.
Timo Sirainen <tss@iki.fi>
parents: 6181
diff changeset
323 MEMBER(winbind_helper_path) "/usr/bin/ntlm_auth",
7089
10d49a20b04e Added auth_failure_delay setting.
Timo Sirainen <tss@iki.fi>
parents: 7086
diff changeset
324 MEMBER(failure_delay) 2,
1330
7cde19dbe754 Moved auth_username_chars from db-pgsql to generic for all. Some other
Timo Sirainen <tss@iki.fi>
parents: 1328
diff changeset
325
7cde19dbe754 Moved auth_username_chars from db-pgsql to generic for all. Some other
Timo Sirainen <tss@iki.fi>
parents: 1328
diff changeset
326 MEMBER(verbose) FALSE,
2417
af0e73fc6658 Added auth_debug setting.
Timo Sirainen <tss@iki.fi>
parents: 2330
diff changeset
327 MEMBER(debug) FALSE,
3918
40a461d554e6 Added auth_debug_passwords setting. If it's not enabled, hide all password
Timo Sirainen <tss@iki.fi>
parents: 3914
diff changeset
328 MEMBER(debug_passwords) FALSE,
2027
dc5d0da1abe9 Added ssl_require_client_cert auth-specific setting. Hide
Timo Sirainen <tss@iki.fi>
parents: 2000
diff changeset
329 MEMBER(ssl_require_client_cert) FALSE,
3635
c12df370e1b2 Added ssl_username_from_cert setting. Not actually tested yet..
Timo Sirainen <tss@iki.fi>
parents: 3609
diff changeset
330 MEMBER(ssl_username_from_cert) FALSE,
8095
1f948670f274 Renamed auth_ntlm_use_winbind to auth_use_winbind,
Timo Sirainen <tss@iki.fi>
parents: 8092
diff changeset
331 MEMBER(use_winbind) FALSE,
1330
7cde19dbe754 Moved auth_username_chars from db-pgsql to generic for all. Some other
Timo Sirainen <tss@iki.fi>
parents: 1328
diff changeset
332
7cde19dbe754 Moved auth_username_chars from db-pgsql to generic for all. Some other
Timo Sirainen <tss@iki.fi>
parents: 1328
diff changeset
333 MEMBER(count) 1,
3166
e6a487d80288 Restructuring of auth code. Balancer auth processes were a bad idea. Usually
Timo Sirainen <tss@iki.fi>
parents: 3033
diff changeset
334 MEMBER(worker_max_count) 30,
1736
d55e7dfa9770 missing initializers
Timo Sirainen <tss@iki.fi>
parents: 1735
diff changeset
335 MEMBER(process_size) 256,
d55e7dfa9770 missing initializers
Timo Sirainen <tss@iki.fi>
parents: 1735
diff changeset
336
d55e7dfa9770 missing initializers
Timo Sirainen <tss@iki.fi>
parents: 1735
diff changeset
337 /* .. */
d55e7dfa9770 missing initializers
Timo Sirainen <tss@iki.fi>
parents: 1735
diff changeset
338 MEMBER(uid) 0,
2236
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
339 MEMBER(gid) 0,
3183
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
340 MEMBER(passdbs) NULL,
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
341 MEMBER(userdbs) NULL,
2236
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
342 MEMBER(sockets) NULL
1330
7cde19dbe754 Moved auth_username_chars from db-pgsql to generic for all. Some other
Timo Sirainen <tss@iki.fi>
parents: 1328
diff changeset
343 };
7cde19dbe754 Moved auth_username_chars from db-pgsql to generic for all. Some other
Timo Sirainen <tss@iki.fi>
parents: 1328
diff changeset
344
4388
af61031c746f Settings parser nowadays returns "" instead of NULL when it reads an empty
Timo Sirainen <tss@iki.fi>
parents: 4326
diff changeset
345 struct socket_settings default_socket_settings = {
5706
afc4e8a7354a Master and client sockets have default paths now. Section name only needs to
Timo Sirainen <tss@iki.fi>
parents: 5659
diff changeset
346 #define DEFAULT_MASTER_SOCKET_PATH "auth-master"
afc4e8a7354a Master and client sockets have default paths now. Section name only needs to
Timo Sirainen <tss@iki.fi>
parents: 5659
diff changeset
347 #define DEFAULT_CLIENT_SOCKET_PATH "auth-client"
4388
af61031c746f Settings parser nowadays returns "" instead of NULL when it reads an empty
Timo Sirainen <tss@iki.fi>
parents: 4326
diff changeset
348 MEMBER(path) "",
5706
afc4e8a7354a Master and client sockets have default paths now. Section name only needs to
Timo Sirainen <tss@iki.fi>
parents: 5659
diff changeset
349 MEMBER(mode) 0600,
4388
af61031c746f Settings parser nowadays returns "" instead of NULL when it reads an empty
Timo Sirainen <tss@iki.fi>
parents: 4326
diff changeset
350 MEMBER(user) "",
af61031c746f Settings parser nowadays returns "" instead of NULL when it reads an empty
Timo Sirainen <tss@iki.fi>
parents: 4326
diff changeset
351 MEMBER(group) ""
af61031c746f Settings parser nowadays returns "" instead of NULL when it reads an empty
Timo Sirainen <tss@iki.fi>
parents: 4326
diff changeset
352 };
af61031c746f Settings parser nowadays returns "" instead of NULL when it reads an empty
Timo Sirainen <tss@iki.fi>
parents: 4326
diff changeset
353
af61031c746f Settings parser nowadays returns "" instead of NULL when it reads an empty
Timo Sirainen <tss@iki.fi>
parents: 4326
diff changeset
354 struct namespace_settings default_namespace_settings = {
af61031c746f Settings parser nowadays returns "" instead of NULL when it reads an empty
Timo Sirainen <tss@iki.fi>
parents: 4326
diff changeset
355 MEMBER(parent) NULL,
af61031c746f Settings parser nowadays returns "" instead of NULL when it reads an empty
Timo Sirainen <tss@iki.fi>
parents: 4326
diff changeset
356 MEMBER(next) NULL,
af61031c746f Settings parser nowadays returns "" instead of NULL when it reads an empty
Timo Sirainen <tss@iki.fi>
parents: 4326
diff changeset
357 MEMBER(type) NULL,
af61031c746f Settings parser nowadays returns "" instead of NULL when it reads an empty
Timo Sirainen <tss@iki.fi>
parents: 4326
diff changeset
358
af61031c746f Settings parser nowadays returns "" instead of NULL when it reads an empty
Timo Sirainen <tss@iki.fi>
parents: 4326
diff changeset
359 MEMBER(separator) "",
af61031c746f Settings parser nowadays returns "" instead of NULL when it reads an empty
Timo Sirainen <tss@iki.fi>
parents: 4326
diff changeset
360 MEMBER(prefix) "",
af61031c746f Settings parser nowadays returns "" instead of NULL when it reads an empty
Timo Sirainen <tss@iki.fi>
parents: 4326
diff changeset
361 MEMBER(location) "",
8500
3efcdc45d111 Added alias_for setting for namespaces. Fixes namespace issues with fts.
Timo Sirainen <tss@iki.fi>
parents: 8461
diff changeset
362 MEMBER(alias_for) NULL,
4388
af61031c746f Settings parser nowadays returns "" instead of NULL when it reads an empty
Timo Sirainen <tss@iki.fi>
parents: 4326
diff changeset
363
af61031c746f Settings parser nowadays returns "" instead of NULL when it reads an empty
Timo Sirainen <tss@iki.fi>
parents: 4326
diff changeset
364 MEMBER(inbox) FALSE,
5800
c192277a81b3 Added list setting to namespaces to control whether mailboxes in the
Timo Sirainen <tss@iki.fi>
parents: 5706
diff changeset
365 MEMBER(hidden) FALSE,
8461
659667d89f69 Added list=children option for namespaces.
Timo Sirainen <tss@iki.fi>
parents: 8403
diff changeset
366 MEMBER(list) "yes",
6603
afc28dd2d4c5 Added subscriptions setting to namespaces to specify if it should handle
Timo Sirainen <tss@iki.fi>
parents: 6513
diff changeset
367 MEMBER(subscriptions) TRUE
4388
af61031c746f Settings parser nowadays returns "" instead of NULL when it reads an empty
Timo Sirainen <tss@iki.fi>
parents: 4326
diff changeset
368 };
af61031c746f Settings parser nowadays returns "" instead of NULL when it reads an empty
Timo Sirainen <tss@iki.fi>
parents: 4326
diff changeset
369
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
370 static pool_t settings_pool, settings2_pool;
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
371 struct server_settings *settings_root = NULL;
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
372
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
373 static void fix_base_path(struct settings *set, const char **str)
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
374 {
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
375 if (*str != NULL && **str != '\0' && **str != '/') {
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
376 *str = p_strconcat(settings_pool,
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
377 set->base_dir, "/", *str, NULL);
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
378 }
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
379 }
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
380
5876
933caa747d37 Added mail_uid and mail_gid settings.
Timo Sirainen <tss@iki.fi>
parents: 5857
diff changeset
381 static bool parse_uid(const char *str, uid_t *uid_r)
933caa747d37 Added mail_uid and mail_gid settings.
Timo Sirainen <tss@iki.fi>
parents: 5857
diff changeset
382 {
933caa747d37 Added mail_uid and mail_gid settings.
Timo Sirainen <tss@iki.fi>
parents: 5857
diff changeset
383 struct passwd *pw;
933caa747d37 Added mail_uid and mail_gid settings.
Timo Sirainen <tss@iki.fi>
parents: 5857
diff changeset
384 char *p;
933caa747d37 Added mail_uid and mail_gid settings.
Timo Sirainen <tss@iki.fi>
parents: 5857
diff changeset
385
933caa747d37 Added mail_uid and mail_gid settings.
Timo Sirainen <tss@iki.fi>
parents: 5857
diff changeset
386 if (*str >= '0' && *str <= '9') {
933caa747d37 Added mail_uid and mail_gid settings.
Timo Sirainen <tss@iki.fi>
parents: 5857
diff changeset
387 *uid_r = (uid_t)strtoul(str, &p, 10);
933caa747d37 Added mail_uid and mail_gid settings.
Timo Sirainen <tss@iki.fi>
parents: 5857
diff changeset
388 if (*p == '\0')
933caa747d37 Added mail_uid and mail_gid settings.
Timo Sirainen <tss@iki.fi>
parents: 5857
diff changeset
389 return TRUE;
933caa747d37 Added mail_uid and mail_gid settings.
Timo Sirainen <tss@iki.fi>
parents: 5857
diff changeset
390 }
933caa747d37 Added mail_uid and mail_gid settings.
Timo Sirainen <tss@iki.fi>
parents: 5857
diff changeset
391
933caa747d37 Added mail_uid and mail_gid settings.
Timo Sirainen <tss@iki.fi>
parents: 5857
diff changeset
392 pw = getpwnam(str);
933caa747d37 Added mail_uid and mail_gid settings.
Timo Sirainen <tss@iki.fi>
parents: 5857
diff changeset
393 if (pw == NULL)
933caa747d37 Added mail_uid and mail_gid settings.
Timo Sirainen <tss@iki.fi>
parents: 5857
diff changeset
394 return FALSE;
933caa747d37 Added mail_uid and mail_gid settings.
Timo Sirainen <tss@iki.fi>
parents: 5857
diff changeset
395
933caa747d37 Added mail_uid and mail_gid settings.
Timo Sirainen <tss@iki.fi>
parents: 5857
diff changeset
396 *uid_r = pw->pw_uid;
933caa747d37 Added mail_uid and mail_gid settings.
Timo Sirainen <tss@iki.fi>
parents: 5857
diff changeset
397 return TRUE;
933caa747d37 Added mail_uid and mail_gid settings.
Timo Sirainen <tss@iki.fi>
parents: 5857
diff changeset
398 }
933caa747d37 Added mail_uid and mail_gid settings.
Timo Sirainen <tss@iki.fi>
parents: 5857
diff changeset
399
933caa747d37 Added mail_uid and mail_gid settings.
Timo Sirainen <tss@iki.fi>
parents: 5857
diff changeset
400 static bool parse_gid(const char *str, gid_t *gid_r)
933caa747d37 Added mail_uid and mail_gid settings.
Timo Sirainen <tss@iki.fi>
parents: 5857
diff changeset
401 {
933caa747d37 Added mail_uid and mail_gid settings.
Timo Sirainen <tss@iki.fi>
parents: 5857
diff changeset
402 struct group *gr;
933caa747d37 Added mail_uid and mail_gid settings.
Timo Sirainen <tss@iki.fi>
parents: 5857
diff changeset
403 char *p;
933caa747d37 Added mail_uid and mail_gid settings.
Timo Sirainen <tss@iki.fi>
parents: 5857
diff changeset
404
933caa747d37 Added mail_uid and mail_gid settings.
Timo Sirainen <tss@iki.fi>
parents: 5857
diff changeset
405 if (*str >= '0' && *str <= '9') {
933caa747d37 Added mail_uid and mail_gid settings.
Timo Sirainen <tss@iki.fi>
parents: 5857
diff changeset
406 *gid_r = (gid_t)strtoul(str, &p, 10);
933caa747d37 Added mail_uid and mail_gid settings.
Timo Sirainen <tss@iki.fi>
parents: 5857
diff changeset
407 if (*p == '\0')
933caa747d37 Added mail_uid and mail_gid settings.
Timo Sirainen <tss@iki.fi>
parents: 5857
diff changeset
408 return TRUE;
933caa747d37 Added mail_uid and mail_gid settings.
Timo Sirainen <tss@iki.fi>
parents: 5857
diff changeset
409 }
933caa747d37 Added mail_uid and mail_gid settings.
Timo Sirainen <tss@iki.fi>
parents: 5857
diff changeset
410
933caa747d37 Added mail_uid and mail_gid settings.
Timo Sirainen <tss@iki.fi>
parents: 5857
diff changeset
411 gr = getgrnam(str);
933caa747d37 Added mail_uid and mail_gid settings.
Timo Sirainen <tss@iki.fi>
parents: 5857
diff changeset
412 if (gr == NULL)
933caa747d37 Added mail_uid and mail_gid settings.
Timo Sirainen <tss@iki.fi>
parents: 5857
diff changeset
413 return FALSE;
933caa747d37 Added mail_uid and mail_gid settings.
Timo Sirainen <tss@iki.fi>
parents: 5857
diff changeset
414
933caa747d37 Added mail_uid and mail_gid settings.
Timo Sirainen <tss@iki.fi>
parents: 5857
diff changeset
415 *gid_r = gr->gr_gid;
933caa747d37 Added mail_uid and mail_gid settings.
Timo Sirainen <tss@iki.fi>
parents: 5857
diff changeset
416 return TRUE;
933caa747d37 Added mail_uid and mail_gid settings.
Timo Sirainen <tss@iki.fi>
parents: 5857
diff changeset
417 }
933caa747d37 Added mail_uid and mail_gid settings.
Timo Sirainen <tss@iki.fi>
parents: 5857
diff changeset
418
3863
55df57c028d4 Added "bool" type and changed all ints that were used as booleans to bool.
Timo Sirainen <tss@iki.fi>
parents: 3854
diff changeset
419 static bool get_login_uid(struct settings *set)
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
420 {
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
421 struct passwd *pw;
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
422
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
423 if ((pw = getpwnam(set->login_user)) == NULL) {
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
424 i_error("Login user doesn't exist: %s", set->login_user);
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
425 return FALSE;
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
426 }
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
427
1724
b3526668de78 Make sure auth process and login process don't share uids.
Timo Sirainen <tss@iki.fi>
parents: 1723
diff changeset
428 if (set->server->login_gid == 0)
b3526668de78 Make sure auth process and login process don't share uids.
Timo Sirainen <tss@iki.fi>
parents: 1723
diff changeset
429 set->server->login_gid = pw->pw_gid;
b3526668de78 Make sure auth process and login process don't share uids.
Timo Sirainen <tss@iki.fi>
parents: 1723
diff changeset
430 else if (set->server->login_gid != pw->pw_gid) {
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
431 i_error("All login process users must belong to same group "
1724
b3526668de78 Make sure auth process and login process don't share uids.
Timo Sirainen <tss@iki.fi>
parents: 1723
diff changeset
432 "(%s vs %s)", dec2str(set->server->login_gid),
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
433 dec2str(pw->pw_gid));
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
434 return FALSE;
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
435 }
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
436
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
437 set->login_uid = pw->pw_uid;
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
438 return TRUE;
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
439 }
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
440
3863
55df57c028d4 Added "bool" type and changed all ints that were used as booleans to bool.
Timo Sirainen <tss@iki.fi>
parents: 3854
diff changeset
441 static bool auth_settings_verify(struct auth_settings *auth)
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
442 {
1724
b3526668de78 Make sure auth process and login process don't share uids.
Timo Sirainen <tss@iki.fi>
parents: 1723
diff changeset
443 struct passwd *pw;
5706
afc4e8a7354a Master and client sockets have default paths now. Section name only needs to
Timo Sirainen <tss@iki.fi>
parents: 5659
diff changeset
444 struct auth_socket_settings *s;
1724
b3526668de78 Make sure auth process and login process don't share uids.
Timo Sirainen <tss@iki.fi>
parents: 1723
diff changeset
445
b3526668de78 Make sure auth process and login process don't share uids.
Timo Sirainen <tss@iki.fi>
parents: 1723
diff changeset
446 if ((pw = getpwnam(auth->user)) == NULL) {
b3526668de78 Make sure auth process and login process don't share uids.
Timo Sirainen <tss@iki.fi>
parents: 1723
diff changeset
447 i_error("Auth user doesn't exist: %s", auth->user);
b3526668de78 Make sure auth process and login process don't share uids.
Timo Sirainen <tss@iki.fi>
parents: 1723
diff changeset
448 return FALSE;
b3526668de78 Make sure auth process and login process don't share uids.
Timo Sirainen <tss@iki.fi>
parents: 1723
diff changeset
449 }
b3526668de78 Make sure auth process and login process don't share uids.
Timo Sirainen <tss@iki.fi>
parents: 1723
diff changeset
450
b3526668de78 Make sure auth process and login process don't share uids.
Timo Sirainen <tss@iki.fi>
parents: 1723
diff changeset
451 if (auth->parent->defaults->login_uid == pw->pw_uid &&
b3526668de78 Make sure auth process and login process don't share uids.
Timo Sirainen <tss@iki.fi>
parents: 1723
diff changeset
452 master_uid != pw->pw_uid) {
b3526668de78 Make sure auth process and login process don't share uids.
Timo Sirainen <tss@iki.fi>
parents: 1723
diff changeset
453 i_error("login_user %s (uid %s) must not be same as auth_user",
b3526668de78 Make sure auth process and login process don't share uids.
Timo Sirainen <tss@iki.fi>
parents: 1723
diff changeset
454 auth->user, dec2str(pw->pw_uid));
b3526668de78 Make sure auth process and login process don't share uids.
Timo Sirainen <tss@iki.fi>
parents: 1723
diff changeset
455 return FALSE;
b3526668de78 Make sure auth process and login process don't share uids.
Timo Sirainen <tss@iki.fi>
parents: 1723
diff changeset
456 }
b3526668de78 Make sure auth process and login process don't share uids.
Timo Sirainen <tss@iki.fi>
parents: 1723
diff changeset
457 auth->uid = pw->pw_uid;
b3526668de78 Make sure auth process and login process don't share uids.
Timo Sirainen <tss@iki.fi>
parents: 1723
diff changeset
458 auth->gid = pw->pw_gid;
b3526668de78 Make sure auth process and login process don't share uids.
Timo Sirainen <tss@iki.fi>
parents: 1723
diff changeset
459
2886
634cf6aa34d1 Allow running all executables with parameters.
Timo Sirainen <tss@iki.fi>
parents: 2805
diff changeset
460 if (access(t_strcut(auth->executable, ' '), X_OK) < 0) {
8692
77c67307d316 If some setting contains a bad value, make sure the error message contains the setting name.
Timo Sirainen <tss@iki.fi>
parents: 8667
diff changeset
461 i_error("auth_executable: Can't use %s: %m",
2886
634cf6aa34d1 Allow running all executables with parameters.
Timo Sirainen <tss@iki.fi>
parents: 2805
diff changeset
462 t_strcut(auth->executable, ' '));
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
463 return FALSE;
1097
d42e2864dc3d Don't complain about missing *-login binaries if they're not enabled.
Timo Sirainen <tss@iki.fi>
parents: 1074
diff changeset
464 }
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
465
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
466 fix_base_path(auth->parent->defaults, &auth->chroot);
4388
af61031c746f Settings parser nowadays returns "" instead of NULL when it reads an empty
Timo Sirainen <tss@iki.fi>
parents: 4326
diff changeset
467 if (*auth->chroot != '\0' && access(auth->chroot, X_OK) < 0) {
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
468 i_error("Can't access auth chroot directory %s: %m",
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
469 auth->chroot);
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
470 return FALSE;
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
471 }
2027
dc5d0da1abe9 Added ssl_require_client_cert auth-specific setting. Hide
Timo Sirainen <tss@iki.fi>
parents: 2000
diff changeset
472
3635
c12df370e1b2 Added ssl_username_from_cert setting. Not actually tested yet..
Timo Sirainen <tss@iki.fi>
parents: 3609
diff changeset
473 if (auth->ssl_require_client_cert || auth->ssl_username_from_cert) {
2027
dc5d0da1abe9 Added ssl_require_client_cert auth-specific setting. Hide
Timo Sirainen <tss@iki.fi>
parents: 2000
diff changeset
474 /* if we require valid cert, make sure we also ask for it */
dc5d0da1abe9 Added ssl_require_client_cert auth-specific setting. Hide
Timo Sirainen <tss@iki.fi>
parents: 2000
diff changeset
475 if (auth->parent->pop3 != NULL)
dc5d0da1abe9 Added ssl_require_client_cert auth-specific setting. Hide
Timo Sirainen <tss@iki.fi>
parents: 2000
diff changeset
476 auth->parent->pop3->ssl_verify_client_cert = TRUE;
dc5d0da1abe9 Added ssl_require_client_cert auth-specific setting. Hide
Timo Sirainen <tss@iki.fi>
parents: 2000
diff changeset
477 if (auth->parent->imap != NULL)
dc5d0da1abe9 Added ssl_require_client_cert auth-specific setting. Hide
Timo Sirainen <tss@iki.fi>
parents: 2000
diff changeset
478 auth->parent->imap->ssl_verify_client_cert = TRUE;
dc5d0da1abe9 Added ssl_require_client_cert auth-specific setting. Hide
Timo Sirainen <tss@iki.fi>
parents: 2000
diff changeset
479 }
dc5d0da1abe9 Added ssl_require_client_cert auth-specific setting. Hide
Timo Sirainen <tss@iki.fi>
parents: 2000
diff changeset
480
5706
afc4e8a7354a Master and client sockets have default paths now. Section name only needs to
Timo Sirainen <tss@iki.fi>
parents: 5659
diff changeset
481 for (s = auth->sockets; s != NULL; s = s->next) {
8403
88b15ab4b1d0 If auth process count > 0 and auth sockets are defined, give an understandable error message.
Timo Sirainen <tss@iki.fi>
parents: 8364
diff changeset
482 if (auth->count > 1 && strcmp(s->type, "listen") == 0) {
88b15ab4b1d0 If auth process count > 0 and auth sockets are defined, give an understandable error message.
Timo Sirainen <tss@iki.fi>
parents: 8364
diff changeset
483 i_error("Currently auth process count must be 1 if "
88b15ab4b1d0 If auth process count > 0 and auth sockets are defined, give an understandable error message.
Timo Sirainen <tss@iki.fi>
parents: 8364
diff changeset
484 "you're using auth socket listeners.");
88b15ab4b1d0 If auth process count > 0 and auth sockets are defined, give an understandable error message.
Timo Sirainen <tss@iki.fi>
parents: 8364
diff changeset
485 return FALSE;
88b15ab4b1d0 If auth process count > 0 and auth sockets are defined, give an understandable error message.
Timo Sirainen <tss@iki.fi>
parents: 8364
diff changeset
486 }
5706
afc4e8a7354a Master and client sockets have default paths now. Section name only needs to
Timo Sirainen <tss@iki.fi>
parents: 5659
diff changeset
487 fix_base_path(auth->parent->defaults, &s->master.path);
afc4e8a7354a Master and client sockets have default paths now. Section name only needs to
Timo Sirainen <tss@iki.fi>
parents: 5659
diff changeset
488 fix_base_path(auth->parent->defaults, &s->client.path);
afc4e8a7354a Master and client sockets have default paths now. Section name only needs to
Timo Sirainen <tss@iki.fi>
parents: 5659
diff changeset
489 }
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
490 return TRUE;
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
491 }
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
492
8500
3efcdc45d111 Added alias_for setting for namespaces. Fixes namespace issues with fts.
Timo Sirainen <tss@iki.fi>
parents: 8461
diff changeset
493 static bool namespace_settings_verify(struct server_settings *server,
3efcdc45d111 Added alias_for setting for namespaces. Fixes namespace issues with fts.
Timo Sirainen <tss@iki.fi>
parents: 8461
diff changeset
494 struct namespace_settings *ns)
1656
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
495 {
8500
3efcdc45d111 Added alias_for setting for namespaces. Fixes namespace issues with fts.
Timo Sirainen <tss@iki.fi>
parents: 8461
diff changeset
496 struct namespace_settings *n;
1656
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
497 const char *name;
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
498
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
499 name = ns->prefix != NULL ? ns->prefix : "";
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
500
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
501 if (ns->separator != NULL &&
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
502 ns->separator[0] != '\0' && ns->separator[1] != '\0') {
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
503 i_error("Namespace '%s': "
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
504 "Hierarchy separator must be only one character long",
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
505 name);
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
506 return FALSE;
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
507 }
8461
659667d89f69 Added list=children option for namespaces.
Timo Sirainen <tss@iki.fi>
parents: 8403
diff changeset
508 if (strcmp(ns->list, "yes") != 0 &&
659667d89f69 Added list=children option for namespaces.
Timo Sirainen <tss@iki.fi>
parents: 8403
diff changeset
509 strcmp(ns->list, "no") != 0 &&
659667d89f69 Added list=children option for namespaces.
Timo Sirainen <tss@iki.fi>
parents: 8403
diff changeset
510 strcmp(ns->list, "children") != 0) {
659667d89f69 Added list=children option for namespaces.
Timo Sirainen <tss@iki.fi>
parents: 8403
diff changeset
511 i_error("Namespace '%s': Invalid list value: %s",
659667d89f69 Added list=children option for namespaces.
Timo Sirainen <tss@iki.fi>
parents: 8403
diff changeset
512 name, ns->list);
659667d89f69 Added list=children option for namespaces.
Timo Sirainen <tss@iki.fi>
parents: 8403
diff changeset
513 return FALSE;
659667d89f69 Added list=children option for namespaces.
Timo Sirainen <tss@iki.fi>
parents: 8403
diff changeset
514 }
1656
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
515
8500
3efcdc45d111 Added alias_for setting for namespaces. Fixes namespace issues with fts.
Timo Sirainen <tss@iki.fi>
parents: 8461
diff changeset
516 if (ns->alias_for != NULL) {
3efcdc45d111 Added alias_for setting for namespaces. Fixes namespace issues with fts.
Timo Sirainen <tss@iki.fi>
parents: 8461
diff changeset
517 for (n = server->namespaces; n != ns; n = n->next) {
3efcdc45d111 Added alias_for setting for namespaces. Fixes namespace issues with fts.
Timo Sirainen <tss@iki.fi>
parents: 8461
diff changeset
518 if (strcmp(n->prefix, ns->alias_for) == 0)
3efcdc45d111 Added alias_for setting for namespaces. Fixes namespace issues with fts.
Timo Sirainen <tss@iki.fi>
parents: 8461
diff changeset
519 break;
3efcdc45d111 Added alias_for setting for namespaces. Fixes namespace issues with fts.
Timo Sirainen <tss@iki.fi>
parents: 8461
diff changeset
520 }
8511
bd145a5c5482 Fixed "alias_for points to unknown namespace" error handling.
Timo Sirainen <tss@iki.fi>
parents: 8500
diff changeset
521 if (n == ns) {
8500
3efcdc45d111 Added alias_for setting for namespaces. Fixes namespace issues with fts.
Timo Sirainen <tss@iki.fi>
parents: 8461
diff changeset
522 i_error("Namespace '%s': alias_for points to "
3efcdc45d111 Added alias_for setting for namespaces. Fixes namespace issues with fts.
Timo Sirainen <tss@iki.fi>
parents: 8461
diff changeset
523 "unknown namespace: %s", name, ns->alias_for);
3efcdc45d111 Added alias_for setting for namespaces. Fixes namespace issues with fts.
Timo Sirainen <tss@iki.fi>
parents: 8461
diff changeset
524 return FALSE;
3efcdc45d111 Added alias_for setting for namespaces. Fixes namespace issues with fts.
Timo Sirainen <tss@iki.fi>
parents: 8461
diff changeset
525 }
3efcdc45d111 Added alias_for setting for namespaces. Fixes namespace issues with fts.
Timo Sirainen <tss@iki.fi>
parents: 8461
diff changeset
526 if (n->alias_for != NULL) {
3efcdc45d111 Added alias_for setting for namespaces. Fixes namespace issues with fts.
Timo Sirainen <tss@iki.fi>
parents: 8461
diff changeset
527 i_error("Namespace '%s': alias_for chaining isn't "
3efcdc45d111 Added alias_for setting for namespaces. Fixes namespace issues with fts.
Timo Sirainen <tss@iki.fi>
parents: 8461
diff changeset
528 "allowed: %s -> %s", name, ns->alias_for,
3efcdc45d111 Added alias_for setting for namespaces. Fixes namespace issues with fts.
Timo Sirainen <tss@iki.fi>
parents: 8461
diff changeset
529 n->alias_for);
3efcdc45d111 Added alias_for setting for namespaces. Fixes namespace issues with fts.
Timo Sirainen <tss@iki.fi>
parents: 8461
diff changeset
530 return FALSE;
3efcdc45d111 Added alias_for setting for namespaces. Fixes namespace issues with fts.
Timo Sirainen <tss@iki.fi>
parents: 8461
diff changeset
531 }
3efcdc45d111 Added alias_for setting for namespaces. Fixes namespace issues with fts.
Timo Sirainen <tss@iki.fi>
parents: 8461
diff changeset
532 }
3efcdc45d111 Added alias_for setting for namespaces. Fixes namespace issues with fts.
Timo Sirainen <tss@iki.fi>
parents: 8461
diff changeset
533
1656
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
534 return TRUE;
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
535 }
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
536
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
537 static const char *get_directory(const char *path)
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
538 {
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
539 char *str, *p;
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
540
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
541 str = t_strdup_noconst(path);
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
542 p = strrchr(str, '/');
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
543 if (p == NULL)
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
544 return ".";
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
545 else {
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
546 *p = '\0';
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
547 return str;
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
548 }
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
549 }
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
550
3863
55df57c028d4 Added "bool" type and changed all ints that were used as booleans to bool.
Timo Sirainen <tss@iki.fi>
parents: 3854
diff changeset
551 static bool settings_is_active(struct settings *set)
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
552 {
4556
b008e75f650a Allow empty protocols line when using --exec-mail.
Timo Sirainen <tss@iki.fi>
parents: 4554
diff changeset
553 if (*set->protocols == '\0') {
b008e75f650a Allow empty protocols line when using --exec-mail.
Timo Sirainen <tss@iki.fi>
parents: 4554
diff changeset
554 /* we're probably using this with --exec-mail */
b008e75f650a Allow empty protocols line when using --exec-mail.
Timo Sirainen <tss@iki.fi>
parents: 4554
diff changeset
555 return TRUE;
b008e75f650a Allow empty protocols line when using --exec-mail.
Timo Sirainen <tss@iki.fi>
parents: 4554
diff changeset
556 }
b008e75f650a Allow empty protocols line when using --exec-mail.
Timo Sirainen <tss@iki.fi>
parents: 4554
diff changeset
557
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
558 if (set->protocol == MAIL_PROTOCOL_IMAP) {
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
559 if (strstr(set->protocols, "imap") == NULL)
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
560 return FALSE;
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
561 } else {
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
562 if (strstr(set->protocols, "pop3") == NULL)
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
563 return FALSE;
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
564 }
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
565
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
566 return TRUE;
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
567 }
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
568
3863
55df57c028d4 Added "bool" type and changed all ints that were used as booleans to bool.
Timo Sirainen <tss@iki.fi>
parents: 3854
diff changeset
569 static bool settings_have_connect_sockets(struct settings *set)
2236
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
570 {
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
571 struct auth_settings *auth;
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
572 struct server_settings *server;
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
573
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
574 for (server = set->server; server != NULL; server = server->next) {
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
575 for (auth = server->auths; auth != NULL; auth = auth->next) {
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
576 if (auth->sockets != NULL &&
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
577 strcmp(auth->sockets->type, "connect") == 0)
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
578 return TRUE;
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
579 }
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
580 }
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
581
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
582 return FALSE;
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
583 }
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
584
8584
0eac46c235e7 Log a warning at startup if there doesn't seem to be any way to log in from non-localhost.
Timo Sirainen <tss@iki.fi>
parents: 8560
diff changeset
585 static bool settings_have_nonplaintext_auths(struct settings *set)
0eac46c235e7 Log a warning at startup if there doesn't seem to be any way to log in from non-localhost.
Timo Sirainen <tss@iki.fi>
parents: 8560
diff changeset
586 {
0eac46c235e7 Log a warning at startup if there doesn't seem to be any way to log in from non-localhost.
Timo Sirainen <tss@iki.fi>
parents: 8560
diff changeset
587 struct auth_settings *auth;
0eac46c235e7 Log a warning at startup if there doesn't seem to be any way to log in from non-localhost.
Timo Sirainen <tss@iki.fi>
parents: 8560
diff changeset
588 struct server_settings *server;
0eac46c235e7 Log a warning at startup if there doesn't seem to be any way to log in from non-localhost.
Timo Sirainen <tss@iki.fi>
parents: 8560
diff changeset
589 const char *const *tmp;
0eac46c235e7 Log a warning at startup if there doesn't seem to be any way to log in from non-localhost.
Timo Sirainen <tss@iki.fi>
parents: 8560
diff changeset
590
0eac46c235e7 Log a warning at startup if there doesn't seem to be any way to log in from non-localhost.
Timo Sirainen <tss@iki.fi>
parents: 8560
diff changeset
591 for (server = set->server; server != NULL; server = server->next) {
0eac46c235e7 Log a warning at startup if there doesn't seem to be any way to log in from non-localhost.
Timo Sirainen <tss@iki.fi>
parents: 8560
diff changeset
592 for (auth = server->auths; auth != NULL; auth = auth->next) {
0eac46c235e7 Log a warning at startup if there doesn't seem to be any way to log in from non-localhost.
Timo Sirainen <tss@iki.fi>
parents: 8560
diff changeset
593 tmp = t_strsplit_spaces(auth->mechanisms, " ");
0eac46c235e7 Log a warning at startup if there doesn't seem to be any way to log in from non-localhost.
Timo Sirainen <tss@iki.fi>
parents: 8560
diff changeset
594 for (; *tmp != NULL; tmp++) {
0eac46c235e7 Log a warning at startup if there doesn't seem to be any way to log in from non-localhost.
Timo Sirainen <tss@iki.fi>
parents: 8560
diff changeset
595 if (strcasecmp(*tmp, "PLAIN") != 0 &&
0eac46c235e7 Log a warning at startup if there doesn't seem to be any way to log in from non-localhost.
Timo Sirainen <tss@iki.fi>
parents: 8560
diff changeset
596 strcasecmp(*tmp, "LOGIN") != 0)
0eac46c235e7 Log a warning at startup if there doesn't seem to be any way to log in from non-localhost.
Timo Sirainen <tss@iki.fi>
parents: 8560
diff changeset
597 return TRUE;
0eac46c235e7 Log a warning at startup if there doesn't seem to be any way to log in from non-localhost.
Timo Sirainen <tss@iki.fi>
parents: 8560
diff changeset
598 }
0eac46c235e7 Log a warning at startup if there doesn't seem to be any way to log in from non-localhost.
Timo Sirainen <tss@iki.fi>
parents: 8560
diff changeset
599 }
0eac46c235e7 Log a warning at startup if there doesn't seem to be any way to log in from non-localhost.
Timo Sirainen <tss@iki.fi>
parents: 8560
diff changeset
600 }
0eac46c235e7 Log a warning at startup if there doesn't seem to be any way to log in from non-localhost.
Timo Sirainen <tss@iki.fi>
parents: 8560
diff changeset
601
0eac46c235e7 Log a warning at startup if there doesn't seem to be any way to log in from non-localhost.
Timo Sirainen <tss@iki.fi>
parents: 8560
diff changeset
602 return FALSE;
0eac46c235e7 Log a warning at startup if there doesn't seem to be any way to log in from non-localhost.
Timo Sirainen <tss@iki.fi>
parents: 8560
diff changeset
603 }
0eac46c235e7 Log a warning at startup if there doesn't seem to be any way to log in from non-localhost.
Timo Sirainen <tss@iki.fi>
parents: 8560
diff changeset
604
4998
f37c7895eb8f Delete all auth-worker.* files from Dovecot's base_dir when starting.
Timo Sirainen <tss@iki.fi>
parents: 4968
diff changeset
605 static void unlink_auth_sockets(const char *path, const char *prefix)
3901
0ae5f5b468b7 Put ssl-parameters file into login directory so it still can be accessed
Timo Sirainen <tss@iki.fi>
parents: 3900
diff changeset
606 {
0ae5f5b468b7 Put ssl-parameters file into login directory so it still can be accessed
Timo Sirainen <tss@iki.fi>
parents: 3900
diff changeset
607 DIR *dirp;
0ae5f5b468b7 Put ssl-parameters file into login directory so it still can be accessed
Timo Sirainen <tss@iki.fi>
parents: 3900
diff changeset
608 struct dirent *dp;
0ae5f5b468b7 Put ssl-parameters file into login directory so it still can be accessed
Timo Sirainen <tss@iki.fi>
parents: 3900
diff changeset
609 struct stat st;
0ae5f5b468b7 Put ssl-parameters file into login directory so it still can be accessed
Timo Sirainen <tss@iki.fi>
parents: 3900
diff changeset
610 string_t *str;
4998
f37c7895eb8f Delete all auth-worker.* files from Dovecot's base_dir when starting.
Timo Sirainen <tss@iki.fi>
parents: 4968
diff changeset
611 unsigned int prefix_len;
3901
0ae5f5b468b7 Put ssl-parameters file into login directory so it still can be accessed
Timo Sirainen <tss@iki.fi>
parents: 3900
diff changeset
612
0ae5f5b468b7 Put ssl-parameters file into login directory so it still can be accessed
Timo Sirainen <tss@iki.fi>
parents: 3900
diff changeset
613 dirp = opendir(path);
0ae5f5b468b7 Put ssl-parameters file into login directory so it still can be accessed
Timo Sirainen <tss@iki.fi>
parents: 3900
diff changeset
614 if (dirp == NULL) {
0ae5f5b468b7 Put ssl-parameters file into login directory so it still can be accessed
Timo Sirainen <tss@iki.fi>
parents: 3900
diff changeset
615 i_error("opendir(%s) failed: %m", path);
0ae5f5b468b7 Put ssl-parameters file into login directory so it still can be accessed
Timo Sirainen <tss@iki.fi>
parents: 3900
diff changeset
616 return;
0ae5f5b468b7 Put ssl-parameters file into login directory so it still can be accessed
Timo Sirainen <tss@iki.fi>
parents: 3900
diff changeset
617 }
0ae5f5b468b7 Put ssl-parameters file into login directory so it still can be accessed
Timo Sirainen <tss@iki.fi>
parents: 3900
diff changeset
618
4998
f37c7895eb8f Delete all auth-worker.* files from Dovecot's base_dir when starting.
Timo Sirainen <tss@iki.fi>
parents: 4968
diff changeset
619 prefix_len = strlen(prefix);
3901
0ae5f5b468b7 Put ssl-parameters file into login directory so it still can be accessed
Timo Sirainen <tss@iki.fi>
parents: 3900
diff changeset
620 str = t_str_new(256);
0ae5f5b468b7 Put ssl-parameters file into login directory so it still can be accessed
Timo Sirainen <tss@iki.fi>
parents: 3900
diff changeset
621 while ((dp = readdir(dirp)) != NULL) {
0ae5f5b468b7 Put ssl-parameters file into login directory so it still can be accessed
Timo Sirainen <tss@iki.fi>
parents: 3900
diff changeset
622 if (dp->d_name[0] == '.')
0ae5f5b468b7 Put ssl-parameters file into login directory so it still can be accessed
Timo Sirainen <tss@iki.fi>
parents: 3900
diff changeset
623 continue;
0ae5f5b468b7 Put ssl-parameters file into login directory so it still can be accessed
Timo Sirainen <tss@iki.fi>
parents: 3900
diff changeset
624
4998
f37c7895eb8f Delete all auth-worker.* files from Dovecot's base_dir when starting.
Timo Sirainen <tss@iki.fi>
parents: 4968
diff changeset
625 if (strncmp(dp->d_name, prefix, prefix_len) != 0)
f37c7895eb8f Delete all auth-worker.* files from Dovecot's base_dir when starting.
Timo Sirainen <tss@iki.fi>
parents: 4968
diff changeset
626 continue;
f37c7895eb8f Delete all auth-worker.* files from Dovecot's base_dir when starting.
Timo Sirainen <tss@iki.fi>
parents: 4968
diff changeset
627
3901
0ae5f5b468b7 Put ssl-parameters file into login directory so it still can be accessed
Timo Sirainen <tss@iki.fi>
parents: 3900
diff changeset
628 str_truncate(str, 0);
0ae5f5b468b7 Put ssl-parameters file into login directory so it still can be accessed
Timo Sirainen <tss@iki.fi>
parents: 3900
diff changeset
629 str_printfa(str, "%s/%s", path, dp->d_name);
0ae5f5b468b7 Put ssl-parameters file into login directory so it still can be accessed
Timo Sirainen <tss@iki.fi>
parents: 3900
diff changeset
630 if (lstat(str_c(str), &st) < 0) {
0ae5f5b468b7 Put ssl-parameters file into login directory so it still can be accessed
Timo Sirainen <tss@iki.fi>
parents: 3900
diff changeset
631 if (errno != ENOENT)
0ae5f5b468b7 Put ssl-parameters file into login directory so it still can be accessed
Timo Sirainen <tss@iki.fi>
parents: 3900
diff changeset
632 i_error("lstat(%s) failed: %m", str_c(str));
5432
2b4fa90860dd Before unlinking auth sockets at startup, try connecting to them first to
Timo Sirainen <tss@iki.fi>
parents: 5172
diff changeset
633 continue;
3901
0ae5f5b468b7 Put ssl-parameters file into login directory so it still can be accessed
Timo Sirainen <tss@iki.fi>
parents: 3900
diff changeset
634 }
5432
2b4fa90860dd Before unlinking auth sockets at startup, try connecting to them first to
Timo Sirainen <tss@iki.fi>
parents: 5172
diff changeset
635 if (!S_ISSOCK(st.st_mode))
2b4fa90860dd Before unlinking auth sockets at startup, try connecting to them first to
Timo Sirainen <tss@iki.fi>
parents: 5172
diff changeset
636 continue;
2b4fa90860dd Before unlinking auth sockets at startup, try connecting to them first to
Timo Sirainen <tss@iki.fi>
parents: 5172
diff changeset
637
2b4fa90860dd Before unlinking auth sockets at startup, try connecting to them first to
Timo Sirainen <tss@iki.fi>
parents: 5172
diff changeset
638 /* try to avoid unlinking sockets if someone's already
2b4fa90860dd Before unlinking auth sockets at startup, try connecting to them first to
Timo Sirainen <tss@iki.fi>
parents: 5172
diff changeset
639 listening in them. do this only at startup, because
2b4fa90860dd Before unlinking auth sockets at startup, try connecting to them first to
Timo Sirainen <tss@iki.fi>
parents: 5172
diff changeset
640 when SIGHUPing a child process might catch the new
2b4fa90860dd Before unlinking auth sockets at startup, try connecting to them first to
Timo Sirainen <tss@iki.fi>
parents: 5172
diff changeset
641 connection before it notices that it's supposed
2b4fa90860dd Before unlinking auth sockets at startup, try connecting to them first to
Timo Sirainen <tss@iki.fi>
parents: 5172
diff changeset
642 to die. null_fd == -1 check is a bit kludgy, but works.. */
2b4fa90860dd Before unlinking auth sockets at startup, try connecting to them first to
Timo Sirainen <tss@iki.fi>
parents: 5172
diff changeset
643 if (null_fd == -1) {
2b4fa90860dd Before unlinking auth sockets at startup, try connecting to them first to
Timo Sirainen <tss@iki.fi>
parents: 5172
diff changeset
644 int fd = net_connect_unix(str_c(str));
2b4fa90860dd Before unlinking auth sockets at startup, try connecting to them first to
Timo Sirainen <tss@iki.fi>
parents: 5172
diff changeset
645 if (fd != -1 || errno != ECONNREFUSED) {
2b4fa90860dd Before unlinking auth sockets at startup, try connecting to them first to
Timo Sirainen <tss@iki.fi>
parents: 5172
diff changeset
646 i_fatal("Dovecot is already running? "
2b4fa90860dd Before unlinking auth sockets at startup, try connecting to them first to
Timo Sirainen <tss@iki.fi>
parents: 5172
diff changeset
647 "Socket already exists: %s",
2b4fa90860dd Before unlinking auth sockets at startup, try connecting to them first to
Timo Sirainen <tss@iki.fi>
parents: 5172
diff changeset
648 str_c(str));
2b4fa90860dd Before unlinking auth sockets at startup, try connecting to them first to
Timo Sirainen <tss@iki.fi>
parents: 5172
diff changeset
649 }
2b4fa90860dd Before unlinking auth sockets at startup, try connecting to them first to
Timo Sirainen <tss@iki.fi>
parents: 5172
diff changeset
650 }
2b4fa90860dd Before unlinking auth sockets at startup, try connecting to them first to
Timo Sirainen <tss@iki.fi>
parents: 5172
diff changeset
651
2b4fa90860dd Before unlinking auth sockets at startup, try connecting to them first to
Timo Sirainen <tss@iki.fi>
parents: 5172
diff changeset
652 if (unlink(str_c(str)) < 0 && errno != ENOENT)
2b4fa90860dd Before unlinking auth sockets at startup, try connecting to them first to
Timo Sirainen <tss@iki.fi>
parents: 5172
diff changeset
653 i_error("unlink(%s) failed: %m", str_c(str));
3901
0ae5f5b468b7 Put ssl-parameters file into login directory so it still can be accessed
Timo Sirainen <tss@iki.fi>
parents: 3900
diff changeset
654 }
0ae5f5b468b7 Put ssl-parameters file into login directory so it still can be accessed
Timo Sirainen <tss@iki.fi>
parents: 3900
diff changeset
655 (void)closedir(dirp);
0ae5f5b468b7 Put ssl-parameters file into login directory so it still can be accessed
Timo Sirainen <tss@iki.fi>
parents: 3900
diff changeset
656 }
0ae5f5b468b7 Put ssl-parameters file into login directory so it still can be accessed
Timo Sirainen <tss@iki.fi>
parents: 3900
diff changeset
657
4197
c3ded5b815aa If we have plugins set and imap_capability unset, figure out the IMAP
Timo Sirainen <tss@iki.fi>
parents: 4190
diff changeset
658 #ifdef HAVE_MODULES
8585
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
659 static const char *
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
660 get_process_capability(enum process_type ptype, struct settings *set)
4197
c3ded5b815aa If we have plugins set and imap_capability unset, figure out the IMAP
Timo Sirainen <tss@iki.fi>
parents: 4190
diff changeset
661 {
c3ded5b815aa If we have plugins set and imap_capability unset, figure out the IMAP
Timo Sirainen <tss@iki.fi>
parents: 4190
diff changeset
662 /* FIXME: pretty ugly code just for getting the capability
c3ded5b815aa If we have plugins set and imap_capability unset, figure out the IMAP
Timo Sirainen <tss@iki.fi>
parents: 4190
diff changeset
663 automatically */
c3ded5b815aa If we have plugins set and imap_capability unset, figure out the IMAP
Timo Sirainen <tss@iki.fi>
parents: 4190
diff changeset
664 static const char *args[] = {
c3ded5b815aa If we have plugins set and imap_capability unset, figure out the IMAP
Timo Sirainen <tss@iki.fi>
parents: 4190
diff changeset
665 "uid=65534",
c3ded5b815aa If we have plugins set and imap_capability unset, figure out the IMAP
Timo Sirainen <tss@iki.fi>
parents: 4190
diff changeset
666 "gid=65534",
8364
58afb62be4e0 dump-capability: Previous change was done badly, retry.
Timo Sirainen <tss@iki.fi>
parents: 8363
diff changeset
667 "home=/tmp",
4197
c3ded5b815aa If we have plugins set and imap_capability unset, figure out the IMAP
Timo Sirainen <tss@iki.fi>
parents: 4190
diff changeset
668 NULL
c3ded5b815aa If we have plugins set and imap_capability unset, figure out the IMAP
Timo Sirainen <tss@iki.fi>
parents: 4190
diff changeset
669 };
8585
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
670 const char *pname = process_names[ptype];
5846
21e529b8a701 Initial implementation for mail_max_user_connections setting.
Timo Sirainen <tss@iki.fi>
parents: 5800
diff changeset
671 enum master_login_status login_status;
7928
9e226056a208 Send login command OK reply in IMAP/POP3 process.
Timo Sirainen <tss@iki.fi>
parents: 7927
diff changeset
672 struct mail_login_request request;
4197
c3ded5b815aa If we have plugins set and imap_capability unset, figure out the IMAP
Timo Sirainen <tss@iki.fi>
parents: 4190
diff changeset
673 char buf[4096];
c3ded5b815aa If we have plugins set and imap_capability unset, figure out the IMAP
Timo Sirainen <tss@iki.fi>
parents: 4190
diff changeset
674 int fd[2], status;
c3ded5b815aa If we have plugins set and imap_capability unset, figure out the IMAP
Timo Sirainen <tss@iki.fi>
parents: 4190
diff changeset
675 ssize_t ret;
c3ded5b815aa If we have plugins set and imap_capability unset, figure out the IMAP
Timo Sirainen <tss@iki.fi>
parents: 4190
diff changeset
676 unsigned int pos;
4224
8736c4deb253 dump-capability wasn't working if dovecot wasn't run as root.
Timo Sirainen <timo.sirainen@movial.fi>
parents: 4197
diff changeset
677 uid_t uid;
8092
29b623366e1e Pass the created mail process PID back to login process so it can log it.
Timo Sirainen <tss@iki.fi>
parents: 7941
diff changeset
678 pid_t pid;
4197
c3ded5b815aa If we have plugins set and imap_capability unset, figure out the IMAP
Timo Sirainen <tss@iki.fi>
parents: 4190
diff changeset
679
8585
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
680 uid = geteuid();
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
681 if (uid != 0) {
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
682 /* use the current user */
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
683 args[0] = t_strdup_printf("uid=%s", dec2str(uid));
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
684 args[1] = t_strdup_printf("gid=%s", dec2str(getegid()));
9173
2db158dd88be dump-capability: Use nobody/nogroup as uid/gid if they exist.
Timo Sirainen <tss@iki.fi>
parents: 9026
diff changeset
685 } else {
2db158dd88be dump-capability: Use nobody/nogroup as uid/gid if they exist.
Timo Sirainen <tss@iki.fi>
parents: 9026
diff changeset
686 /* try to use some existing user. at least osx launchd
2db158dd88be dump-capability: Use nobody/nogroup as uid/gid if they exist.
Timo Sirainen <tss@iki.fi>
parents: 9026
diff changeset
687 doesn't like non-existing users. */
2db158dd88be dump-capability: Use nobody/nogroup as uid/gid if they exist.
Timo Sirainen <tss@iki.fi>
parents: 9026
diff changeset
688 struct passwd *pw;
2db158dd88be dump-capability: Use nobody/nogroup as uid/gid if they exist.
Timo Sirainen <tss@iki.fi>
parents: 9026
diff changeset
689
2db158dd88be dump-capability: Use nobody/nogroup as uid/gid if they exist.
Timo Sirainen <tss@iki.fi>
parents: 9026
diff changeset
690 pw = getpwnam("nobody");
9182
62b9661b4c7a dump-capability: Use nobody's group as process gid.
Timo Sirainen <tss@iki.fi>
parents: 9173
diff changeset
691 if (pw != NULL && pw->pw_uid != (uid_t)-1 &&
62b9661b4c7a dump-capability: Use nobody's group as process gid.
Timo Sirainen <tss@iki.fi>
parents: 9173
diff changeset
692 pw->pw_gid != (gid_t)-1) {
9173
2db158dd88be dump-capability: Use nobody/nogroup as uid/gid if they exist.
Timo Sirainen <tss@iki.fi>
parents: 9026
diff changeset
693 args[0] = t_strdup_printf("uid=%s", dec2str(pw->pw_uid));
9182
62b9661b4c7a dump-capability: Use nobody's group as process gid.
Timo Sirainen <tss@iki.fi>
parents: 9173
diff changeset
694 args[1] = t_strdup_printf("gid=%s", dec2str(pw->pw_gid));
62b9661b4c7a dump-capability: Use nobody's group as process gid.
Timo Sirainen <tss@iki.fi>
parents: 9173
diff changeset
695 }
8585
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
696 }
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
697
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
698 if (pipe(fd) < 0) {
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
699 i_error("pipe() failed: %m");
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
700 return NULL;
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
701 }
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
702 fd_close_on_exec(fd[0], TRUE);
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
703 fd_close_on_exec(fd[1], TRUE);
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
704
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
705 memset(&request, 0, sizeof(request));
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
706 request.fd = fd[1];
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
707 login_status = create_mail_process(ptype, set, &request,
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
708 "dump-capability", args, NULL, TRUE,
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
709 &pid);
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
710 if (login_status != MASTER_LOGIN_STATUS_OK) {
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
711 (void)close(fd[0]);
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
712 (void)close(fd[1]);
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
713 return NULL;
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
714 }
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
715 (void)close(fd[1]);
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
716
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
717 alarm(5);
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
718 if (wait(&status) == -1) {
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
719 i_fatal("%s dump-capability process %d got stuck",
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
720 pname, (int)pid);
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
721 }
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
722 alarm(0);
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
723
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
724 if (status != 0) {
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
725 (void)close(fd[0]);
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
726 if (WIFSIGNALED(status)) {
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
727 i_error("%s dump-capability process "
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
728 "killed with signal %d",
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
729 pname, WTERMSIG(status));
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
730 } else {
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
731 i_error("%s dump-capability process returned %d",
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
732 pname, WIFEXITED(status) ? WEXITSTATUS(status) :
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
733 status);
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
734 }
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
735 return NULL;
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
736 }
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
737
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
738 pos = 0;
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
739 while ((ret = read(fd[0], buf + pos, sizeof(buf) - pos)) > 0)
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
740 pos += ret;
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
741
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
742 if (ret < 0) {
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
743 i_error("read(%s dump-capability process) failed: %m", pname);
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
744 (void)close(fd[0]);
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
745 return NULL;
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
746 }
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
747 (void)close(fd[0]);
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
748
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
749 if (pos == 0 || buf[pos-1] != '\n') {
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
750 i_error("%s dump-capability: Couldn't read capability "
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
751 "(got %u bytes)", pname, pos);
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
752 return NULL;
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
753 }
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
754 buf[pos-1] = '\0';
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
755
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
756 return i_strdup(buf);
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
757 }
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
758
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
759 static bool get_imap_capability(struct settings *set)
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
760 {
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
761 static const char *generated_capability = NULL;
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
762
4197
c3ded5b815aa If we have plugins set and imap_capability unset, figure out the IMAP
Timo Sirainen <tss@iki.fi>
parents: 4190
diff changeset
763 if (generated_capability != NULL) {
c3ded5b815aa If we have plugins set and imap_capability unset, figure out the IMAP
Timo Sirainen <tss@iki.fi>
parents: 4190
diff changeset
764 /* Reloading configuration. Don't try to execute the imap
c3ded5b815aa If we have plugins set and imap_capability unset, figure out the IMAP
Timo Sirainen <tss@iki.fi>
parents: 4190
diff changeset
765 process again. Too risky and the wait() call below will
c3ded5b815aa If we have plugins set and imap_capability unset, figure out the IMAP
Timo Sirainen <tss@iki.fi>
parents: 4190
diff changeset
766 break it anyway. Just use the previous capability list we
c3ded5b815aa If we have plugins set and imap_capability unset, figure out the IMAP
Timo Sirainen <tss@iki.fi>
parents: 4190
diff changeset
767 already had generated. */
c3ded5b815aa If we have plugins set and imap_capability unset, figure out the IMAP
Timo Sirainen <tss@iki.fi>
parents: 4190
diff changeset
768 set->imap_generated_capability =
c3ded5b815aa If we have plugins set and imap_capability unset, figure out the IMAP
Timo Sirainen <tss@iki.fi>
parents: 4190
diff changeset
769 p_strdup(settings_pool, generated_capability);
c3ded5b815aa If we have plugins set and imap_capability unset, figure out the IMAP
Timo Sirainen <tss@iki.fi>
parents: 4190
diff changeset
770 return TRUE;
c3ded5b815aa If we have plugins set and imap_capability unset, figure out the IMAP
Timo Sirainen <tss@iki.fi>
parents: 4190
diff changeset
771 }
c3ded5b815aa If we have plugins set and imap_capability unset, figure out the IMAP
Timo Sirainen <tss@iki.fi>
parents: 4190
diff changeset
772
8585
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
773 generated_capability = get_process_capability(PROCESS_TYPE_IMAP, set);
24ccf040026b Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents: 8584
diff changeset
774 if (generated_capability == NULL)
4197
c3ded5b815aa If we have plugins set and imap_capability unset, figure out the IMAP
Timo Sirainen <tss@iki.fi>
parents: 4190
diff changeset
775 return FALSE;
c3ded5b815aa If we have plugins set and imap_capability unset, figure out the IMAP
Timo Sirainen <tss@iki.fi>
parents: 4190
diff changeset
776
c3ded5b815aa If we have plugins set and imap_capability unset, figure out the IMAP
Timo Sirainen <tss@iki.fi>
parents: 4190
diff changeset
777 set->imap_generated_capability =
c3ded5b815aa If we have plugins set and imap_capability unset, figure out the IMAP
Timo Sirainen <tss@iki.fi>
parents: 4190
diff changeset
778 p_strdup(settings_pool, generated_capability);
c3ded5b815aa If we have plugins set and imap_capability unset, figure out the IMAP
Timo Sirainen <tss@iki.fi>
parents: 4190
diff changeset
779 return TRUE;
c3ded5b815aa If we have plugins set and imap_capability unset, figure out the IMAP
Timo Sirainen <tss@iki.fi>
parents: 4190
diff changeset
780 }
c3ded5b815aa If we have plugins set and imap_capability unset, figure out the IMAP
Timo Sirainen <tss@iki.fi>
parents: 4190
diff changeset
781 #endif
c3ded5b815aa If we have plugins set and imap_capability unset, figure out the IMAP
Timo Sirainen <tss@iki.fi>
parents: 4190
diff changeset
782
3863
55df57c028d4 Added "bool" type and changed all ints that were used as booleans to bool.
Timo Sirainen <tss@iki.fi>
parents: 3854
diff changeset
783 static bool settings_verify(struct settings *set)
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
784 {
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
785 const char *dir;
3724
d22c883021da Added syslog_facility setting to config file.
Timo Sirainen <tss@iki.fi>
parents: 3683
diff changeset
786 int facility;
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
787
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
788 if (!get_login_uid(set))
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
789 return FALSE;
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
790
5876
933caa747d37 Added mail_uid and mail_gid settings.
Timo Sirainen <tss@iki.fi>
parents: 5857
diff changeset
791 set->mail_uid_t = (uid_t)-1;
933caa747d37 Added mail_uid and mail_gid settings.
Timo Sirainen <tss@iki.fi>
parents: 5857
diff changeset
792 set->mail_gid_t = (gid_t)-1;
7341
af998ae4254b Replaced mail_extra_groups setting with mail_privileged_group and
Timo Sirainen <tss@iki.fi>
parents: 7339
diff changeset
793 set->mail_priv_gid_t = (gid_t)-1;
5876
933caa747d37 Added mail_uid and mail_gid settings.
Timo Sirainen <tss@iki.fi>
parents: 5857
diff changeset
794
933caa747d37 Added mail_uid and mail_gid settings.
Timo Sirainen <tss@iki.fi>
parents: 5857
diff changeset
795 if (*set->mail_uid != '\0') {
7339
218245e5e4e7 If mail_uid or mail_gid doesn't exist, log an error.
Timo Sirainen <tss@iki.fi>
parents: 7165
diff changeset
796 if (!parse_uid(set->mail_uid, &set->mail_uid_t)) {
218245e5e4e7 If mail_uid or mail_gid doesn't exist, log an error.
Timo Sirainen <tss@iki.fi>
parents: 7165
diff changeset
797 i_error("Non-existing mail_uid: %s", set->mail_uid);
5876
933caa747d37 Added mail_uid and mail_gid settings.
Timo Sirainen <tss@iki.fi>
parents: 5857
diff changeset
798 return FALSE;
7339
218245e5e4e7 If mail_uid or mail_gid doesn't exist, log an error.
Timo Sirainen <tss@iki.fi>
parents: 7165
diff changeset
799 }
5876
933caa747d37 Added mail_uid and mail_gid settings.
Timo Sirainen <tss@iki.fi>
parents: 5857
diff changeset
800 }
933caa747d37 Added mail_uid and mail_gid settings.
Timo Sirainen <tss@iki.fi>
parents: 5857
diff changeset
801 if (*set->mail_gid != '\0') {
7339
218245e5e4e7 If mail_uid or mail_gid doesn't exist, log an error.
Timo Sirainen <tss@iki.fi>
parents: 7165
diff changeset
802 if (!parse_gid(set->mail_gid, &set->mail_gid_t)) {
218245e5e4e7 If mail_uid or mail_gid doesn't exist, log an error.
Timo Sirainen <tss@iki.fi>
parents: 7165
diff changeset
803 i_error("Non-existing mail_gid: %s", set->mail_uid);
5876
933caa747d37 Added mail_uid and mail_gid settings.
Timo Sirainen <tss@iki.fi>
parents: 5857
diff changeset
804 return FALSE;
7339
218245e5e4e7 If mail_uid or mail_gid doesn't exist, log an error.
Timo Sirainen <tss@iki.fi>
parents: 7165
diff changeset
805 }
5876
933caa747d37 Added mail_uid and mail_gid settings.
Timo Sirainen <tss@iki.fi>
parents: 5857
diff changeset
806 }
7341
af998ae4254b Replaced mail_extra_groups setting with mail_privileged_group and
Timo Sirainen <tss@iki.fi>
parents: 7339
diff changeset
807 if (*set->mail_privileged_group != '\0') {
af998ae4254b Replaced mail_extra_groups setting with mail_privileged_group and
Timo Sirainen <tss@iki.fi>
parents: 7339
diff changeset
808 if (!parse_gid(set->mail_privileged_group,
af998ae4254b Replaced mail_extra_groups setting with mail_privileged_group and
Timo Sirainen <tss@iki.fi>
parents: 7339
diff changeset
809 &set->mail_priv_gid_t)) {
af998ae4254b Replaced mail_extra_groups setting with mail_privileged_group and
Timo Sirainen <tss@iki.fi>
parents: 7339
diff changeset
810 i_error("Non-existing mail_privileged_group: %s",
af998ae4254b Replaced mail_extra_groups setting with mail_privileged_group and
Timo Sirainen <tss@iki.fi>
parents: 7339
diff changeset
811 set->mail_privileged_group);
af998ae4254b Replaced mail_extra_groups setting with mail_privileged_group and
Timo Sirainen <tss@iki.fi>
parents: 7339
diff changeset
812 return FALSE;
af998ae4254b Replaced mail_extra_groups setting with mail_privileged_group and
Timo Sirainen <tss@iki.fi>
parents: 7339
diff changeset
813 }
af998ae4254b Replaced mail_extra_groups setting with mail_privileged_group and
Timo Sirainen <tss@iki.fi>
parents: 7339
diff changeset
814 }
5876
933caa747d37 Added mail_uid and mail_gid settings.
Timo Sirainen <tss@iki.fi>
parents: 5857
diff changeset
815
7004
421226dbdce1 If protocols=none, don't check if mail/login executables are usable.
Timo Sirainen <tss@iki.fi>
parents: 6940
diff changeset
816 if (set->protocol != MAIL_PROTOCOL_ANY &&
421226dbdce1 If protocols=none, don't check if mail/login executables are usable.
Timo Sirainen <tss@iki.fi>
parents: 6940
diff changeset
817 access(t_strcut(set->mail_executable, ' '), X_OK) < 0) {
8692
77c67307d316 If some setting contains a bad value, make sure the error message contains the setting name.
Timo Sirainen <tss@iki.fi>
parents: 8667
diff changeset
818 i_error("mail_executable: Can't use %s: %m",
1693
552514c014cc Allow one parameter for mail_executable.
Timo Sirainen <tss@iki.fi>
parents: 1656
diff changeset
819 t_strcut(set->mail_executable, ' '));
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
820 return FALSE;
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
821 }
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
822
4388
af61031c746f Settings parser nowadays returns "" instead of NULL when it reads an empty
Timo Sirainen <tss@iki.fi>
parents: 4326
diff changeset
823 if (*set->log_path != '\0' && access(set->log_path, W_OK) < 0) {
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
824 dir = get_directory(set->log_path);
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
825 if (access(dir, W_OK) < 0) {
8692
77c67307d316 If some setting contains a bad value, make sure the error message contains the setting name.
Timo Sirainen <tss@iki.fi>
parents: 8667
diff changeset
826 i_error("log_path: Can't write to directory %s: %m",
77c67307d316 If some setting contains a bad value, make sure the error message contains the setting name.
Timo Sirainen <tss@iki.fi>
parents: 8667
diff changeset
827 dir);
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
828 return FALSE;
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
829 }
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
830 }
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
831
4388
af61031c746f Settings parser nowadays returns "" instead of NULL when it reads an empty
Timo Sirainen <tss@iki.fi>
parents: 4326
diff changeset
832 if (*set->info_log_path != '\0' &&
1123
313790fb126e Don't check log dir permission if the log file already exists
Timo Sirainen <tss@iki.fi>
parents: 1122
diff changeset
833 access(set->info_log_path, W_OK) < 0) {
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
834 dir = get_directory(set->info_log_path);
1123
313790fb126e Don't check log dir permission if the log file already exists
Timo Sirainen <tss@iki.fi>
parents: 1122
diff changeset
835 if (access(dir, W_OK) < 0) {
8692
77c67307d316 If some setting contains a bad value, make sure the error message contains the setting name.
Timo Sirainen <tss@iki.fi>
parents: 8667
diff changeset
836 i_error("info_log_path: Can't write to directory %s: %m",
1123
313790fb126e Don't check log dir permission if the log file already exists
Timo Sirainen <tss@iki.fi>
parents: 1122
diff changeset
837 dir);
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
838 return FALSE;
1123
313790fb126e Don't check log dir permission if the log file already exists
Timo Sirainen <tss@iki.fi>
parents: 1122
diff changeset
839 }
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
840 }
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
841
3724
d22c883021da Added syslog_facility setting to config file.
Timo Sirainen <tss@iki.fi>
parents: 3683
diff changeset
842 if (!syslog_facility_find(set->syslog_facility, &facility)) {
8692
77c67307d316 If some setting contains a bad value, make sure the error message contains the setting name.
Timo Sirainen <tss@iki.fi>
parents: 8667
diff changeset
843 i_error("syslog_facility: Unknown value: %s",
77c67307d316 If some setting contains a bad value, make sure the error message contains the setting name.
Timo Sirainen <tss@iki.fi>
parents: 8667
diff changeset
844 set->syslog_facility);
3724
d22c883021da Added syslog_facility setting to config file.
Timo Sirainen <tss@iki.fi>
parents: 3683
diff changeset
845 return FALSE;
d22c883021da Added syslog_facility setting to config file.
Timo Sirainen <tss@iki.fi>
parents: 3683
diff changeset
846 }
d22c883021da Added syslog_facility setting to config file.
Timo Sirainen <tss@iki.fi>
parents: 3683
diff changeset
847
8632
5a4fcfde3e91 Renamed "ssl_disable" setting to "ssl". Added support for ssl=required.
Timo Sirainen <tss@iki.fi>
parents: 8590
diff changeset
848 if (strcmp(set->ssl, "no") != 0 &&
5a4fcfde3e91 Renamed "ssl_disable" setting to "ssl". Added support for ssl=required.
Timo Sirainen <tss@iki.fi>
parents: 8590
diff changeset
849 strcmp(set->ssl, "yes") != 0 &&
5a4fcfde3e91 Renamed "ssl_disable" setting to "ssl". Added support for ssl=required.
Timo Sirainen <tss@iki.fi>
parents: 8590
diff changeset
850 strcmp(set->ssl, "required") != 0) {
5a4fcfde3e91 Renamed "ssl_disable" setting to "ssl". Added support for ssl=required.
Timo Sirainen <tss@iki.fi>
parents: 8590
diff changeset
851 i_error("ssl setting: Invalid value: %s", set->ssl);
5a4fcfde3e91 Renamed "ssl_disable" setting to "ssl". Added support for ssl=required.
Timo Sirainen <tss@iki.fi>
parents: 8590
diff changeset
852 return FALSE;
5a4fcfde3e91 Renamed "ssl_disable" setting to "ssl". Added support for ssl=required.
Timo Sirainen <tss@iki.fi>
parents: 8590
diff changeset
853 }
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
854 #ifdef HAVE_SSL
8632
5a4fcfde3e91 Renamed "ssl_disable" setting to "ssl". Added support for ssl=required.
Timo Sirainen <tss@iki.fi>
parents: 8590
diff changeset
855 if (strcmp(set->ssl, "no") != 0) {
4388
af61031c746f Settings parser nowadays returns "" instead of NULL when it reads an empty
Timo Sirainen <tss@iki.fi>
parents: 4326
diff changeset
856 if (*set->ssl_ca_file != '\0' &&
1907
190f1d315ce6 Added setting ssl_ca_file, patch by Zach Bagnall
Timo Sirainen <tss@iki.fi>
parents: 1886
diff changeset
857 access(set->ssl_ca_file, R_OK) < 0) {
8692
77c67307d316 If some setting contains a bad value, make sure the error message contains the setting name.
Timo Sirainen <tss@iki.fi>
parents: 8667
diff changeset
858 i_fatal("ssl_ca_file: Can't use %s: %m",
1907
190f1d315ce6 Added setting ssl_ca_file, patch by Zach Bagnall
Timo Sirainen <tss@iki.fi>
parents: 1886
diff changeset
859 set->ssl_ca_file);
190f1d315ce6 Added setting ssl_ca_file, patch by Zach Bagnall
Timo Sirainen <tss@iki.fi>
parents: 1886
diff changeset
860 }
190f1d315ce6 Added setting ssl_ca_file, patch by Zach Bagnall
Timo Sirainen <tss@iki.fi>
parents: 1886
diff changeset
861
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
862 if (access(set->ssl_cert_file, R_OK) < 0) {
8692
77c67307d316 If some setting contains a bad value, make sure the error message contains the setting name.
Timo Sirainen <tss@iki.fi>
parents: 8667
diff changeset
863 i_error("ssl_cert_file: Can't use %s: %m",
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
864 set->ssl_cert_file);
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
865 return FALSE;
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
866 }
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
867
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
868 if (access(set->ssl_key_file, R_OK) < 0) {
8692
77c67307d316 If some setting contains a bad value, make sure the error message contains the setting name.
Timo Sirainen <tss@iki.fi>
parents: 8667
diff changeset
869 i_error("ssl_key_file: Can't use %s: %m",
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
870 set->ssl_key_file);
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
871 return FALSE;
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
872 }
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
873 }
3578
a0f99c5a6961 Default to ssl_disable=no always, even if SSL isn't compiled in. If SSL
Timo Sirainen <tss@iki.fi>
parents: 3567
diff changeset
874 #else
8632
5a4fcfde3e91 Renamed "ssl_disable" setting to "ssl". Added support for ssl=required.
Timo Sirainen <tss@iki.fi>
parents: 8590
diff changeset
875 if (strcmp(set->ssl, "no") != 0) {
5a4fcfde3e91 Renamed "ssl_disable" setting to "ssl". Added support for ssl=required.
Timo Sirainen <tss@iki.fi>
parents: 8590
diff changeset
876 i_error("SSL support not compiled in but ssl=%s", set->ssl);
3578
a0f99c5a6961 Default to ssl_disable=no always, even if SSL isn't compiled in. If SSL
Timo Sirainen <tss@iki.fi>
parents: 3567
diff changeset
877 return FALSE;
a0f99c5a6961 Default to ssl_disable=no always, even if SSL isn't compiled in. If SSL
Timo Sirainen <tss@iki.fi>
parents: 3567
diff changeset
878 }
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
879 #endif
8632
5a4fcfde3e91 Renamed "ssl_disable" setting to "ssl". Added support for ssl=required.
Timo Sirainen <tss@iki.fi>
parents: 8590
diff changeset
880 if (strcmp(set->ssl, "no") == 0 && set->disable_plaintext_auth &&
8584
0eac46c235e7 Log a warning at startup if there doesn't seem to be any way to log in from non-localhost.
Timo Sirainen <tss@iki.fi>
parents: 8560
diff changeset
881 strncmp(set->listen, "127.", 4) != 0 &&
8667
d4376328f8c0 Don't warn about maybe not being able to log in if protocols=none.
Timo Sirainen <tss@iki.fi>
parents: 8665
diff changeset
882 strcmp(set->protocols, "none") != 0 &&
8584
0eac46c235e7 Log a warning at startup if there doesn't seem to be any way to log in from non-localhost.
Timo Sirainen <tss@iki.fi>
parents: 8560
diff changeset
883 !settings_have_nonplaintext_auths(set)) {
0eac46c235e7 Log a warning at startup if there doesn't seem to be any way to log in from non-localhost.
Timo Sirainen <tss@iki.fi>
parents: 8560
diff changeset
884 i_warning("There is no way to login to this server: "
8632
5a4fcfde3e91 Renamed "ssl_disable" setting to "ssl". Added support for ssl=required.
Timo Sirainen <tss@iki.fi>
parents: 8590
diff changeset
885 "disable_plaintext_auth=yes, ssl=no, "
8584
0eac46c235e7 Log a warning at startup if there doesn't seem to be any way to log in from non-localhost.
Timo Sirainen <tss@iki.fi>
parents: 8560
diff changeset
886 "no non-plaintext auth mechanisms.");
0eac46c235e7 Log a warning at startup if there doesn't seem to be any way to log in from non-localhost.
Timo Sirainen <tss@iki.fi>
parents: 8560
diff changeset
887 }
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
888
4965
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
889 if (set->max_mail_processes < 1) {
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
890 i_error("max_mail_processes must be at least 1");
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
891 return FALSE;
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
892 }
8700
02f72e7be270 master: Give an error if login_dir = base_dir.
Timo Sirainen <tss@iki.fi>
parents: 8692
diff changeset
893 if (strcmp(set->login_dir, set->base_dir) == 0) {
02f72e7be270 master: Give an error if login_dir = base_dir.
Timo Sirainen <tss@iki.fi>
parents: 8692
diff changeset
894 i_error("login_dir can't be the same as base_dir");
02f72e7be270 master: Give an error if login_dir = base_dir.
Timo Sirainen <tss@iki.fi>
parents: 8692
diff changeset
895 return FALSE;
02f72e7be270 master: Give an error if login_dir = base_dir.
Timo Sirainen <tss@iki.fi>
parents: 8692
diff changeset
896 }
4965
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
897
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
898 if (set->last_valid_uid != 0 &&
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
899 set->first_valid_uid > set->last_valid_uid) {
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
900 i_error("first_valid_uid can't be larger than last_valid_uid");
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
901 return FALSE;
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
902 }
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
903 if (set->last_valid_gid != 0 &&
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
904 set->first_valid_gid > set->last_valid_gid) {
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
905 i_error("first_valid_gid can't be larger than last_valid_gid");
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
906 return FALSE;
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
907 }
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
908 if (set->mail_drop_priv_before_exec && *set->mail_chroot != '\0') {
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
909 i_error("mail_drop_priv_before_exec=yes and mail_chroot "
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
910 "don't work together");
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
911 return FALSE;
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
912 }
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
913
7004
421226dbdce1 If protocols=none, don't check if mail/login executables are usable.
Timo Sirainen <tss@iki.fi>
parents: 6940
diff changeset
914 if (set->protocol != MAIL_PROTOCOL_ANY &&
421226dbdce1 If protocols=none, don't check if mail/login executables are usable.
Timo Sirainen <tss@iki.fi>
parents: 6940
diff changeset
915 access(t_strcut(set->login_executable, ' '), X_OK) < 0) {
8692
77c67307d316 If some setting contains a bad value, make sure the error message contains the setting name.
Timo Sirainen <tss@iki.fi>
parents: 8667
diff changeset
916 i_error("login_executable: Can't use %s: %m",
4965
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
917 t_strcut(set->login_executable, ' '));
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
918 return FALSE;
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
919 }
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
920
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
921 if (set->login_processes_count < 1) {
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
922 i_error("login_processes_count must be at least 1");
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
923 return FALSE;
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
924 }
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
925 if (set->login_max_connections < 1) {
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
926 i_error("login_max_connections must be at least 1");
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
927 return FALSE;
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
928 }
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
929
6282
5eb728db3fd5 If mail_nfs_index=yes, give an error if mmap_disable=no / fsync_disable=yes.
Timo Sirainen <tss@iki.fi>
parents: 6247
diff changeset
930 if (set->mail_nfs_index && !set->mmap_disable) {
5eb728db3fd5 If mail_nfs_index=yes, give an error if mmap_disable=no / fsync_disable=yes.
Timo Sirainen <tss@iki.fi>
parents: 6247
diff changeset
931 i_error("mail_nfs_index=yes requires mmap_disable=yes");
5eb728db3fd5 If mail_nfs_index=yes, give an error if mmap_disable=no / fsync_disable=yes.
Timo Sirainen <tss@iki.fi>
parents: 6247
diff changeset
932 return FALSE;
5eb728db3fd5 If mail_nfs_index=yes, give an error if mmap_disable=no / fsync_disable=yes.
Timo Sirainen <tss@iki.fi>
parents: 6247
diff changeset
933 }
5eb728db3fd5 If mail_nfs_index=yes, give an error if mmap_disable=no / fsync_disable=yes.
Timo Sirainen <tss@iki.fi>
parents: 6247
diff changeset
934 if (set->mail_nfs_index && set->fsync_disable) {
5eb728db3fd5 If mail_nfs_index=yes, give an error if mmap_disable=no / fsync_disable=yes.
Timo Sirainen <tss@iki.fi>
parents: 6247
diff changeset
935 i_error("mail_nfs_index=yes requires fsync_disable=no");
5eb728db3fd5 If mail_nfs_index=yes, give an error if mmap_disable=no / fsync_disable=yes.
Timo Sirainen <tss@iki.fi>
parents: 6247
diff changeset
936 return FALSE;
5eb728db3fd5 If mail_nfs_index=yes, give an error if mmap_disable=no / fsync_disable=yes.
Timo Sirainen <tss@iki.fi>
parents: 6247
diff changeset
937 }
5eb728db3fd5 If mail_nfs_index=yes, give an error if mmap_disable=no / fsync_disable=yes.
Timo Sirainen <tss@iki.fi>
parents: 6247
diff changeset
938
4965
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
939 #ifdef HAVE_MODULES
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
940 if (*set->mail_plugins != '\0' &&
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
941 access(set->mail_plugin_dir, R_OK | X_OK) < 0) {
8692
77c67307d316 If some setting contains a bad value, make sure the error message contains the setting name.
Timo Sirainen <tss@iki.fi>
parents: 8667
diff changeset
942 i_error("mail_plugin_dir: Can't access directory: %s: %m",
4965
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
943 set->mail_plugin_dir);
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
944 return FALSE;
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
945 }
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
946 #else
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
947 if (*set->mail_plugins != '\0') {
8692
77c67307d316 If some setting contains a bad value, make sure the error message contains the setting name.
Timo Sirainen <tss@iki.fi>
parents: 8667
diff changeset
948 i_error("mail_plugins: Plugin support wasn't built into Dovecot, "
77c67307d316 If some setting contains a bad value, make sure the error message contains the setting name.
Timo Sirainen <tss@iki.fi>
parents: 8667
diff changeset
949 "can't load plugins: %s", set->mail_plugins);
4965
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
950 return FALSE;
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
951 }
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
952 #endif
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
953 return TRUE;
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
954 }
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
955
8821
71cfd00e1375 master: If login process has -D parameter, make login directory writable.
Timo Sirainen <tss@iki.fi>
parents: 8700
diff changeset
956 static bool login_want_core_dumps(struct settings *set)
71cfd00e1375 master: If login process has -D parameter, make login directory writable.
Timo Sirainen <tss@iki.fi>
parents: 8700
diff changeset
957 {
71cfd00e1375 master: If login process has -D parameter, make login directory writable.
Timo Sirainen <tss@iki.fi>
parents: 8700
diff changeset
958 const char *p;
71cfd00e1375 master: If login process has -D parameter, make login directory writable.
Timo Sirainen <tss@iki.fi>
parents: 8700
diff changeset
959
8834
5284f45c249a master: Don't crash in login_executable -D checks if protocols line doesn't have imap.
Timo Sirainen <tss@iki.fi>
parents: 8821
diff changeset
960 p = set->server->pop3 == NULL ? NULL :
5284f45c249a master: Don't crash in login_executable -D checks if protocols line doesn't have imap.
Timo Sirainen <tss@iki.fi>
parents: 8821
diff changeset
961 strstr(set->server->pop3->login_executable, " -D");
8821
71cfd00e1375 master: If login process has -D parameter, make login directory writable.
Timo Sirainen <tss@iki.fi>
parents: 8700
diff changeset
962 if (p != NULL && p[3] == '\0')
71cfd00e1375 master: If login process has -D parameter, make login directory writable.
Timo Sirainen <tss@iki.fi>
parents: 8700
diff changeset
963 return TRUE;
8834
5284f45c249a master: Don't crash in login_executable -D checks if protocols line doesn't have imap.
Timo Sirainen <tss@iki.fi>
parents: 8821
diff changeset
964 p = set->server->imap == NULL ? NULL :
5284f45c249a master: Don't crash in login_executable -D checks if protocols line doesn't have imap.
Timo Sirainen <tss@iki.fi>
parents: 8821
diff changeset
965 strstr(set->server->imap->login_executable, " -D");
8821
71cfd00e1375 master: If login process has -D parameter, make login directory writable.
Timo Sirainen <tss@iki.fi>
parents: 8700
diff changeset
966 if (p != NULL && p[3] == '\0')
71cfd00e1375 master: If login process has -D parameter, make login directory writable.
Timo Sirainen <tss@iki.fi>
parents: 8700
diff changeset
967 return TRUE;
71cfd00e1375 master: If login process has -D parameter, make login directory writable.
Timo Sirainen <tss@iki.fi>
parents: 8700
diff changeset
968 return FALSE;
71cfd00e1375 master: If login process has -D parameter, make login directory writable.
Timo Sirainen <tss@iki.fi>
parents: 8700
diff changeset
969 }
71cfd00e1375 master: If login process has -D parameter, make login directory writable.
Timo Sirainen <tss@iki.fi>
parents: 8700
diff changeset
970
4965
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
971 static bool settings_do_fixes(struct settings *set)
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
972 {
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
973 struct stat st;
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
974
3900
7ee2fc733bf6 Fix base_dir permissions if it exists
Timo Sirainen <tss@iki.fi>
parents: 3889
diff changeset
975 /* since base dir is under /var/run by default, it may have been
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
976 deleted. */
3900
7ee2fc733bf6 Fix base_dir permissions if it exists
Timo Sirainen <tss@iki.fi>
parents: 3889
diff changeset
977 if (mkdir_parents(set->base_dir, 0777) < 0 && errno != EEXIST) {
7ee2fc733bf6 Fix base_dir permissions if it exists
Timo Sirainen <tss@iki.fi>
parents: 3889
diff changeset
978 i_error("mkdir(%s) failed: %m", set->base_dir);
7ee2fc733bf6 Fix base_dir permissions if it exists
Timo Sirainen <tss@iki.fi>
parents: 3889
diff changeset
979 return FALSE;
7ee2fc733bf6 Fix base_dir permissions if it exists
Timo Sirainen <tss@iki.fi>
parents: 3889
diff changeset
980 }
4554
d59ab08a6b6a Allow base_dir to point to a symlink.
Timo Sirainen <tss@iki.fi>
parents: 4553
diff changeset
981 /* allow base_dir to be a symlink, so don't use lstat() */
d59ab08a6b6a Allow base_dir to point to a symlink.
Timo Sirainen <tss@iki.fi>
parents: 4553
diff changeset
982 if (stat(set->base_dir, &st) < 0) {
d59ab08a6b6a Allow base_dir to point to a symlink.
Timo Sirainen <tss@iki.fi>
parents: 4553
diff changeset
983 i_error("stat(%s) failed: %m", set->base_dir);
3900
7ee2fc733bf6 Fix base_dir permissions if it exists
Timo Sirainen <tss@iki.fi>
parents: 3889
diff changeset
984 return FALSE;
7ee2fc733bf6 Fix base_dir permissions if it exists
Timo Sirainen <tss@iki.fi>
parents: 3889
diff changeset
985 }
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
986
4998
f37c7895eb8f Delete all auth-worker.* files from Dovecot's base_dir when starting.
Timo Sirainen <tss@iki.fi>
parents: 4968
diff changeset
987 /* remove auth worker sockets left by unclean exits */
f37c7895eb8f Delete all auth-worker.* files from Dovecot's base_dir when starting.
Timo Sirainen <tss@iki.fi>
parents: 4968
diff changeset
988 unlink_auth_sockets(set->base_dir, "auth-worker.");
f37c7895eb8f Delete all auth-worker.* files from Dovecot's base_dir when starting.
Timo Sirainen <tss@iki.fi>
parents: 4968
diff changeset
989
4407
2e4857a2b858 Added --with-statedir configure option which defaults to
Timo Sirainen <tss@iki.fi>
parents: 4393
diff changeset
990 /* Make sure our permanent state directory exists */
4408
9c9dec4901d9 Changed the created state dir's default permissions to be 0750. Although
Timo Sirainen <tss@iki.fi>
parents: 4407
diff changeset
991 if (mkdir_parents(PKG_STATEDIR, 0750) < 0 && errno != EEXIST) {
4407
2e4857a2b858 Added --with-statedir configure option which defaults to
Timo Sirainen <tss@iki.fi>
parents: 4393
diff changeset
992 i_error("mkdir(%s) failed: %m", PKG_STATEDIR);
2e4857a2b858 Added --with-statedir configure option which defaults to
Timo Sirainen <tss@iki.fi>
parents: 4393
diff changeset
993 return FALSE;
2e4857a2b858 Added --with-statedir configure option which defaults to
Timo Sirainen <tss@iki.fi>
parents: 4393
diff changeset
994 }
2e4857a2b858 Added --with-statedir configure option which defaults to
Timo Sirainen <tss@iki.fi>
parents: 4393
diff changeset
995
2236
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
996 if (!settings_have_connect_sockets(set)) {
2960
41a4ea8496d6 Don't change login dir permissions if using external auth.
Timo Sirainen <tss@iki.fi>
parents: 2886
diff changeset
997 /* we are not using external authentication, so make sure the
41a4ea8496d6 Don't change login dir permissions if using external auth.
Timo Sirainen <tss@iki.fi>
parents: 2886
diff changeset
998 login directory exists with correct permissions and it's
41a4ea8496d6 Don't change login dir permissions if using external auth.
Timo Sirainen <tss@iki.fi>
parents: 2886
diff changeset
999 empty. with external auth we wouldn't want to delete
41a4ea8496d6 Don't change login dir permissions if using external auth.
Timo Sirainen <tss@iki.fi>
parents: 2886
diff changeset
1000 existing sockets or break the permissions required by the
41a4ea8496d6 Don't change login dir permissions if using external auth.
Timo Sirainen <tss@iki.fi>
parents: 2886
diff changeset
1001 auth server. */
8821
71cfd00e1375 master: If login process has -D parameter, make login directory writable.
Timo Sirainen <tss@iki.fi>
parents: 8700
diff changeset
1002 mode_t mode = login_want_core_dumps(set) ? 0770 : 0750;
71cfd00e1375 master: If login process has -D parameter, make login directory writable.
Timo Sirainen <tss@iki.fi>
parents: 8700
diff changeset
1003 if (safe_mkdir(set->login_dir, mode,
2960
41a4ea8496d6 Don't change login dir permissions if using external auth.
Timo Sirainen <tss@iki.fi>
parents: 2886
diff changeset
1004 master_uid, set->server->login_gid) == 0) {
41a4ea8496d6 Don't change login dir permissions if using external auth.
Timo Sirainen <tss@iki.fi>
parents: 2886
diff changeset
1005 i_warning("Corrected permissions for login directory "
41a4ea8496d6 Don't change login dir permissions if using external auth.
Timo Sirainen <tss@iki.fi>
parents: 2886
diff changeset
1006 "%s", set->login_dir);
41a4ea8496d6 Don't change login dir permissions if using external auth.
Timo Sirainen <tss@iki.fi>
parents: 2886
diff changeset
1007 }
3901
0ae5f5b468b7 Put ssl-parameters file into login directory so it still can be accessed
Timo Sirainen <tss@iki.fi>
parents: 3900
diff changeset
1008
4998
f37c7895eb8f Delete all auth-worker.* files from Dovecot's base_dir when starting.
Timo Sirainen <tss@iki.fi>
parents: 4968
diff changeset
1009 unlink_auth_sockets(set->login_dir, "");
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
1010 }
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
1011
4541
61990aea02bc Run imap dump-capability process only after all the settings have been
Timo Sirainen <tss@iki.fi>
parents: 4538
diff changeset
1012 #ifdef HAVE_MODULES
61990aea02bc Run imap dump-capability process only after all the settings have been
Timo Sirainen <tss@iki.fi>
parents: 4538
diff changeset
1013 if (*set->mail_plugins != '\0' && set->protocol == MAIL_PROTOCOL_IMAP &&
61990aea02bc Run imap dump-capability process only after all the settings have been
Timo Sirainen <tss@iki.fi>
parents: 4538
diff changeset
1014 *set->imap_capability == '\0') {
61990aea02bc Run imap dump-capability process only after all the settings have been
Timo Sirainen <tss@iki.fi>
parents: 4538
diff changeset
1015 if (!get_imap_capability(set))
61990aea02bc Run imap dump-capability process only after all the settings have been
Timo Sirainen <tss@iki.fi>
parents: 4538
diff changeset
1016 return FALSE;
61990aea02bc Run imap dump-capability process only after all the settings have been
Timo Sirainen <tss@iki.fi>
parents: 4538
diff changeset
1017 }
61990aea02bc Run imap dump-capability process only after all the settings have been
Timo Sirainen <tss@iki.fi>
parents: 4538
diff changeset
1018 #endif
4754
188481077cde default_mail_env fallbacking was broken with --exec-mail.
Timo Sirainen <tss@iki.fi>
parents: 4701
diff changeset
1019 return TRUE;
188481077cde default_mail_env fallbacking was broken with --exec-mail.
Timo Sirainen <tss@iki.fi>
parents: 4701
diff changeset
1020 }
188481077cde default_mail_env fallbacking was broken with --exec-mail.
Timo Sirainen <tss@iki.fi>
parents: 4701
diff changeset
1021
4965
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
1022 static bool settings_fix(struct settings *set, bool nochecks, bool nofixes)
4754
188481077cde default_mail_env fallbacking was broken with --exec-mail.
Timo Sirainen <tss@iki.fi>
parents: 4701
diff changeset
1023 {
188481077cde default_mail_env fallbacking was broken with --exec-mail.
Timo Sirainen <tss@iki.fi>
parents: 4701
diff changeset
1024 /* fix relative paths */
188481077cde default_mail_env fallbacking was broken with --exec-mail.
Timo Sirainen <tss@iki.fi>
parents: 4701
diff changeset
1025 fix_base_path(set, &set->login_dir);
188481077cde default_mail_env fallbacking was broken with --exec-mail.
Timo Sirainen <tss@iki.fi>
parents: 4701
diff changeset
1026
4965
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
1027 if (nochecks)
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
1028 return TRUE;
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
1029 if (!settings_verify(set))
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
1030 return FALSE;
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
1031 return nofixes ? TRUE : settings_do_fixes(set);
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
1032 }
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
1033
7165
805d0831deb6 If we see that Dovecot is already running, log the error as fatal instead of
Timo Sirainen <tss@iki.fi>
parents: 7089
diff changeset
1034 static void pid_file_check_running(const char *path)
5659
b118198fbfa3 If Dovecot is already running, complain about it instead of wiping out
Timo Sirainen <tss@iki.fi>
parents: 5638
diff changeset
1035 {
b118198fbfa3 If Dovecot is already running, complain about it instead of wiping out
Timo Sirainen <tss@iki.fi>
parents: 5638
diff changeset
1036 char buf[32];
b118198fbfa3 If Dovecot is already running, complain about it instead of wiping out
Timo Sirainen <tss@iki.fi>
parents: 5638
diff changeset
1037 int fd;
b118198fbfa3 If Dovecot is already running, complain about it instead of wiping out
Timo Sirainen <tss@iki.fi>
parents: 5638
diff changeset
1038 ssize_t ret;
b118198fbfa3 If Dovecot is already running, complain about it instead of wiping out
Timo Sirainen <tss@iki.fi>
parents: 5638
diff changeset
1039
b118198fbfa3 If Dovecot is already running, complain about it instead of wiping out
Timo Sirainen <tss@iki.fi>
parents: 5638
diff changeset
1040 fd = open(path, O_RDONLY);
b118198fbfa3 If Dovecot is already running, complain about it instead of wiping out
Timo Sirainen <tss@iki.fi>
parents: 5638
diff changeset
1041 if (fd == -1) {
b118198fbfa3 If Dovecot is already running, complain about it instead of wiping out
Timo Sirainen <tss@iki.fi>
parents: 5638
diff changeset
1042 if (errno == ENOENT)
7165
805d0831deb6 If we see that Dovecot is already running, log the error as fatal instead of
Timo Sirainen <tss@iki.fi>
parents: 7089
diff changeset
1043 return;
805d0831deb6 If we see that Dovecot is already running, log the error as fatal instead of
Timo Sirainen <tss@iki.fi>
parents: 7089
diff changeset
1044 i_fatal("open(%s) failed: %m", path);
5659
b118198fbfa3 If Dovecot is already running, complain about it instead of wiping out
Timo Sirainen <tss@iki.fi>
parents: 5638
diff changeset
1045 }
b118198fbfa3 If Dovecot is already running, complain about it instead of wiping out
Timo Sirainen <tss@iki.fi>
parents: 5638
diff changeset
1046
b118198fbfa3 If Dovecot is already running, complain about it instead of wiping out
Timo Sirainen <tss@iki.fi>
parents: 5638
diff changeset
1047 ret = read(fd, buf, sizeof(buf));
b118198fbfa3 If Dovecot is already running, complain about it instead of wiping out
Timo Sirainen <tss@iki.fi>
parents: 5638
diff changeset
1048 if (ret <= 0) {
b118198fbfa3 If Dovecot is already running, complain about it instead of wiping out
Timo Sirainen <tss@iki.fi>
parents: 5638
diff changeset
1049 if (ret == 0)
b118198fbfa3 If Dovecot is already running, complain about it instead of wiping out
Timo Sirainen <tss@iki.fi>
parents: 5638
diff changeset
1050 i_error("Empty PID file in %s, overriding", path);
b118198fbfa3 If Dovecot is already running, complain about it instead of wiping out
Timo Sirainen <tss@iki.fi>
parents: 5638
diff changeset
1051 else
7165
805d0831deb6 If we see that Dovecot is already running, log the error as fatal instead of
Timo Sirainen <tss@iki.fi>
parents: 7089
diff changeset
1052 i_fatal("read(%s) failed: %m", path);
5659
b118198fbfa3 If Dovecot is already running, complain about it instead of wiping out
Timo Sirainen <tss@iki.fi>
parents: 5638
diff changeset
1053 } else {
b118198fbfa3 If Dovecot is already running, complain about it instead of wiping out
Timo Sirainen <tss@iki.fi>
parents: 5638
diff changeset
1054 pid_t pid;
b118198fbfa3 If Dovecot is already running, complain about it instead of wiping out
Timo Sirainen <tss@iki.fi>
parents: 5638
diff changeset
1055
b118198fbfa3 If Dovecot is already running, complain about it instead of wiping out
Timo Sirainen <tss@iki.fi>
parents: 5638
diff changeset
1056 if (buf[ret-1] == '\n')
b118198fbfa3 If Dovecot is already running, complain about it instead of wiping out
Timo Sirainen <tss@iki.fi>
parents: 5638
diff changeset
1057 ret--;
b118198fbfa3 If Dovecot is already running, complain about it instead of wiping out
Timo Sirainen <tss@iki.fi>
parents: 5638
diff changeset
1058 buf[ret] = '\0';
b118198fbfa3 If Dovecot is already running, complain about it instead of wiping out
Timo Sirainen <tss@iki.fi>
parents: 5638
diff changeset
1059 pid = atoi(buf);
b118198fbfa3 If Dovecot is already running, complain about it instead of wiping out
Timo Sirainen <tss@iki.fi>
parents: 5638
diff changeset
1060 if (pid == getpid() || (kill(pid, 0) < 0 && errno == ESRCH)) {
b118198fbfa3 If Dovecot is already running, complain about it instead of wiping out
Timo Sirainen <tss@iki.fi>
parents: 5638
diff changeset
1061 /* doesn't exist */
b118198fbfa3 If Dovecot is already running, complain about it instead of wiping out
Timo Sirainen <tss@iki.fi>
parents: 5638
diff changeset
1062 } else {
7165
805d0831deb6 If we see that Dovecot is already running, log the error as fatal instead of
Timo Sirainen <tss@iki.fi>
parents: 7089
diff changeset
1063 i_fatal("Dovecot is already running with PID %s "
5659
b118198fbfa3 If Dovecot is already running, complain about it instead of wiping out
Timo Sirainen <tss@iki.fi>
parents: 5638
diff changeset
1064 "(read from %s)", buf, path);
b118198fbfa3 If Dovecot is already running, complain about it instead of wiping out
Timo Sirainen <tss@iki.fi>
parents: 5638
diff changeset
1065 }
b118198fbfa3 If Dovecot is already running, complain about it instead of wiping out
Timo Sirainen <tss@iki.fi>
parents: 5638
diff changeset
1066 }
b118198fbfa3 If Dovecot is already running, complain about it instead of wiping out
Timo Sirainen <tss@iki.fi>
parents: 5638
diff changeset
1067 (void)close(fd);
b118198fbfa3 If Dovecot is already running, complain about it instead of wiping out
Timo Sirainen <tss@iki.fi>
parents: 5638
diff changeset
1068 }
b118198fbfa3 If Dovecot is already running, complain about it instead of wiping out
Timo Sirainen <tss@iki.fi>
parents: 5638
diff changeset
1069
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1070 static struct auth_settings *
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1071 auth_settings_new(struct server_settings *server, const char *name)
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
1072 {
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
1073 struct auth_settings *auth;
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
1074
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
1075 auth = p_new(settings_pool, struct auth_settings, 1);
1330
7cde19dbe754 Moved auth_username_chars from db-pgsql to generic for all. Some other
Timo Sirainen <tss@iki.fi>
parents: 1328
diff changeset
1076
7cde19dbe754 Moved auth_username_chars from db-pgsql to generic for all. Some other
Timo Sirainen <tss@iki.fi>
parents: 1328
diff changeset
1077 /* copy defaults */
1723
c090fc199013 Reading global auth_* defaults didn't work
Timo Sirainen <tss@iki.fi>
parents: 1693
diff changeset
1078 *auth = server->auth_defaults;
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1079 auth->parent = server;
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
1080 auth->name = p_strdup(settings_pool, name);
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
1081
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1082 auth->next = server->auths;
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1083 server->auths = auth;
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1084
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1085 return auth;
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
1086 }
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
1087
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1088 static struct auth_settings *
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1089 parse_new_auth(struct server_settings *server, const char *name,
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1090 const char **errormsg)
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
1091 {
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
1092 struct auth_settings *auth;
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
1093
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1094 if (strchr(name, '/') != NULL) {
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1095 *errormsg = "Authentication process name must not contain '/'";
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1096 return NULL;
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1097 }
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
1098
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1099 for (auth = server->auths; auth != NULL; auth = auth->next) {
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
1100 if (strcmp(auth->name, name) == 0) {
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1101 *errormsg = "Authentication process already exists "
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
1102 "with the same name";
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1103 return NULL;
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
1104 }
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
1105 }
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
1106
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1107 return auth_settings_new(server, name);
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
1108 }
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
1109
3183
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
1110 static struct auth_passdb_settings *
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
1111 auth_passdb_settings_new(struct auth_settings *auth, const char *type)
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
1112 {
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
1113 struct auth_passdb_settings *as, **as_p;
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
1114
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
1115 as = p_new(settings_pool, struct auth_passdb_settings, 1);
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
1116
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
1117 as->parent = auth;
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
1118 as->driver = str_lcase(p_strdup(settings_pool, type));
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
1119
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
1120 as_p = &auth->passdbs;
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
1121 while (*as_p != NULL)
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
1122 as_p = &(*as_p)->next;
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
1123 *as_p = as;
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
1124
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
1125 return as;
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
1126 }
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
1127
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
1128 static struct auth_userdb_settings *
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
1129 auth_userdb_settings_new(struct auth_settings *auth, const char *type)
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
1130 {
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
1131 struct auth_userdb_settings *as, **as_p;
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
1132
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
1133 as = p_new(settings_pool, struct auth_userdb_settings, 1);
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
1134
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
1135 as->parent = auth;
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
1136 as->driver = str_lcase(p_strdup(settings_pool, type));
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
1137
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
1138 as_p = &auth->userdbs;
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
1139 while (*as_p != NULL)
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
1140 as_p = &(*as_p)->next;
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
1141 *as_p = as;
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
1142
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
1143 return as;
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
1144 }
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
1145
2236
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1146 static struct auth_socket_settings *
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1147 auth_socket_settings_new(struct auth_settings *auth, const char *type)
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1148 {
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1149 struct auth_socket_settings *as, **as_p;
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1150
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1151 as = p_new(settings_pool, struct auth_socket_settings, 1);
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1152
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1153 as->parent = auth;
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1154 as->type = str_lcase(p_strdup(settings_pool, type));
4388
af61031c746f Settings parser nowadays returns "" instead of NULL when it reads an empty
Timo Sirainen <tss@iki.fi>
parents: 4326
diff changeset
1155 as->master = default_socket_settings;
af61031c746f Settings parser nowadays returns "" instead of NULL when it reads an empty
Timo Sirainen <tss@iki.fi>
parents: 4326
diff changeset
1156 as->client = default_socket_settings;
2236
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1157
5706
afc4e8a7354a Master and client sockets have default paths now. Section name only needs to
Timo Sirainen <tss@iki.fi>
parents: 5659
diff changeset
1158 as->master.path = DEFAULT_MASTER_SOCKET_PATH;
afc4e8a7354a Master and client sockets have default paths now. Section name only needs to
Timo Sirainen <tss@iki.fi>
parents: 5659
diff changeset
1159 as->client.path = DEFAULT_CLIENT_SOCKET_PATH;
afc4e8a7354a Master and client sockets have default paths now. Section name only needs to
Timo Sirainen <tss@iki.fi>
parents: 5659
diff changeset
1160
2236
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1161 as_p = &auth->sockets;
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1162 while (*as_p != NULL)
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1163 as_p = &(*as_p)->next;
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1164 *as_p = as;
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1165
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1166 return as;
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1167 }
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1168
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1169 static struct auth_socket_settings *
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1170 parse_new_auth_socket(struct auth_settings *auth, const char *name,
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1171 const char **errormsg)
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1172 {
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1173 if (strcmp(name, "connect") != 0 && strcmp(name, "listen") != 0) {
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1174 *errormsg = "Unknown auth socket type";
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1175 return NULL;
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1176 }
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1177
7941
f33e8e801023 Don't give a bogus error message if multiple socket listen blocks are used.
Timo Sirainen <tss@iki.fi>
parents: 7928
diff changeset
1178 if (auth->sockets != NULL && strcmp(name, "connect") == 0) {
2236
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1179 *errormsg = "With connect auth socket no other sockets "
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1180 "can be used in same auth section";
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1181 return NULL;
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1182 }
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1183
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1184 return auth_socket_settings_new(auth, name);
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1185 }
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1186
1656
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
1187 static struct namespace_settings *
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
1188 namespace_settings_new(struct server_settings *server, const char *type)
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
1189 {
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
1190 struct namespace_settings *ns, **ns_p;
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
1191
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
1192 ns = p_new(settings_pool, struct namespace_settings, 1);
4388
af61031c746f Settings parser nowadays returns "" instead of NULL when it reads an empty
Timo Sirainen <tss@iki.fi>
parents: 4326
diff changeset
1193 *ns = default_namespace_settings;
1656
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
1194
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
1195 ns->parent = server;
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
1196 ns->type = str_lcase(p_strdup(settings_pool, type));
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
1197
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
1198 ns_p = &server->namespaces;
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
1199 while (*ns_p != NULL)
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
1200 ns_p = &(*ns_p)->next;
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
1201 *ns_p = ns;
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
1202
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
1203 return ns;
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
1204 }
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
1205
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
1206 static struct namespace_settings *
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
1207 parse_new_namespace(struct server_settings *server, const char *name,
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
1208 const char **errormsg)
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
1209 {
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
1210 if (strcasecmp(name, "private") != 0 &&
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
1211 strcasecmp(name, "shared") != 0 &&
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
1212 strcasecmp(name, "public") != 0) {
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
1213 *errormsg = "Unknown namespace type";
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
1214 return NULL;
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
1215 }
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
1216
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
1217 return namespace_settings_new(server, name);
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
1218 }
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
1219
1063
af288710044a updates
Timo Sirainen <tss@iki.fi>
parents: 1058
diff changeset
1220 static const char *parse_setting(const char *key, const char *value,
4907
5b4c9b20eba0 Replaced void *context from a lot of callbacks with the actual context
Timo Sirainen <tss@iki.fi>
parents: 4799
diff changeset
1221 struct settings_parse_ctx *ctx)
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
1222 {
1073
389e9d1f4e60 Changing login_dir or login_chroot wasn't possible
Timo Sirainen <tss@iki.fi>
parents: 1063
diff changeset
1223 const char *error;
389e9d1f4e60 Changing login_dir or login_chroot wasn't possible
Timo Sirainen <tss@iki.fi>
parents: 1063
diff changeset
1224
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1225 switch (ctx->type) {
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1226 case SETTINGS_TYPE_ROOT:
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1227 case SETTINGS_TYPE_SERVER:
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1228 error = NULL;
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1229 if (ctx->protocol == MAIL_PROTOCOL_ANY ||
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1230 ctx->protocol == MAIL_PROTOCOL_IMAP) {
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1231 error = parse_setting_from_defs(settings_pool,
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1232 setting_defs,
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1233 ctx->server->imap,
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1234 key, value);
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1235 }
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1236
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1237 if (error == NULL &&
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1238 (ctx->protocol == MAIL_PROTOCOL_ANY ||
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1239 ctx->protocol == MAIL_PROTOCOL_POP3)) {
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1240 error = parse_setting_from_defs(settings_pool,
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1241 setting_defs,
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1242 ctx->server->pop3,
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1243 key, value);
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1244 }
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1245
9256
d38e0412cfb4 dovecot -n/-a now outputs also lda settings.
Timo Sirainen <tss@iki.fi>
parents: 9182
diff changeset
1246 if (ctx->protocol == MAIL_PROTOCOL_LDA) {
d38e0412cfb4 dovecot -n/-a now outputs also lda settings.
Timo Sirainen <tss@iki.fi>
parents: 9182
diff changeset
1247 key = p_strdup(settings_pool, key);
d38e0412cfb4 dovecot -n/-a now outputs also lda settings.
Timo Sirainen <tss@iki.fi>
parents: 9182
diff changeset
1248 value = p_strdup(settings_pool, value);
d38e0412cfb4 dovecot -n/-a now outputs also lda settings.
Timo Sirainen <tss@iki.fi>
parents: 9182
diff changeset
1249
d38e0412cfb4 dovecot -n/-a now outputs also lda settings.
Timo Sirainen <tss@iki.fi>
parents: 9182
diff changeset
1250 array_append(&ctx->server->lda_settings, &key, 1);
d38e0412cfb4 dovecot -n/-a now outputs also lda settings.
Timo Sirainen <tss@iki.fi>
parents: 9182
diff changeset
1251 array_append(&ctx->server->lda_settings, &value, 1);
d38e0412cfb4 dovecot -n/-a now outputs also lda settings.
Timo Sirainen <tss@iki.fi>
parents: 9182
diff changeset
1252 }
d38e0412cfb4 dovecot -n/-a now outputs also lda settings.
Timo Sirainen <tss@iki.fi>
parents: 9182
diff changeset
1253
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1254 if (error == NULL)
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1255 return NULL;
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1256
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1257 if (strncmp(key, "auth_", 5) == 0) {
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1258 return parse_setting_from_defs(settings_pool,
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1259 auth_setting_defs,
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1260 ctx->auth,
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1261 key + 5, value);
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1262 }
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1263 return error;
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1264 case SETTINGS_TYPE_AUTH:
1723
c090fc199013 Reading global auth_* defaults didn't work
Timo Sirainen <tss@iki.fi>
parents: 1693
diff changeset
1265 if (strncmp(key, "auth_", 5) == 0)
c090fc199013 Reading global auth_* defaults didn't work
Timo Sirainen <tss@iki.fi>
parents: 1693
diff changeset
1266 key += 5;
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1267 return parse_setting_from_defs(settings_pool, auth_setting_defs,
1656
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
1268 ctx->auth, key, value);
2236
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1269 case SETTINGS_TYPE_AUTH_SOCKET:
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1270 return parse_setting_from_defs(settings_pool,
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1271 auth_socket_setting_defs,
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1272 ctx->auth_socket, key, value);
3183
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
1273 case SETTINGS_TYPE_AUTH_PASSDB:
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
1274 return parse_setting_from_defs(settings_pool,
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
1275 auth_passdb_setting_defs,
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
1276 ctx->auth_passdb, key, value);
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
1277 case SETTINGS_TYPE_AUTH_USERDB:
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
1278 return parse_setting_from_defs(settings_pool,
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
1279 auth_userdb_setting_defs,
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
1280 ctx->auth_userdb, key, value);
1656
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
1281 case SETTINGS_TYPE_NAMESPACE:
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
1282 return parse_setting_from_defs(settings_pool,
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
1283 namespace_setting_defs,
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
1284 ctx->namespace, key, value);
2236
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1285 case SETTINGS_TYPE_SOCKET:
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1286 return parse_setting_from_defs(settings_pool,
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1287 socket_setting_defs,
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1288 ctx->socket, key, value);
4393
9928ebb54719 Instead of passing URIs directly to dictionary server, it now accepts only
Timo Sirainen <tss@iki.fi>
parents: 4388
diff changeset
1289 case SETTINGS_TYPE_DICT:
9928ebb54719 Instead of passing URIs directly to dictionary server, it now accepts only
Timo Sirainen <tss@iki.fi>
parents: 4388
diff changeset
1290 key = p_strdup(settings_pool, key);
9928ebb54719 Instead of passing URIs directly to dictionary server, it now accepts only
Timo Sirainen <tss@iki.fi>
parents: 4388
diff changeset
1291 value = p_strdup(settings_pool, value);
9928ebb54719 Instead of passing URIs directly to dictionary server, it now accepts only
Timo Sirainen <tss@iki.fi>
parents: 4388
diff changeset
1292
9928ebb54719 Instead of passing URIs directly to dictionary server, it now accepts only
Timo Sirainen <tss@iki.fi>
parents: 4388
diff changeset
1293 array_append(&ctx->server->dicts, &key, 1);
9928ebb54719 Instead of passing URIs directly to dictionary server, it now accepts only
Timo Sirainen <tss@iki.fi>
parents: 4388
diff changeset
1294 array_append(&ctx->server->dicts, &value, 1);
9928ebb54719 Instead of passing URIs directly to dictionary server, it now accepts only
Timo Sirainen <tss@iki.fi>
parents: 4388
diff changeset
1295 return NULL;
3975
9de8bce1077e Added plugin {} section to dovecot.conf for passing extra environment
Timo Sirainen <tss@iki.fi>
parents: 3921
diff changeset
1296 case SETTINGS_TYPE_PLUGIN:
9de8bce1077e Added plugin {} section to dovecot.conf for passing extra environment
Timo Sirainen <tss@iki.fi>
parents: 3921
diff changeset
1297 key = p_strdup(settings_pool, key);
9de8bce1077e Added plugin {} section to dovecot.conf for passing extra environment
Timo Sirainen <tss@iki.fi>
parents: 3921
diff changeset
1298 value = p_strdup(settings_pool, value);
9de8bce1077e Added plugin {} section to dovecot.conf for passing extra environment
Timo Sirainen <tss@iki.fi>
parents: 3921
diff changeset
1299
9de8bce1077e Added plugin {} section to dovecot.conf for passing extra environment
Timo Sirainen <tss@iki.fi>
parents: 3921
diff changeset
1300 if (ctx->protocol == MAIL_PROTOCOL_ANY ||
9de8bce1077e Added plugin {} section to dovecot.conf for passing extra environment
Timo Sirainen <tss@iki.fi>
parents: 3921
diff changeset
1301 ctx->protocol == MAIL_PROTOCOL_IMAP) {
9de8bce1077e Added plugin {} section to dovecot.conf for passing extra environment
Timo Sirainen <tss@iki.fi>
parents: 3921
diff changeset
1302 array_append(&ctx->server->imap->plugin_envs, &key, 1);
9de8bce1077e Added plugin {} section to dovecot.conf for passing extra environment
Timo Sirainen <tss@iki.fi>
parents: 3921
diff changeset
1303 array_append(&ctx->server->imap->plugin_envs,
9de8bce1077e Added plugin {} section to dovecot.conf for passing extra environment
Timo Sirainen <tss@iki.fi>
parents: 3921
diff changeset
1304 &value, 1);
9de8bce1077e Added plugin {} section to dovecot.conf for passing extra environment
Timo Sirainen <tss@iki.fi>
parents: 3921
diff changeset
1305 }
9de8bce1077e Added plugin {} section to dovecot.conf for passing extra environment
Timo Sirainen <tss@iki.fi>
parents: 3921
diff changeset
1306 if (ctx->protocol == MAIL_PROTOCOL_ANY ||
9de8bce1077e Added plugin {} section to dovecot.conf for passing extra environment
Timo Sirainen <tss@iki.fi>
parents: 3921
diff changeset
1307 ctx->protocol == MAIL_PROTOCOL_POP3) {
9de8bce1077e Added plugin {} section to dovecot.conf for passing extra environment
Timo Sirainen <tss@iki.fi>
parents: 3921
diff changeset
1308 array_append(&ctx->server->pop3->plugin_envs, &key, 1);
9de8bce1077e Added plugin {} section to dovecot.conf for passing extra environment
Timo Sirainen <tss@iki.fi>
parents: 3921
diff changeset
1309 array_append(&ctx->server->pop3->plugin_envs,
9de8bce1077e Added plugin {} section to dovecot.conf for passing extra environment
Timo Sirainen <tss@iki.fi>
parents: 3921
diff changeset
1310 &value, 1);
9de8bce1077e Added plugin {} section to dovecot.conf for passing extra environment
Timo Sirainen <tss@iki.fi>
parents: 3921
diff changeset
1311 }
9de8bce1077e Added plugin {} section to dovecot.conf for passing extra environment
Timo Sirainen <tss@iki.fi>
parents: 3921
diff changeset
1312 return NULL;
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1313 }
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1314
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1315 i_unreached();
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1316 }
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1317
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1318 static struct server_settings *
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1319 create_new_server(const char *name,
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1320 struct settings *imap_defaults,
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1321 struct settings *pop3_defaults)
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1322 {
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1323 struct server_settings *server;
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1324
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1325 server = p_new(settings_pool, struct server_settings, 1);
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1326 server->name = p_strdup(settings_pool, name);
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1327 server->imap = p_new(settings_pool, struct settings, 1);
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1328 server->pop3 = p_new(settings_pool, struct settings, 1);
1723
c090fc199013 Reading global auth_* defaults didn't work
Timo Sirainen <tss@iki.fi>
parents: 1693
diff changeset
1329 server->auth_defaults = default_auth_settings;
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1330
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1331 *server->imap = *imap_defaults;
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1332 *server->pop3 = *pop3_defaults;
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
1333
4596
bf4e98a0de3f Replaced ARRAY_CREATE() macro with [ipt]_array_init() macros. The macro
Timo Sirainen <tss@iki.fi>
parents: 4594
diff changeset
1334 p_array_init(&server->dicts, settings_pool, 4);
9256
d38e0412cfb4 dovecot -n/-a now outputs also lda settings.
Timo Sirainen <tss@iki.fi>
parents: 9182
diff changeset
1335 p_array_init(&server->lda_settings, settings_pool, 12);
4596
bf4e98a0de3f Replaced ARRAY_CREATE() macro with [ipt]_array_init() macros. The macro
Timo Sirainen <tss@iki.fi>
parents: 4594
diff changeset
1336 p_array_init(&server->imap->plugin_envs, settings_pool, 8);
bf4e98a0de3f Replaced ARRAY_CREATE() macro with [ipt]_array_init() macros. The macro
Timo Sirainen <tss@iki.fi>
parents: 4594
diff changeset
1337 p_array_init(&server->pop3->plugin_envs, settings_pool, 8);
3975
9de8bce1077e Added plugin {} section to dovecot.conf for passing extra environment
Timo Sirainen <tss@iki.fi>
parents: 3921
diff changeset
1338
1656
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
1339 server->imap->server = server;
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1340 server->imap->protocol = MAIL_PROTOCOL_IMAP;
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1341 server->imap->login_executable = PKG_LIBEXECDIR"/imap-login";
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1342 server->imap->mail_executable = PKG_LIBEXECDIR"/imap";
4074
dadc6e2cccb8 Replaced mail_use_modules and mail_modules settings with mail_plugins and
Timo Sirainen <tss@iki.fi>
parents: 4030
diff changeset
1343 server->imap->mail_plugin_dir = MODULEDIR"/imap";
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1344
1656
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
1345 server->pop3->server = server;
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1346 server->pop3->protocol = MAIL_PROTOCOL_POP3;
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1347 server->pop3->login_executable = PKG_LIBEXECDIR"/pop3-login";
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1348 server->pop3->mail_executable = PKG_LIBEXECDIR"/pop3";
4074
dadc6e2cccb8 Replaced mail_use_modules and mail_modules settings with mail_plugins and
Timo Sirainen <tss@iki.fi>
parents: 4030
diff changeset
1349 server->pop3->mail_plugin_dir = MODULEDIR"/pop3";
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1350
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1351 return server;
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1352 }
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1353
4907
5b4c9b20eba0 Replaced void *context from a lot of callbacks with the actual context
Timo Sirainen <tss@iki.fi>
parents: 4799
diff changeset
1354 static bool parse_section(const char *type, const char *name,
5b4c9b20eba0 Replaced void *context from a lot of callbacks with the actual context
Timo Sirainen <tss@iki.fi>
parents: 4799
diff changeset
1355 struct settings_parse_ctx *ctx, const char **errormsg)
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1356 {
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1357 struct server_settings *server;
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1358
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1359 if (type == NULL) {
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1360 /* section closing */
3522
3d9667c5b133 Section closing wasn't done properly. Patch by Tom Alsberg
Timo Sirainen <tss@iki.fi>
parents: 3384
diff changeset
1361 if (ctx->level-- > 0) {
2236
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1362 ctx->type = ctx->parent_type;
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1363 ctx->protocol = MAIL_PROTOCOL_ANY;
2236
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1364
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1365 switch (ctx->type) {
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1366 case SETTINGS_TYPE_AUTH_SOCKET:
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1367 ctx->parent_type = SETTINGS_TYPE_AUTH;
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1368 break;
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1369 default:
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1370 ctx->parent_type = SETTINGS_TYPE_ROOT;
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1371 break;
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1372 }
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1373 } else {
2236
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1374 ctx->type = SETTINGS_TYPE_ROOT;
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1375 ctx->server = ctx->root;
1723
c090fc199013 Reading global auth_* defaults didn't work
Timo Sirainen <tss@iki.fi>
parents: 1693
diff changeset
1376 ctx->auth = &ctx->root->auth_defaults;
1656
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
1377 ctx->namespace = NULL;
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1378 }
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1379 return TRUE;
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
1380 }
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
1381
2236
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1382 ctx->level++;
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1383 ctx->parent_type = ctx->type;
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1384
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1385 if (strcmp(type, "server") == 0) {
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1386 if (ctx->type != SETTINGS_TYPE_ROOT) {
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1387 *errormsg = "Server section not allowed here";
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1388 return FALSE;
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1389 }
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1390
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1391 ctx->type = SETTINGS_TYPE_SERVER;
1723
c090fc199013 Reading global auth_* defaults didn't work
Timo Sirainen <tss@iki.fi>
parents: 1693
diff changeset
1392 ctx->server = create_new_server(name, ctx->server->imap,
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1393 ctx->server->pop3);
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1394 server = ctx->root;
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1395 while (server->next != NULL)
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1396 server = server->next;
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1397 server->next = ctx->server;
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1398 return TRUE;
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1399 }
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
1400
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1401 if (strcmp(type, "protocol") == 0) {
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1402 if ((ctx->type != SETTINGS_TYPE_ROOT &&
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1403 ctx->type != SETTINGS_TYPE_SERVER) ||
2236
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1404 ctx->level != 1) {
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1405 *errormsg = "Protocol section not allowed here";
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1406 return FALSE;
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1407 }
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1408
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1409 if (strcmp(name, "imap") == 0)
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1410 ctx->protocol = MAIL_PROTOCOL_IMAP;
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1411 else if (strcmp(name, "pop3") == 0)
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1412 ctx->protocol = MAIL_PROTOCOL_POP3;
3809
00d6d460966c Ignore "protocol lda" section.
Timo Sirainen <tss@iki.fi>
parents: 3724
diff changeset
1413 else if (strcmp(name, "lda") == 0)
00d6d460966c Ignore "protocol lda" section.
Timo Sirainen <tss@iki.fi>
parents: 3724
diff changeset
1414 ctx->protocol = MAIL_PROTOCOL_LDA;
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1415 else {
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1416 *errormsg = "Unknown protocol name";
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1417 return FALSE;
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1418 }
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1419 return TRUE;
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1420 }
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1421
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1422 if (strcmp(type, "auth") == 0) {
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1423 if (ctx->type != SETTINGS_TYPE_ROOT &&
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1424 ctx->type != SETTINGS_TYPE_SERVER) {
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1425 *errormsg = "Auth section not allowed here";
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1426 return FALSE;
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1427 }
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1428
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1429 ctx->type = SETTINGS_TYPE_AUTH;
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1430 ctx->auth = parse_new_auth(ctx->server, name, errormsg);
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1431 return ctx->auth != NULL;
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
1432 }
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
1433
2236
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1434 if (ctx->type == SETTINGS_TYPE_AUTH &&
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1435 strcmp(type, "socket") == 0) {
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1436 ctx->type = SETTINGS_TYPE_AUTH_SOCKET;
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1437 ctx->auth_socket = parse_new_auth_socket(ctx->auth,
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1438 name, errormsg);
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1439 return ctx->auth_socket != NULL;
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1440 }
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1441
3183
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
1442 if (ctx->type == SETTINGS_TYPE_AUTH && strcmp(type, "passdb") == 0) {
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
1443 ctx->type = SETTINGS_TYPE_AUTH_PASSDB;
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
1444 ctx->auth_passdb = auth_passdb_settings_new(ctx->auth, name);
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
1445 return TRUE;
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
1446 }
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
1447
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
1448 if (ctx->type == SETTINGS_TYPE_AUTH && strcmp(type, "userdb") == 0) {
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
1449 ctx->type = SETTINGS_TYPE_AUTH_USERDB;
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
1450 ctx->auth_userdb = auth_userdb_settings_new(ctx->auth, name);
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
1451 return TRUE;
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
1452 }
16ea551957ed Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents: 3166
diff changeset
1453
2236
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1454 if (ctx->type == SETTINGS_TYPE_AUTH_SOCKET) {
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1455 ctx->type = SETTINGS_TYPE_SOCKET;
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1456
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1457 if (strcmp(type, "master") == 0) {
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1458 ctx->socket = &ctx->auth_socket->master;
5706
afc4e8a7354a Master and client sockets have default paths now. Section name only needs to
Timo Sirainen <tss@iki.fi>
parents: 5659
diff changeset
1459 ctx->socket->used = TRUE;
2236
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1460 return TRUE;
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1461 }
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1462
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1463 if (strcmp(type, "client") == 0) {
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1464 ctx->socket = &ctx->auth_socket->client;
5706
afc4e8a7354a Master and client sockets have default paths now. Section name only needs to
Timo Sirainen <tss@iki.fi>
parents: 5659
diff changeset
1465 ctx->socket->used = TRUE;
2236
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1466 return TRUE;
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1467 }
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1468 }
43b82a35888d Dovecot can now connect to externally running dovecot-auth.
Timo Sirainen <tss@iki.fi>
parents: 2141
diff changeset
1469
1656
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
1470 if (strcmp(type, "namespace") == 0) {
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
1471 if (ctx->type != SETTINGS_TYPE_ROOT &&
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
1472 ctx->type != SETTINGS_TYPE_SERVER) {
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
1473 *errormsg = "Namespace section not allowed here";
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
1474 return FALSE;
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
1475 }
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
1476
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
1477 ctx->type = SETTINGS_TYPE_NAMESPACE;
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
1478 ctx->namespace = parse_new_namespace(ctx->server, name,
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
1479 errormsg);
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
1480 return ctx->namespace != NULL;
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
1481 }
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
1482
4393
9928ebb54719 Instead of passing URIs directly to dictionary server, it now accepts only
Timo Sirainen <tss@iki.fi>
parents: 4388
diff changeset
1483 if (strcmp(type, "dict") == 0) {
9928ebb54719 Instead of passing URIs directly to dictionary server, it now accepts only
Timo Sirainen <tss@iki.fi>
parents: 4388
diff changeset
1484 if (ctx->type != SETTINGS_TYPE_ROOT &&
9928ebb54719 Instead of passing URIs directly to dictionary server, it now accepts only
Timo Sirainen <tss@iki.fi>
parents: 4388
diff changeset
1485 ctx->type != SETTINGS_TYPE_SERVER) {
9928ebb54719 Instead of passing URIs directly to dictionary server, it now accepts only
Timo Sirainen <tss@iki.fi>
parents: 4388
diff changeset
1486 *errormsg = "Plugin section not allowed here";
9928ebb54719 Instead of passing URIs directly to dictionary server, it now accepts only
Timo Sirainen <tss@iki.fi>
parents: 4388
diff changeset
1487 return FALSE;
9928ebb54719 Instead of passing URIs directly to dictionary server, it now accepts only
Timo Sirainen <tss@iki.fi>
parents: 4388
diff changeset
1488 }
9928ebb54719 Instead of passing URIs directly to dictionary server, it now accepts only
Timo Sirainen <tss@iki.fi>
parents: 4388
diff changeset
1489
9928ebb54719 Instead of passing URIs directly to dictionary server, it now accepts only
Timo Sirainen <tss@iki.fi>
parents: 4388
diff changeset
1490 ctx->type = SETTINGS_TYPE_DICT;
9928ebb54719 Instead of passing URIs directly to dictionary server, it now accepts only
Timo Sirainen <tss@iki.fi>
parents: 4388
diff changeset
1491 return TRUE;
9928ebb54719 Instead of passing URIs directly to dictionary server, it now accepts only
Timo Sirainen <tss@iki.fi>
parents: 4388
diff changeset
1492 }
9928ebb54719 Instead of passing URIs directly to dictionary server, it now accepts only
Timo Sirainen <tss@iki.fi>
parents: 4388
diff changeset
1493
3975
9de8bce1077e Added plugin {} section to dovecot.conf for passing extra environment
Timo Sirainen <tss@iki.fi>
parents: 3921
diff changeset
1494 if (strcmp(type, "plugin") == 0) {
9de8bce1077e Added plugin {} section to dovecot.conf for passing extra environment
Timo Sirainen <tss@iki.fi>
parents: 3921
diff changeset
1495 if (ctx->type != SETTINGS_TYPE_ROOT &&
9de8bce1077e Added plugin {} section to dovecot.conf for passing extra environment
Timo Sirainen <tss@iki.fi>
parents: 3921
diff changeset
1496 ctx->type != SETTINGS_TYPE_SERVER) {
9de8bce1077e Added plugin {} section to dovecot.conf for passing extra environment
Timo Sirainen <tss@iki.fi>
parents: 3921
diff changeset
1497 *errormsg = "Plugin section not allowed here";
9de8bce1077e Added plugin {} section to dovecot.conf for passing extra environment
Timo Sirainen <tss@iki.fi>
parents: 3921
diff changeset
1498 return FALSE;
9de8bce1077e Added plugin {} section to dovecot.conf for passing extra environment
Timo Sirainen <tss@iki.fi>
parents: 3921
diff changeset
1499 }
9de8bce1077e Added plugin {} section to dovecot.conf for passing extra environment
Timo Sirainen <tss@iki.fi>
parents: 3921
diff changeset
1500
9de8bce1077e Added plugin {} section to dovecot.conf for passing extra environment
Timo Sirainen <tss@iki.fi>
parents: 3921
diff changeset
1501 ctx->type = SETTINGS_TYPE_PLUGIN;
9de8bce1077e Added plugin {} section to dovecot.conf for passing extra environment
Timo Sirainen <tss@iki.fi>
parents: 3921
diff changeset
1502 return TRUE;
9de8bce1077e Added plugin {} section to dovecot.conf for passing extra environment
Timo Sirainen <tss@iki.fi>
parents: 3921
diff changeset
1503 }
9de8bce1077e Added plugin {} section to dovecot.conf for passing extra environment
Timo Sirainen <tss@iki.fi>
parents: 3921
diff changeset
1504
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1505 *errormsg = "Unknown section type";
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1506 return FALSE;
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
1507 }
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
1508
6398
e41718b974d2 Calculate how many log fds login+mail processes can use. If it's lower than
Timo Sirainen <tss@iki.fi>
parents: 6364
diff changeset
1509 static void
6411
6a64e64fa3a3 Renamed __attr_*__ to ATTR_*. Renamed __attrs_used__ to ATTRS_DEFINED.
Timo Sirainen <tss@iki.fi>
parents: 6406
diff changeset
1510 settings_warn_needed_fds(struct server_settings *server ATTR_UNUSED)
6398
e41718b974d2 Calculate how many log fds login+mail processes can use. If it's lower than
Timo Sirainen <tss@iki.fi>
parents: 6364
diff changeset
1511 {
e41718b974d2 Calculate how many log fds login+mail processes can use. If it's lower than
Timo Sirainen <tss@iki.fi>
parents: 6364
diff changeset
1512 #ifdef HAVE_SETRLIMIT
e41718b974d2 Calculate how many log fds login+mail processes can use. If it's lower than
Timo Sirainen <tss@iki.fi>
parents: 6364
diff changeset
1513 struct rlimit rlim;
e41718b974d2 Calculate how many log fds login+mail processes can use. If it's lower than
Timo Sirainen <tss@iki.fi>
parents: 6364
diff changeset
1514 unsigned int fd_count = 0;
e41718b974d2 Calculate how many log fds login+mail processes can use. If it's lower than
Timo Sirainen <tss@iki.fi>
parents: 6364
diff changeset
1515
e41718b974d2 Calculate how many log fds login+mail processes can use. If it's lower than
Timo Sirainen <tss@iki.fi>
parents: 6364
diff changeset
1516 if (getrlimit(RLIMIT_NOFILE, &rlim) < 0)
e41718b974d2 Calculate how many log fds login+mail processes can use. If it's lower than
Timo Sirainen <tss@iki.fi>
parents: 6364
diff changeset
1517 return;
e41718b974d2 Calculate how many log fds login+mail processes can use. If it's lower than
Timo Sirainen <tss@iki.fi>
parents: 6364
diff changeset
1518
e41718b974d2 Calculate how many log fds login+mail processes can use. If it's lower than
Timo Sirainen <tss@iki.fi>
parents: 6364
diff changeset
1519 /* count only log pipes needed for login and mail processes. we need
e41718b974d2 Calculate how many log fds login+mail processes can use. If it's lower than
Timo Sirainen <tss@iki.fi>
parents: 6364
diff changeset
1520 more, but they're the ones that can use up most of the fds */
e41718b974d2 Calculate how many log fds login+mail processes can use. If it's lower than
Timo Sirainen <tss@iki.fi>
parents: 6364
diff changeset
1521 for (; server != NULL; server = server->next) {
6406
ef2170079575 Crashfix if both imap and pop3 protocols weren't enabled.
Timo Sirainen <tss@iki.fi>
parents: 6401
diff changeset
1522 if (server->imap != NULL)
6398
e41718b974d2 Calculate how many log fds login+mail processes can use. If it's lower than
Timo Sirainen <tss@iki.fi>
parents: 6364
diff changeset
1523 fd_count += server->imap->login_max_processes_count;
6406
ef2170079575 Crashfix if both imap and pop3 protocols weren't enabled.
Timo Sirainen <tss@iki.fi>
parents: 6401
diff changeset
1524 if (server->pop3 != NULL)
6398
e41718b974d2 Calculate how many log fds login+mail processes can use. If it's lower than
Timo Sirainen <tss@iki.fi>
parents: 6364
diff changeset
1525 fd_count += server->pop3->login_max_processes_count;
e41718b974d2 Calculate how many log fds login+mail processes can use. If it's lower than
Timo Sirainen <tss@iki.fi>
parents: 6364
diff changeset
1526 fd_count += server->defaults->max_mail_processes;
e41718b974d2 Calculate how many log fds login+mail processes can use. If it's lower than
Timo Sirainen <tss@iki.fi>
parents: 6364
diff changeset
1527 }
e41718b974d2 Calculate how many log fds login+mail processes can use. If it's lower than
Timo Sirainen <tss@iki.fi>
parents: 6364
diff changeset
1528
e41718b974d2 Calculate how many log fds login+mail processes can use. If it's lower than
Timo Sirainen <tss@iki.fi>
parents: 6364
diff changeset
1529 if (rlim.rlim_cur < fd_count) {
e41718b974d2 Calculate how many log fds login+mail processes can use. If it's lower than
Timo Sirainen <tss@iki.fi>
parents: 6364
diff changeset
1530 i_warning("fd limit %d is lower than what Dovecot can use under "
e41718b974d2 Calculate how many log fds login+mail processes can use. If it's lower than
Timo Sirainen <tss@iki.fi>
parents: 6364
diff changeset
1531 "full load (more than %u). Either grow the limit or "
e41718b974d2 Calculate how many log fds login+mail processes can use. If it's lower than
Timo Sirainen <tss@iki.fi>
parents: 6364
diff changeset
1532 "change login_max_processes_count and "
6399
91db6ee4de5e Error message fix.
Timo Sirainen <tss@iki.fi>
parents: 6398
diff changeset
1533 "max_mail_processes settings",
6398
e41718b974d2 Calculate how many log fds login+mail processes can use. If it's lower than
Timo Sirainen <tss@iki.fi>
parents: 6364
diff changeset
1534 (int)rlim.rlim_cur, fd_count);
e41718b974d2 Calculate how many log fds login+mail processes can use. If it's lower than
Timo Sirainen <tss@iki.fi>
parents: 6364
diff changeset
1535 }
e41718b974d2 Calculate how many log fds login+mail processes can use. If it's lower than
Timo Sirainen <tss@iki.fi>
parents: 6364
diff changeset
1536 #endif
e41718b974d2 Calculate how many log fds login+mail processes can use. If it's lower than
Timo Sirainen <tss@iki.fi>
parents: 6364
diff changeset
1537 }
e41718b974d2 Calculate how many log fds login+mail processes can use. If it's lower than
Timo Sirainen <tss@iki.fi>
parents: 6364
diff changeset
1538
4965
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
1539 bool master_settings_read(const char *path, bool nochecks, bool nofixes)
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
1540 {
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1541 struct settings_parse_ctx ctx;
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1542 struct server_settings *server, *prev;
9026
cbeae4ef9af5 Fixed checking if protocols setting contains only invalid values.
Timo Sirainen <tss@iki.fi>
parents: 8955
diff changeset
1543 const struct settings *def;
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1544 struct auth_settings *auth;
1656
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
1545 struct namespace_settings *ns;
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1546 pool_t temp;
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1547
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1548 memset(&ctx, 0, sizeof(ctx));
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1549
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
1550 p_clear(settings_pool);
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1551
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1552 ctx.type = SETTINGS_TYPE_ROOT;
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1553 ctx.protocol = MAIL_PROTOCOL_ANY;
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1554 ctx.server = ctx.root =
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1555 create_new_server("default",
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1556 &default_settings, &default_settings);
1723
c090fc199013 Reading global auth_* defaults didn't work
Timo Sirainen <tss@iki.fi>
parents: 1693
diff changeset
1557 ctx.auth = &ctx.server->auth_defaults;
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1558
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1559 if (!settings_read(path, NULL, parse_setting, parse_section, &ctx))
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1560 return FALSE;
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1561
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1562 if (ctx.level != 0) {
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1563 i_error("Missing '}'");
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1564 return FALSE;
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1565 }
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1566
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1567 /* If server sections were defined, skip the root */
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1568 if (ctx.root->next != NULL)
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1569 ctx.root = ctx.root->next;
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1570
5659
b118198fbfa3 If Dovecot is already running, complain about it instead of wiping out
Timo Sirainen <tss@iki.fi>
parents: 5638
diff changeset
1571 if (!nochecks && !nofixes) {
9026
cbeae4ef9af5 Fixed checking if protocols setting contains only invalid values.
Timo Sirainen <tss@iki.fi>
parents: 8955
diff changeset
1572 def = settings_is_active(ctx.root->imap) ?
5659
b118198fbfa3 If Dovecot is already running, complain about it instead of wiping out
Timo Sirainen <tss@iki.fi>
parents: 5638
diff changeset
1573 ctx.root->imap : ctx.root->pop3;
b118198fbfa3 If Dovecot is already running, complain about it instead of wiping out
Timo Sirainen <tss@iki.fi>
parents: 5638
diff changeset
1574
9026
cbeae4ef9af5 Fixed checking if protocols setting contains only invalid values.
Timo Sirainen <tss@iki.fi>
parents: 8955
diff changeset
1575 path = t_strconcat(def->base_dir, "/master.pid", NULL);
7165
805d0831deb6 If we see that Dovecot is already running, log the error as fatal instead of
Timo Sirainen <tss@iki.fi>
parents: 7089
diff changeset
1576 pid_file_check_running(path);
5659
b118198fbfa3 If Dovecot is already running, complain about it instead of wiping out
Timo Sirainen <tss@iki.fi>
parents: 5638
diff changeset
1577 }
b118198fbfa3 If Dovecot is already running, complain about it instead of wiping out
Timo Sirainen <tss@iki.fi>
parents: 5638
diff changeset
1578
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1579 prev = NULL;
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1580 for (server = ctx.root; server != NULL; server = server->next) {
4388
af61031c746f Settings parser nowadays returns "" instead of NULL when it reads an empty
Timo Sirainen <tss@iki.fi>
parents: 4326
diff changeset
1581 if ((*server->imap->protocols == '\0' ||
af61031c746f Settings parser nowadays returns "" instead of NULL when it reads an empty
Timo Sirainen <tss@iki.fi>
parents: 4326
diff changeset
1582 *server->pop3->protocols == '\0') && !nochecks) {
8692
77c67307d316 If some setting contains a bad value, make sure the error message contains the setting name.
Timo Sirainen <tss@iki.fi>
parents: 8667
diff changeset
1583 i_error("protocols: No protocols given "
77c67307d316 If some setting contains a bad value, make sure the error message contains the setting name.
Timo Sirainen <tss@iki.fi>
parents: 8667
diff changeset
1584 "in configuration file");
1731
687a06278ef5 Don't crash if no protocols were given in config file
Timo Sirainen <tss@iki.fi>
parents: 1725
diff changeset
1585 return FALSE;
687a06278ef5 Don't crash if no protocols were given in config file
Timo Sirainen <tss@iki.fi>
parents: 1725
diff changeset
1586 }
5943
6c3c54dc67fc Allow using --exec-mail imap/pop3 even if imap/pop3 isn't in protocols
Timo Sirainen <tss@iki.fi>
parents: 5887
diff changeset
1587 /* --exec-mail is used if nochecks=TRUE. Allow it regardless
6c3c54dc67fc Allow using --exec-mail imap/pop3 even if imap/pop3 isn't in protocols
Timo Sirainen <tss@iki.fi>
parents: 5887
diff changeset
1588 of what's in protocols setting. */
6c3c54dc67fc Allow using --exec-mail imap/pop3 even if imap/pop3 isn't in protocols
Timo Sirainen <tss@iki.fi>
parents: 5887
diff changeset
1589 if (!settings_is_active(server->imap) && !nochecks) {
4626
4a0c4d5d6735 Allow "protocols = none".
Timo Sirainen <tss@iki.fi>
parents: 4596
diff changeset
1590 if (strcmp(server->imap->protocols, "none") == 0) {
7004
421226dbdce1 If protocols=none, don't check if mail/login executables are usable.
Timo Sirainen <tss@iki.fi>
parents: 6940
diff changeset
1591 server->imap->protocol = MAIL_PROTOCOL_ANY;
4965
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
1592 if (!settings_fix(server->imap, nochecks,
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
1593 nofixes))
4626
4a0c4d5d6735 Allow "protocols = none".
Timo Sirainen <tss@iki.fi>
parents: 4596
diff changeset
1594 return FALSE;
4a0c4d5d6735 Allow "protocols = none".
Timo Sirainen <tss@iki.fi>
parents: 4596
diff changeset
1595 server->defaults = server->imap;
4a0c4d5d6735 Allow "protocols = none".
Timo Sirainen <tss@iki.fi>
parents: 4596
diff changeset
1596 }
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1597 server->imap = NULL;
4626
4a0c4d5d6735 Allow "protocols = none".
Timo Sirainen <tss@iki.fi>
parents: 4596
diff changeset
1598 } else {
4965
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
1599 if (!settings_fix(server->imap, nochecks, nofixes))
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1600 return FALSE;
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1601 server->defaults = server->imap;
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1602 }
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
1603
5943
6c3c54dc67fc Allow using --exec-mail imap/pop3 even if imap/pop3 isn't in protocols
Timo Sirainen <tss@iki.fi>
parents: 5887
diff changeset
1604 if (!settings_is_active(server->pop3) && !nochecks)
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1605 server->pop3 = NULL;
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1606 else {
4965
9246d9308caa -n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents: 4963
diff changeset
1607 if (!settings_fix(server->pop3, nochecks, nofixes))
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1608 return FALSE;
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1609 if (server->defaults == NULL)
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1610 server->defaults = server->pop3;
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1611 }
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
1612
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1613 if (server->defaults == NULL) {
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1614 if (prev == NULL)
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1615 ctx.root = server->next;
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1616 else
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1617 prev->next = server->next;
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1618 } else {
1993
719228a4df3f show error if config is missing auth section
Timo Sirainen <tss@iki.fi>
parents: 1959
diff changeset
1619 auth = server->auths;
719228a4df3f show error if config is missing auth section
Timo Sirainen <tss@iki.fi>
parents: 1959
diff changeset
1620 if (auth == NULL) {
719228a4df3f show error if config is missing auth section
Timo Sirainen <tss@iki.fi>
parents: 1959
diff changeset
1621 i_error("Missing auth section for server %s",
719228a4df3f show error if config is missing auth section
Timo Sirainen <tss@iki.fi>
parents: 1959
diff changeset
1622 server->name);
719228a4df3f show error if config is missing auth section
Timo Sirainen <tss@iki.fi>
parents: 1959
diff changeset
1623 return FALSE;
719228a4df3f show error if config is missing auth section
Timo Sirainen <tss@iki.fi>
parents: 1959
diff changeset
1624 }
719228a4df3f show error if config is missing auth section
Timo Sirainen <tss@iki.fi>
parents: 1959
diff changeset
1625
2311
4558d1b196fd Added --exec-mail option to master. It can be used to parse Dovecot config
Timo Sirainen <tss@iki.fi>
parents: 2236
diff changeset
1626 if (!nochecks) {
4558d1b196fd Added --exec-mail option to master. It can be used to parse Dovecot config
Timo Sirainen <tss@iki.fi>
parents: 2236
diff changeset
1627 for (; auth != NULL; auth = auth->next) {
4558d1b196fd Added --exec-mail option to master. It can be used to parse Dovecot config
Timo Sirainen <tss@iki.fi>
parents: 2236
diff changeset
1628 if (!auth_settings_verify(auth))
4558d1b196fd Added --exec-mail option to master. It can be used to parse Dovecot config
Timo Sirainen <tss@iki.fi>
parents: 2236
diff changeset
1629 return FALSE;
4558d1b196fd Added --exec-mail option to master. It can be used to parse Dovecot config
Timo Sirainen <tss@iki.fi>
parents: 2236
diff changeset
1630 }
4558d1b196fd Added --exec-mail option to master. It can be used to parse Dovecot config
Timo Sirainen <tss@iki.fi>
parents: 2236
diff changeset
1631 ns = server->namespaces;
4558d1b196fd Added --exec-mail option to master. It can be used to parse Dovecot config
Timo Sirainen <tss@iki.fi>
parents: 2236
diff changeset
1632 for (; ns != NULL; ns = ns->next) {
8500
3efcdc45d111 Added alias_for setting for namespaces. Fixes namespace issues with fts.
Timo Sirainen <tss@iki.fi>
parents: 8461
diff changeset
1633 if (!namespace_settings_verify(server, ns))
2311
4558d1b196fd Added --exec-mail option to master. It can be used to parse Dovecot config
Timo Sirainen <tss@iki.fi>
parents: 2236
diff changeset
1634 return FALSE;
4558d1b196fd Added --exec-mail option to master. It can be used to parse Dovecot config
Timo Sirainen <tss@iki.fi>
parents: 2236
diff changeset
1635 }
1656
6025913b581b Namespace configuration.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
1636 }
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1637 prev = server;
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1638 }
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1639 }
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1640
4626
4a0c4d5d6735 Allow "protocols = none".
Timo Sirainen <tss@iki.fi>
parents: 4596
diff changeset
1641 if (ctx.root == NULL) {
4a0c4d5d6735 Allow "protocols = none".
Timo Sirainen <tss@iki.fi>
parents: 4596
diff changeset
1642 /* We aren't actually checking them separately, but if it
4a0c4d5d6735 Allow "protocols = none".
Timo Sirainen <tss@iki.fi>
parents: 4596
diff changeset
1643 contains only invalid protocols we'll get here.. */
4a0c4d5d6735 Allow "protocols = none".
Timo Sirainen <tss@iki.fi>
parents: 4596
diff changeset
1644 i_error("Invalid protocols given in configuration file");
4a0c4d5d6735 Allow "protocols = none".
Timo Sirainen <tss@iki.fi>
parents: 4596
diff changeset
1645 return FALSE;
4a0c4d5d6735 Allow "protocols = none".
Timo Sirainen <tss@iki.fi>
parents: 4596
diff changeset
1646 }
4556
b008e75f650a Allow empty protocols line when using --exec-mail.
Timo Sirainen <tss@iki.fi>
parents: 4554
diff changeset
1647
6398
e41718b974d2 Calculate how many log fds login+mail processes can use. If it's lower than
Timo Sirainen <tss@iki.fi>
parents: 6364
diff changeset
1648 if (!nochecks)
e41718b974d2 Calculate how many log fds login+mail processes can use. If it's lower than
Timo Sirainen <tss@iki.fi>
parents: 6364
diff changeset
1649 settings_warn_needed_fds(ctx.root);
e41718b974d2 Calculate how many log fds login+mail processes can use. If it's lower than
Timo Sirainen <tss@iki.fi>
parents: 6364
diff changeset
1650
1610
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1651 /* settings ok, swap them */
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1652 temp = settings_pool;
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1653 settings_pool = settings2_pool;
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1654 settings2_pool = temp;
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1655
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1656 settings_root = ctx.root;
6850142c4e25 New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents: 1592
diff changeset
1657 return TRUE;
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
1658 }
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
1659
4138
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1660 static void settings_dump(const struct setting_def *def, const void **sets,
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1661 const char **set_names, unsigned int count,
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1662 bool nondefaults, unsigned int indent)
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1663 {
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1664 const char **str;
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1665 unsigned int i;
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1666
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1667 str = t_new(const char *, count);
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1668 for (; def->name != NULL; def++) {
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1669 bool same = TRUE;
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1670
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1671 switch (def->type) {
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1672 case SET_STR: {
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1673 const char *const *strp;
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1674
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1675 for (i = 0; i < count; i++) {
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1676 strp = CONST_PTR_OFFSET(sets[i], def->offset);
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1677 str[i] = *strp != NULL ? *strp : "";
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1678 }
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1679 break;
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1680 }
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1681 case SET_INT: {
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1682 const unsigned int *n;
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1683
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1684 for (i = 0; i < count; i++) {
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1685 n = CONST_PTR_OFFSET(sets[i], def->offset);
7005
d8555d377101 Last dec2str() removal broke dovecot -n/-a for integers.
Timo Sirainen <tss@iki.fi>
parents: 7004
diff changeset
1686 str[i] = dec2str(*n);
4138
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1687 }
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1688 break;
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1689 }
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1690 case SET_BOOL: {
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1691 const bool *b;
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1692
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1693 for (i = 0; i < count; i++) {
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1694 b = CONST_PTR_OFFSET(sets[i], def->offset);
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1695 str[i] = *b ? "yes" : "no";
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1696 }
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1697 break;
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1698 }
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1699 }
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1700
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1701 for (i = 2; i < count; i++) {
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1702 if (strcmp(str[i], str[i-1]) != 0)
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1703 same = FALSE;
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1704 }
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1705 if (same) {
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1706 if (!nondefaults || strcmp(str[0], str[1]) != 0) {
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1707 for (i = 0; i < indent; i++)
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1708 putc(' ', stdout);
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1709 printf("%s: %s\n", def->name, str[1]);
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1710 }
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1711 } else {
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1712 for (i = 0; i < indent; i++)
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1713 putc(' ', stdout);
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1714 for (i = 1; i < count; i++) {
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1715 printf("%s(%s): %s\n", def->name,
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1716 set_names[i], str[i]);
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1717 }
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1718 }
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1719 }
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1720 }
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1721
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1722 static void
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1723 namespace_settings_dump(struct namespace_settings *ns, bool nondefaults)
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1724 {
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1725 const void *sets[2];
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1726
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1727 sets[0] = t_malloc0(sizeof(struct namespace_settings));
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1728 for (; ns != NULL; ns = ns->next) {
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1729 printf("namespace:\n");
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1730 sets[1] = ns;
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1731 settings_dump(namespace_setting_defs, sets, NULL, 2,
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1732 nondefaults, 2);
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1733 }
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1734 }
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1735
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1736 static void auth_settings_dump(struct auth_settings *auth, bool nondefaults)
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1737 {
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1738 const struct auth_passdb_settings *passdb;
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1739 const struct auth_userdb_settings *userdb;
7561
1a58b18652a6 Avoid using shadow variables. Unfortunately -Wshadow also complains about
Timo Sirainen <tss@iki.fi>
parents: 7481
diff changeset
1740 const struct auth_socket_settings *socket_set;
4138
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1741 const void *sets[2], *sets2[2];
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1742 const void *empty_defaults;
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1743
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1744 empty_defaults = t_malloc0(sizeof(struct auth_passdb_settings) +
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1745 sizeof(struct auth_userdb_settings) +
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1746 sizeof(struct auth_socket_settings));
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1747
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1748 sets[0] = &default_auth_settings;
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1749 sets2[0] = empty_defaults;
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1750
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1751 for (; auth != NULL; auth = auth->next) {
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1752 printf("auth %s:\n", auth->name);
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1753 sets[1] = auth;
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1754 settings_dump(auth_setting_defs, sets, NULL, 2, nondefaults, 2);
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1755
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1756 passdb = auth->passdbs;
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1757 for (; passdb != NULL; passdb = passdb->next) {
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1758 printf(" passdb:\n");
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1759 sets2[1] = passdb;
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1760 settings_dump(auth_passdb_setting_defs, sets2, NULL, 2,
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1761 nondefaults, 4);
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1762 }
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1763
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1764 userdb = auth->userdbs;
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1765 for (; userdb != NULL; userdb = userdb->next) {
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1766 printf(" userdb:\n");
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1767 sets2[1] = userdb;
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1768 settings_dump(auth_userdb_setting_defs, sets2, NULL, 2,
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1769 nondefaults, 4);
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1770 }
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1771
7561
1a58b18652a6 Avoid using shadow variables. Unfortunately -Wshadow also complains about
Timo Sirainen <tss@iki.fi>
parents: 7481
diff changeset
1772 socket_set = auth->sockets;
1a58b18652a6 Avoid using shadow variables. Unfortunately -Wshadow also complains about
Timo Sirainen <tss@iki.fi>
parents: 7481
diff changeset
1773 for (; socket_set != NULL; socket_set = socket_set->next) {
4138
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1774 printf(" socket:\n");
7561
1a58b18652a6 Avoid using shadow variables. Unfortunately -Wshadow also complains about
Timo Sirainen <tss@iki.fi>
parents: 7481
diff changeset
1775 sets2[1] = socket_set;
4138
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1776 settings_dump(auth_socket_setting_defs, sets2, NULL, 2,
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1777 nondefaults, 4);
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1778
7561
1a58b18652a6 Avoid using shadow variables. Unfortunately -Wshadow also complains about
Timo Sirainen <tss@iki.fi>
parents: 7481
diff changeset
1779 if (socket_set->client.used) {
4138
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1780 printf(" client:\n");
7561
1a58b18652a6 Avoid using shadow variables. Unfortunately -Wshadow also complains about
Timo Sirainen <tss@iki.fi>
parents: 7481
diff changeset
1781 sets2[1] = &socket_set->client;
4138
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1782 settings_dump(socket_setting_defs, sets2, NULL,
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1783 2, nondefaults, 6);
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1784 }
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1785
7561
1a58b18652a6 Avoid using shadow variables. Unfortunately -Wshadow also complains about
Timo Sirainen <tss@iki.fi>
parents: 7481
diff changeset
1786 if (socket_set->master.used) {
4138
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1787 printf(" master:\n");
7561
1a58b18652a6 Avoid using shadow variables. Unfortunately -Wshadow also complains about
Timo Sirainen <tss@iki.fi>
parents: 7481
diff changeset
1788 sets2[1] = &socket_set->master;
4138
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1789 settings_dump(socket_setting_defs, sets2, NULL,
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1790 2, nondefaults, 6);
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1791 }
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1792 }
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1793 }
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1794 }
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1795
5172
b3e8f4fbab3e dovecot -n/-a dumps now also dict/plugin settings.
Timo Sirainen <tss@iki.fi>
parents: 5098
diff changeset
1796 static void plugin_settings_dump(const struct settings *set)
b3e8f4fbab3e dovecot -n/-a dumps now also dict/plugin settings.
Timo Sirainen <tss@iki.fi>
parents: 5098
diff changeset
1797 {
b3e8f4fbab3e dovecot -n/-a dumps now also dict/plugin settings.
Timo Sirainen <tss@iki.fi>
parents: 5098
diff changeset
1798 const char *const *envs;
b3e8f4fbab3e dovecot -n/-a dumps now also dict/plugin settings.
Timo Sirainen <tss@iki.fi>
parents: 5098
diff changeset
1799 unsigned int i, count;
b3e8f4fbab3e dovecot -n/-a dumps now also dict/plugin settings.
Timo Sirainen <tss@iki.fi>
parents: 5098
diff changeset
1800
b3e8f4fbab3e dovecot -n/-a dumps now also dict/plugin settings.
Timo Sirainen <tss@iki.fi>
parents: 5098
diff changeset
1801 envs = array_get(&set->plugin_envs, &count);
b3e8f4fbab3e dovecot -n/-a dumps now also dict/plugin settings.
Timo Sirainen <tss@iki.fi>
parents: 5098
diff changeset
1802 i_assert((count % 2) == 0);
b3e8f4fbab3e dovecot -n/-a dumps now also dict/plugin settings.
Timo Sirainen <tss@iki.fi>
parents: 5098
diff changeset
1803
b3e8f4fbab3e dovecot -n/-a dumps now also dict/plugin settings.
Timo Sirainen <tss@iki.fi>
parents: 5098
diff changeset
1804 if (count == 0)
b3e8f4fbab3e dovecot -n/-a dumps now also dict/plugin settings.
Timo Sirainen <tss@iki.fi>
parents: 5098
diff changeset
1805 return;
b3e8f4fbab3e dovecot -n/-a dumps now also dict/plugin settings.
Timo Sirainen <tss@iki.fi>
parents: 5098
diff changeset
1806
b3e8f4fbab3e dovecot -n/-a dumps now also dict/plugin settings.
Timo Sirainen <tss@iki.fi>
parents: 5098
diff changeset
1807 printf("plugin:\n");
b3e8f4fbab3e dovecot -n/-a dumps now also dict/plugin settings.
Timo Sirainen <tss@iki.fi>
parents: 5098
diff changeset
1808 for (i = 0; i < count; i += 2)
b3e8f4fbab3e dovecot -n/-a dumps now also dict/plugin settings.
Timo Sirainen <tss@iki.fi>
parents: 5098
diff changeset
1809 printf(" %s: %s\n", envs[i], envs[i+1]);
b3e8f4fbab3e dovecot -n/-a dumps now also dict/plugin settings.
Timo Sirainen <tss@iki.fi>
parents: 5098
diff changeset
1810 }
b3e8f4fbab3e dovecot -n/-a dumps now also dict/plugin settings.
Timo Sirainen <tss@iki.fi>
parents: 5098
diff changeset
1811
b3e8f4fbab3e dovecot -n/-a dumps now also dict/plugin settings.
Timo Sirainen <tss@iki.fi>
parents: 5098
diff changeset
1812 static void dict_settings_dump(const struct server_settings *set)
b3e8f4fbab3e dovecot -n/-a dumps now also dict/plugin settings.
Timo Sirainen <tss@iki.fi>
parents: 5098
diff changeset
1813 {
b3e8f4fbab3e dovecot -n/-a dumps now also dict/plugin settings.
Timo Sirainen <tss@iki.fi>
parents: 5098
diff changeset
1814 const char *const *dicts;
b3e8f4fbab3e dovecot -n/-a dumps now also dict/plugin settings.
Timo Sirainen <tss@iki.fi>
parents: 5098
diff changeset
1815 unsigned int i, count;
b3e8f4fbab3e dovecot -n/-a dumps now also dict/plugin settings.
Timo Sirainen <tss@iki.fi>
parents: 5098
diff changeset
1816
b3e8f4fbab3e dovecot -n/-a dumps now also dict/plugin settings.
Timo Sirainen <tss@iki.fi>
parents: 5098
diff changeset
1817 dicts = array_get(&set->dicts, &count);
b3e8f4fbab3e dovecot -n/-a dumps now also dict/plugin settings.
Timo Sirainen <tss@iki.fi>
parents: 5098
diff changeset
1818 i_assert((count % 2) == 0);
b3e8f4fbab3e dovecot -n/-a dumps now also dict/plugin settings.
Timo Sirainen <tss@iki.fi>
parents: 5098
diff changeset
1819
b3e8f4fbab3e dovecot -n/-a dumps now also dict/plugin settings.
Timo Sirainen <tss@iki.fi>
parents: 5098
diff changeset
1820 if (count == 0)
b3e8f4fbab3e dovecot -n/-a dumps now also dict/plugin settings.
Timo Sirainen <tss@iki.fi>
parents: 5098
diff changeset
1821 return;
b3e8f4fbab3e dovecot -n/-a dumps now also dict/plugin settings.
Timo Sirainen <tss@iki.fi>
parents: 5098
diff changeset
1822
b3e8f4fbab3e dovecot -n/-a dumps now also dict/plugin settings.
Timo Sirainen <tss@iki.fi>
parents: 5098
diff changeset
1823 printf("dict:\n");
b3e8f4fbab3e dovecot -n/-a dumps now also dict/plugin settings.
Timo Sirainen <tss@iki.fi>
parents: 5098
diff changeset
1824 for (i = 0; i < count; i += 2)
b3e8f4fbab3e dovecot -n/-a dumps now also dict/plugin settings.
Timo Sirainen <tss@iki.fi>
parents: 5098
diff changeset
1825 printf(" %s: %s\n", dicts[i], dicts[i+1]);
b3e8f4fbab3e dovecot -n/-a dumps now also dict/plugin settings.
Timo Sirainen <tss@iki.fi>
parents: 5098
diff changeset
1826 }
b3e8f4fbab3e dovecot -n/-a dumps now also dict/plugin settings.
Timo Sirainen <tss@iki.fi>
parents: 5098
diff changeset
1827
9256
d38e0412cfb4 dovecot -n/-a now outputs also lda settings.
Timo Sirainen <tss@iki.fi>
parents: 9182
diff changeset
1828 static void lda_settings_dump(const struct server_settings *set)
d38e0412cfb4 dovecot -n/-a now outputs also lda settings.
Timo Sirainen <tss@iki.fi>
parents: 9182
diff changeset
1829 {
d38e0412cfb4 dovecot -n/-a now outputs also lda settings.
Timo Sirainen <tss@iki.fi>
parents: 9182
diff changeset
1830 const char *const *ldas;
d38e0412cfb4 dovecot -n/-a now outputs also lda settings.
Timo Sirainen <tss@iki.fi>
parents: 9182
diff changeset
1831 unsigned int i, count;
d38e0412cfb4 dovecot -n/-a now outputs also lda settings.
Timo Sirainen <tss@iki.fi>
parents: 9182
diff changeset
1832
d38e0412cfb4 dovecot -n/-a now outputs also lda settings.
Timo Sirainen <tss@iki.fi>
parents: 9182
diff changeset
1833 ldas = array_get(&set->lda_settings, &count);
d38e0412cfb4 dovecot -n/-a now outputs also lda settings.
Timo Sirainen <tss@iki.fi>
parents: 9182
diff changeset
1834 i_assert((count % 2) == 0);
d38e0412cfb4 dovecot -n/-a now outputs also lda settings.
Timo Sirainen <tss@iki.fi>
parents: 9182
diff changeset
1835
d38e0412cfb4 dovecot -n/-a now outputs also lda settings.
Timo Sirainen <tss@iki.fi>
parents: 9182
diff changeset
1836 if (count == 0)
d38e0412cfb4 dovecot -n/-a now outputs also lda settings.
Timo Sirainen <tss@iki.fi>
parents: 9182
diff changeset
1837 return;
d38e0412cfb4 dovecot -n/-a now outputs also lda settings.
Timo Sirainen <tss@iki.fi>
parents: 9182
diff changeset
1838
d38e0412cfb4 dovecot -n/-a now outputs also lda settings.
Timo Sirainen <tss@iki.fi>
parents: 9182
diff changeset
1839 printf("lda:\n");
d38e0412cfb4 dovecot -n/-a now outputs also lda settings.
Timo Sirainen <tss@iki.fi>
parents: 9182
diff changeset
1840 for (i = 0; i < count; i += 2)
d38e0412cfb4 dovecot -n/-a now outputs also lda settings.
Timo Sirainen <tss@iki.fi>
parents: 9182
diff changeset
1841 printf(" %s: %s\n", ldas[i], ldas[i+1]);
d38e0412cfb4 dovecot -n/-a now outputs also lda settings.
Timo Sirainen <tss@iki.fi>
parents: 9182
diff changeset
1842 }
d38e0412cfb4 dovecot -n/-a now outputs also lda settings.
Timo Sirainen <tss@iki.fi>
parents: 9182
diff changeset
1843
4138
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1844 void master_settings_dump(struct server_settings *set, bool nondefaults)
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1845 {
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1846 const void *sets[4];
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1847 const char *set_names[4];
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1848 unsigned int count;
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1849
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1850 sets[0] = &default_settings;
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1851 sets[1] = set->defaults;
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1852
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1853 set_names[0] = NULL;
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1854 set_names[1] = "default";
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1855
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1856 count = 2;
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1857 if (set->imap != NULL) {
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1858 sets[count] = set->imap;
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1859 set_names[count] = "imap";
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1860 count++;
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1861 }
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1862 if (set->pop3 != NULL) {
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1863 sets[count] = set->pop3;
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1864 set_names[count] = "pop3";
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1865 count++;
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1866 }
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1867 settings_dump(setting_defs, sets, set_names, count, nondefaults, 0);
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1868 namespace_settings_dump(set->namespaces, nondefaults);
9256
d38e0412cfb4 dovecot -n/-a now outputs also lda settings.
Timo Sirainen <tss@iki.fi>
parents: 9182
diff changeset
1869 lda_settings_dump(set);
4138
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1870 auth_settings_dump(set->auths, nondefaults);
5172
b3e8f4fbab3e dovecot -n/-a dumps now also dict/plugin settings.
Timo Sirainen <tss@iki.fi>
parents: 5098
diff changeset
1871 plugin_settings_dump(set->defaults);
b3e8f4fbab3e dovecot -n/-a dumps now also dict/plugin settings.
Timo Sirainen <tss@iki.fi>
parents: 5098
diff changeset
1872 dict_settings_dump(set);
4138
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1873 }
f9a6381adbe3 Added -a and -n parameters to dovecot to dump all/nondefault settings. A
Timo Sirainen <tss@iki.fi>
parents: 4120
diff changeset
1874
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
1875 void master_settings_init(void)
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
1876 {
3294
4600e247da86 Raised initial pool sizes.
Timo Sirainen <tss@iki.fi>
parents: 3183
diff changeset
1877 settings_pool = pool_alloconly_create("settings", 4096);
4600e247da86 Raised initial pool sizes.
Timo Sirainen <tss@iki.fi>
parents: 3183
diff changeset
1878 settings2_pool = pool_alloconly_create("settings2", 4096);
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
1879 }
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
1880
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
1881 void master_settings_deinit(void)
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
1882 {
6428
7cad076906eb pool_unref() now takes ** pointer.
Timo Sirainen <tss@iki.fi>
parents: 6411
diff changeset
1883 pool_unref(&settings_pool);
7cad076906eb pool_unref() now takes ** pointer.
Timo Sirainen <tss@iki.fi>
parents: 6411
diff changeset
1884 pool_unref(&settings2_pool);
1058
3b8fb7bf7ecc Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
1885 }