Mercurial > dovecot > original-hg > dovecot-1.2
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 |
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 | 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 | 27 #ifdef HAVE_SYS_RESOURCE_H |
28 # include <sys/resource.h> | |
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 | 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 | 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 | 154 |
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 | 165 |
166 { 0, NULL, 0 } | |
167 }; | |
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 | 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 | 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 | 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 | 335 MEMBER(process_size) 256, |
336 | |
337 /* .. */ | |
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 | 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 | 497 const char *name; |
498 | |
499 name = ns->prefix != NULL ? ns->prefix : ""; | |
500 | |
501 if (ns->separator != NULL && | |
502 ns->separator[0] != '\0' && ns->separator[1] != '\0') { | |
503 i_error("Namespace '%s': " | |
504 "Hierarchy separator must be only one character long", | |
505 name); | |
506 return FALSE; | |
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 | 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 | 534 return TRUE; |
535 } | |
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 | 1187 static struct namespace_settings * |
1188 namespace_settings_new(struct server_settings *server, const char *type) | |
1189 { | |
1190 struct namespace_settings *ns, **ns_p; | |
1191 | |
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 | 1194 |
1195 ns->parent = server; | |
1196 ns->type = str_lcase(p_strdup(settings_pool, type)); | |
1197 | |
1198 ns_p = &server->namespaces; | |
1199 while (*ns_p != NULL) | |
1200 ns_p = &(*ns_p)->next; | |
1201 *ns_p = ns; | |
1202 | |
1203 return ns; | |
1204 } | |
1205 | |
1206 static struct namespace_settings * | |
1207 parse_new_namespace(struct server_settings *server, const char *name, | |
1208 const char **errormsg) | |
1209 { | |
1210 if (strcasecmp(name, "private") != 0 && | |
1211 strcasecmp(name, "shared") != 0 && | |
1212 strcasecmp(name, "public") != 0) { | |
1213 *errormsg = "Unknown namespace type"; | |
1214 return NULL; | |
1215 } | |
1216 | |
1217 return namespace_settings_new(server, name); | |
1218 } | |
1219 | |
1063 | 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 | 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 | 1281 case SETTINGS_TYPE_NAMESPACE: |
1282 return parse_setting_from_defs(settings_pool, | |
1283 namespace_setting_defs, | |
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 | 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 | 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 | 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 | 1413 else if (strcmp(name, "lda") == 0) |
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 | 1470 if (strcmp(type, "namespace") == 0) { |
1471 if (ctx->type != SETTINGS_TYPE_ROOT && | |
1472 ctx->type != SETTINGS_TYPE_SERVER) { | |
1473 *errormsg = "Namespace section not allowed here"; | |
1474 return FALSE; | |
1475 } | |
1476 | |
1477 ctx->type = SETTINGS_TYPE_NAMESPACE; | |
1478 ctx->namespace = parse_new_namespace(ctx->server, name, | |
1479 errormsg); | |
1480 return ctx->namespace != NULL; | |
1481 } | |
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 | 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 | 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 | 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 | 1594 return FALSE; |
1595 server->defaults = server->imap; | |
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 | 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 | 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 | 1641 if (ctx.root == NULL) { |
1642 /* We aren't actually checking them separately, but if it | |
1643 contains only invalid protocols we'll get here.. */ | |
1644 i_error("Invalid protocols given in configuration file"); | |
1645 return FALSE; | |
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 | 1877 settings_pool = pool_alloconly_create("settings", 4096); |
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 } |