annotate doc/configuration.txt @ 1741:9df02b1533b3 HEAD

Removed most of the license comments from src/lib/*.c. It's just fine to keep them in a single COPYING.MIT file. Changed a few other comments as well.
author Timo Sirainen <tss@iki.fi>
date Wed, 27 Aug 2003 00:18:16 +0300
parents 1429fcb2e577
children 1d15be422201
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1214
1429fcb2e577 updates
Timo Sirainen <tss@iki.fi>
parents: 997
diff changeset
1 Quick setup
1429fcb2e577 updates
Timo Sirainen <tss@iki.fi>
parents: 997
diff changeset
2 -----------
1429fcb2e577 updates
Timo Sirainen <tss@iki.fi>
parents: 997
diff changeset
3
1429fcb2e577 updates
Timo Sirainen <tss@iki.fi>
parents: 997
diff changeset
4 If you use mbox, make sure that mbox_locks is set up the same way as rest
1429fcb2e577 updates
Timo Sirainen <tss@iki.fi>
parents: 997
diff changeset
5 of your system.
1429fcb2e577 updates
Timo Sirainen <tss@iki.fi>
parents: 997
diff changeset
6
1429fcb2e577 updates
Timo Sirainen <tss@iki.fi>
parents: 997
diff changeset
7 Check client_workarounds and enable those you think you need.
1429fcb2e577 updates
Timo Sirainen <tss@iki.fi>
parents: 997
diff changeset
8
1429fcb2e577 updates
Timo Sirainen <tss@iki.fi>
parents: 997
diff changeset
9 If you need to create new SSL certificate, edit dovecot-openssl.cnf and
1429fcb2e577 updates
Timo Sirainen <tss@iki.fi>
parents: 997
diff changeset
10 run mkcert.sh.
1429fcb2e577 updates
Timo Sirainen <tss@iki.fi>
parents: 997
diff changeset
11
1429fcb2e577 updates
Timo Sirainen <tss@iki.fi>
parents: 997
diff changeset
12 Going through settings in dovecot-example.conf is a good idea, they should
1429fcb2e577 updates
Timo Sirainen <tss@iki.fi>
parents: 997
diff changeset
13 be well commented.
1429fcb2e577 updates
Timo Sirainen <tss@iki.fi>
parents: 997
diff changeset
14
1429fcb2e577 updates
Timo Sirainen <tss@iki.fi>
parents: 997
diff changeset
15
429
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
16 Authentication
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
17 --------------
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
18
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
19 See auth.txt.
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
20
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
21
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
22 Maildir or mbox?
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
23 ----------------
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
24
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
25 Maildir stores each message into a separate file, message flags are stored
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
26 into file name. These make maildir very unlikely to get corrupted in any
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
27 way.
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
28
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
29 Reading lots of mails from maildir is somewhat slower than from mbox, since
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
30 each mail file needs to be separately opened. Updating the mailbox however
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
31 is much faster than with mbox.
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
32
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
33 With larger mailboxes it's a good idea to use a filesystem which uses
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
34 b-tree or hash indexes for directories, for example ReiserFS, XFS or JFS.
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
35 ext2 and ext3 have some patches to implement this but they're not in Linux
1214
1429fcb2e577 updates
Timo Sirainen <tss@iki.fi>
parents: 997
diff changeset
36 2.4.20 yet. I'm not sure about *BSD's filesystems, FreeBSD's ufs had some
429
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
37 support for hashes.
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
38
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
39 mbox is just a single file where new mails are appeneded, flags are stored
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
40 in each message's headers. Deleting mails is slow as the rest of the file
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
41 needs to be moved over the deleted mail. Changing message flags is usually
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
42 quite fast since we use some tricks to avoid copying too much data, but it
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
43 may result as well in large data copying.
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
44
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
45 Besides the copying being slow, it's also a bit dangerous. If the copying
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
46 is aborted (crashed, killed, power lost) the mail file may be left in
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
47 somewhat corrupted stated.
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
48
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
49 Bottom line: mbox is good for read-only mailboxes, maildir for everything
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
50 else.
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
51
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
52
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
53 Creating new users
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
54 ------------------
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
55
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
56 Dovecot is interested in only one thing - being able to find the user's
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
57 mail directory. With maildir you need to do mkdir ~user/Maildir, with mbox
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
58 mkdir ~user/mail.
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
59
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
60
977
45d04b5dcd24 updated
Timo Sirainen <tss@iki.fi>
parents: 664
diff changeset
61 Chrooting
45d04b5dcd24 updated
Timo Sirainen <tss@iki.fi>
parents: 664
diff changeset
62 ---------
45d04b5dcd24 updated
Timo Sirainen <tss@iki.fi>
parents: 664
diff changeset
63
45d04b5dcd24 updated
Timo Sirainen <tss@iki.fi>
parents: 664
diff changeset
64 Chrooting can be used for extra security hardening to prevent users from
1214
1429fcb2e577 updates
Timo Sirainen <tss@iki.fi>
parents: 997
diff changeset
65 having full access to the system in case some security hole was found. If
1429fcb2e577 updates
Timo Sirainen <tss@iki.fi>
parents: 997
diff changeset
66 used incorrectly, it can also allow local users to gain root privileges.
1429fcb2e577 updates
Timo Sirainen <tss@iki.fi>
parents: 997
diff changeset
67 This is possible by hardlinking setuid binaries inside the chroot jail and
1429fcb2e577 updates
Timo Sirainen <tss@iki.fi>
parents: 997
diff changeset
68 tricking them. There's at least two possibilities: create your own
977
45d04b5dcd24 updated
Timo Sirainen <tss@iki.fi>
parents: 664
diff changeset
69 chroot/etc/passwd and run /bin/su, or create your own chroot/lib/libc.so
45d04b5dcd24 updated
Timo Sirainen <tss@iki.fi>
parents: 664
diff changeset
70 and run any setuid binary.
45d04b5dcd24 updated
Timo Sirainen <tss@iki.fi>
parents: 664
diff changeset
71
45d04b5dcd24 updated
Timo Sirainen <tss@iki.fi>
parents: 664
diff changeset
72 If you want chrooting, make sure that no local users can hardlink setuid
45d04b5dcd24 updated
Timo Sirainen <tss@iki.fi>
parents: 664
diff changeset
73 binaries inside the jail. The safest way to do this would be to mount those
45d04b5dcd24 updated
Timo Sirainen <tss@iki.fi>
parents: 664
diff changeset
74 filesystems with nosuid flag.
45d04b5dcd24 updated
Timo Sirainen <tss@iki.fi>
parents: 664
diff changeset
75
45d04b5dcd24 updated
Timo Sirainen <tss@iki.fi>
parents: 664
diff changeset
76
429
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
77 System with local users
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
78 -----------------------
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
79
977
45d04b5dcd24 updated
Timo Sirainen <tss@iki.fi>
parents: 664
diff changeset
80 It's possible to use either the default system passwords or create separate
45d04b5dcd24 updated
Timo Sirainen <tss@iki.fi>
parents: 664
diff changeset
81 IMAP passwords using eg. passwd-file authentication. If you use system
45d04b5dcd24 updated
Timo Sirainen <tss@iki.fi>
parents: 664
diff changeset
82 passwords, disable_plaintext_auth = yes is a very good idea.
429
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
83
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
84
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
85 System without local users
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
86 --------------------------
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
87
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
88 First you'll need to decide if you want to use one or multiple system uids.
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
89 For example one for everything, one per each virtual domain or one per each
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
90 user. In any case the uids should be different than the uids used for other
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
91 parts of Dovecot (login or auth processes).
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
92
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
93 Having one uid per user would mean that in case of a security hole in
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
94 Dovecot, the user still couldn't read other peoples mails. Use this if
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
95 possible.
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
96
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
97 chrooting imap processes would be good idea, but you should still think
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
98 about having the filesystem nosuid-mounted.
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
99
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
100
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
101 Performance
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
102 -----------
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
103
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
104 Usually the bottleneck with IMAP server is disk I/O, so get fast disks and
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
105 lots of memory to act as operating system's file cache.
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
106
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
107 One performance tweak is to save mails with CR+LFs instead of just LFs.
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
108 This can result in faster indexing of mails and smaller CPU usage when
977
45d04b5dcd24 updated
Timo Sirainen <tss@iki.fi>
parents: 664
diff changeset
109 sending mails. With Linux, FreeBSD and Solaris 9 Dovecot can use sendfile()
45d04b5dcd24 updated
Timo Sirainen <tss@iki.fi>
parents: 664
diff changeset
110 syscall to send such mails. However extra CRs do increase the mail size,
45d04b5dcd24 updated
Timo Sirainen <tss@iki.fi>
parents: 664
diff changeset
111 meaning more I/O and potentially losing the gained performance. You can
45d04b5dcd24 updated
Timo Sirainen <tss@iki.fi>
parents: 664
diff changeset
112 enable this for mails saved by Dovecot by setting mail_save_crlf = yes. For
45d04b5dcd24 updated
Timo Sirainen <tss@iki.fi>
parents: 664
diff changeset
113 mails saved by your mailer you'll need to do something else, not yet
45d04b5dcd24 updated
Timo Sirainen <tss@iki.fi>
parents: 664
diff changeset
114 covered by this documentation.
429
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
115
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
116 COPY command can be made much faster with maildir by setting
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
117 maildir_copy_with_hardlinks = yes. This is problematic only if something
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
118 modifies the mail in one folder but doesn't want it modified in the others.
977
45d04b5dcd24 updated
Timo Sirainen <tss@iki.fi>
parents: 664
diff changeset
119 I don't know any MUA which would modify mail files directly. IMAP protocol
45d04b5dcd24 updated
Timo Sirainen <tss@iki.fi>
parents: 664
diff changeset
120 also requires that the mails don't change, so it would be problematic in
45d04b5dcd24 updated
Timo Sirainen <tss@iki.fi>
parents: 664
diff changeset
121 any case.
429
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
122
431
5392919ed5dd updated
Timo Sirainen <tss@iki.fi>
parents: 429
diff changeset
123 Logins can be handled either fast or securely. Doing it securely means
429
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
124 creating a new login process for each connection instead of having only
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
125 few processes handling multiple connections. The problem with sharing
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
126 connections is that if a security hole is found, the attacker could hijack
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
127 other peoples connections or steal their passwords if plaintext
431
5392919ed5dd updated
Timo Sirainen <tss@iki.fi>
parents: 429
diff changeset
128 authentication was used (even with SSL/TLS). If you want to be fast,
5392919ed5dd updated
Timo Sirainen <tss@iki.fi>
parents: 429
diff changeset
129 set login_process_per_user = no.
429
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
130
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
131 Dovecot's memory usage is very small. Almost all memory usage you see with
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
132 ps/top is from mmap()ed files, meaning that operating system can drop any
663
4b02fde791dd updated
Timo Sirainen <tss@iki.fi>
parents: 472
diff changeset
133 of those memory pages at any time without needing to swap them. With
997
6abffe419582 updated memory usage counts
Timo Sirainen <tss@iki.fi>
parents: 977
diff changeset
134 Linux/x86 Dovecot usually takes about 70-100kB of non-mmaped memory. Some
6abffe419582 updated memory usage counts
Timo Sirainen <tss@iki.fi>
parents: 977
diff changeset
135 commands such as SORT and THREAD will use more memory though (around 700kB
977
45d04b5dcd24 updated
Timo Sirainen <tss@iki.fi>
parents: 664
diff changeset
136 for threading 4600 mails).
429
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
137
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
138
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
139 Rootless Dovecot
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
140 ----------------
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
141
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
142 It's possible to make Dovecot run under one uid, not requiring root
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
143 privileges at any point. This shouldn't be thought of as any security
977
45d04b5dcd24 updated
Timo Sirainen <tss@iki.fi>
parents: 664
diff changeset
144 feature, but instead just as a way for non-admins to run imap server in
664
fa8e1eb0b881 updates
Timo Sirainen <tss@iki.fi>
parents: 663
diff changeset
145 their favourite mail server.
429
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
146
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
147 If you do think of this as a good way to achieve security, ask yourself
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
148 which is worse:
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
149
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
150 a) near-zero possibility to get root privileges, small possibility to get
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
151 into system as imapd user chrooted into empty directory without logging in,
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
152 small possibility to get logged user's privileges but no possiblity to read
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
153 others mails since they're saved with different uid (plus you might be
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
154 chrooted to your own mailbox).
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
155
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
156 b) zero possibility to get root privileges through Dovecot, small
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
157 possibility to get into system as mail user, possibly even without logging
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
158 in, and being able to read everyone's mail (and finally getting roots by
664
fa8e1eb0b881 updates
Timo Sirainen <tss@iki.fi>
parents: 663
diff changeset
159 exploiting some local just discovered vulnerability, unless you bothered to
429
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
160 set up special chroot environment).
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
161
58899a413569 Documentation updates.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
162 Anyway, doing it is easy. configure --prefix=$HOME, make install, change
435
06576f1d9e69 doc updates
Timo Sirainen <tss@iki.fi>
parents: 431
diff changeset
163 login_user and auth_user in dovecot.conf to your user id, disable all
06576f1d9e69 doc updates
Timo Sirainen <tss@iki.fi>
parents: 431
diff changeset
164 chrooting and use passwd-file authentication.