annotate docs/formats.txt @ 0:ada5e610ab86

imap-2007e
author yuuji@gentei.org
date Mon, 14 Sep 2009 15:17:45 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
1 /* ========================================================================
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
2 * Copyright 1988-2006 University of Washington
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
3 *
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
4 * Licensed under the Apache License, Version 2.0 (the "License");
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
5 * you may not use this file except in compliance with the License.
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
6 * You may obtain a copy of the License at
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
7 *
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
8 * http://www.apache.org/licenses/LICENSE-2.0
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
9 *
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
10 *
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
11 * ========================================================================
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
12 */
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
13
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
14 Mailbox Format Characteristics
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
15 Mark Crispin
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
16 11 December 2006
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
17
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
18
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
19 When a mailbox storage technology uses local files and
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
20 directories directly, the file(s) and directories are layed out in a
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
21 mailbox format.
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
22
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
23 I. Flat-File Formats
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
24
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
25 In these formats, a mailbox and all the messages inside are a
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
26 single file on the filesystem. The mailbox name is the name of the
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
27 file in the filesystem, relative to the user's "mail home directory."
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
28
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
29 A flat-file format mailbox is always a file, never a directory.
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
30 This means that it is impossible to have a flat-file format mailbox
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
31 that has inferior mailbox names under it (so-called "dual-usage"
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
32 mailboxes). For some inexplicable reason, some people want this.
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
33
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
34 The mail home directory is usually the same as the user login
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
35 home directory if that concept is meaningful; otherwise, it is some
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
36 other default directory (e.g. "C:\My Documents" on Windows 98). This
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
37 can be redefined by modifying the c-client source code or in an
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
38 application via the SET_HOMEDIR mail_parameters() call.
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
39
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
40 For example, a mailbox named "project" is likely to be found in
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
41 the file "project" in the user's home directory. Similarly, a mailbox
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
42 named "test/trial1" (assuming a UNIX system) is likely to be found in
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
43 the file "trial1" in the subdirectory "test" in the user's home
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
44 directory.
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
45
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
46 Note that the name "INBOX" has special semantics and rules, as
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
47 described in the file naming.txt.
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
48
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
49 The following flat-file formats are supported by c-client as of
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
50 the time of this writing:
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
51
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
52 . unix This is the traditional UNIX mailbox format, in use for nearly
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
53 30 years. It uses a line starting with "From " to indicate
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
54 start of message, and stores the message status inside the
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
55 RFC822 message header.
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
56
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
57 unix is not particularly efficient; the entire mailbox file
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
58 must be read when the mailbox is open, and when reading message
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
59 texts it is necessary to convert the newline convention to
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
60 Internet standard CR LF form. unix preserves UIDs, and allows
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
61 the creation of keywords.
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
62
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
63 Only one process may have a unix-format mailbox open
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
64 read/write at a time.
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
65
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
66 . mmdf This is the format used by the MMDF mailer. It uses a line
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
67 consisting of 4 <CTRL/A> (0x01) characters to indicate start
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
68 and end of message. Optionally, there may also be a unix
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
69 format "From " line. It otherwise has the same
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
70 characteristics as unix format.
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
71
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
72 . mbx This is the current preferred mailbox format. It can be
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
73 handled quite efficiently by c-client, without the problems
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
74 that exist with unix and mmdf formats. Messages are stored
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
75 in Internet standard CR LF format.
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
76
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
77 mbx permits shared access, including shared expunge. It
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
78 preserves UIDs, and allows the creation of keywords.
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
79
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
80 . mtx This is supported for compatibility with the past. This is
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
81 the old Tenex/TOPS-20 mail.txt format. It can be handled
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
82 quite efficiently by c-client, and has most of the
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
83 characteristics of mbx format.
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
84
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
85 mtx is deficient in that it does not support shared expunge;
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
86 it has no means to store UIDs; and it has no way to define
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
87 keywords except through an external configuration file.
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
88
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
89 . tenex This is supported for compatibility with the past. This is
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
90 the old Columbia MM format. This is similar to mtx format,
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
91 only it uses UNIX-style bare-LF newlines instead of CR LF
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
92 newlines, thus incurring a performance penalty for newline
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
93 conversion.
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
94
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
95 . phile This is not strictly a format. Any file which is not in a
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
96 recognized format is in phile format, which treats the entire
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
97 contents of the file as a single message.
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
98
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
99
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
100 II. File/Message Formats
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
101
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
102 In these formats, a mailbox is a directory, and each the messages
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
103 inside are separate files inside the directory. The file names of
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
104 these files are generally the text form of a number, which also
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
105 matches the UID of the message.
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
106
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
107 In the case of mx, the mailbox name is the name of the directory
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
108 in the filesystem, relative to the user's "mail home directory." In
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
109 the case of news and mh, the mailbox name is in a separate namespace
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
110 as described in the file naming.txt.
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
111
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
112 A file/message format mailbox is always a directory. This means
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
113 that it is possible to have a file/message format mailbox that has
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
114 inferior mailbox names under it (so-called "dual-usage" mailboxes).
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
115 For some inexplicable reason, some people want this.
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
116
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
117 Note that the name "INBOX" has special semantics and rules, as
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
118 described in the file naming.txt.
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
119
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
120 The following file/message formats are supported by c-client as of
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
121 the time of this writing:
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
122
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
123 . mx This is an experimental format, and may be removed in a future
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
124 release. An mx format mailbox has a .mxindex file which holds
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
125 the message status and unique identifiers. Messages are
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
126 stored in Internet standard CF LF form, so the file size of
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
127 the message file equals the size of the message.
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
128
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
129 mx is somewhat inefficient; the entire directory must be read
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
130 and each file stat()'d. We found it intolerable for a
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
131 moderate sized mailbox (2000 messages) and have more or less
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
132 abandoned it.
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
133
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
134 . mh This is supported for compatibility with the past. This is
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
135 the format used by the old mh program.
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
136
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
137 mh is very inefficient; the entire directory must be read
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
138 and each file stat()'d, and in order to determine the size
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
139 of a message, the entire file must be read and newline
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
140 conversion performed.
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
141
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
142 mh is deficient in that it does not support any permanent
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
143 flags or keywords; and has no means to store UIDs (because
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
144 the mh "compress" command renames all the files, that's
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
145 why).
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
146
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
147 . news This is an export of the local filesystem's news spool, e.g.
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
148 /var/spool/news. Access to mailboxes in news format is read
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
149 only; however, message "deleted" status is preserved in a
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
150 .newsrc file in the user's home directory. There is no other
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
151 status or keywords.
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
152
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
153 news is very inefficient; the entire directory must be
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
154 read and each file stat()'d, and in order to determine the
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
155 size of a message, the entire file must be read and newline
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
156 conversion performed.
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
157
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
158 news is deficient in that it does not support permanent flags
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
159 other than deleted; does not support keywords; and has no
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
160 expunge.
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
161
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
162
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
163 Soapbox on File/Message Formats
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
164
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
165 If it sounds from the above descriptions that we're not putting
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
166 too much effort into file/message formats, you are correct.
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
167
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
168 There's a general reason why file/message formats are a bad idea.
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
169 Just about every filesystem in existance serializes file creation and
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
170 deletions because these manipulate the free space map. This turns out
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
171 to be an enormous problem when you start creating/deleting more than a
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
172 few messages per second; you spend all your time thrashing in the
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
173 filesystem.
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
174
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
175 It is also extremely slow to do a text search through a
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
176 file/message format mailbox. All of those open()s and close()s really
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
177 add up to major filesystem thrashing.
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
178
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
179
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
180 What about Cyrus and Maildir?
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
181
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
182 Both formats are vulnerable to the filesystem thrashing outlined
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
183 above.
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
184
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
185 The Cyrus format used by CMU's Cyrus server (and Esys' server)
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
186 has a special associated flat file in each directory that contains
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
187 extensive data (including pre-parsed ENVELOPEs and BODYSTRUCTUREs)
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
188 about the messages. Put another way, it's a (considerably) more
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
189 featureful form of mx. It also uses certain operating system
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
190 facilities (e.g. file/memory mapping) which are not available on older
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
191 systems, at a cost of much more limited portability than c-client.
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
192 These considerably ameliorate the fundamental problems with
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
193 file/message formats; in fact, Cyrus is halfway to being a database.
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
194 Rather than support Cyrus format in c-client, you should run Cyrus or
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
195 Esys if you want that format.
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
196
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
197 The Maildir format used by qmail has all of the performance
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
198 disadvantages of mh noted above, with the additional problem that the
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
199 files are renamed in order to change their status so you end up having
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
200 to rescan the directory frequently to locate the current names
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
201 (particularly in a shared mailbox scenario). It doesn't scale, and it
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
202 represents a support nightmare; it is therefore not supported in the
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
203 official distribution. Maildir support code for c-client is available
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
204 from third parties; but, if you use it, it is entirely at your own
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
205 risk (read: don't complain about how poorly it performs or bugs).
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
206
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
207
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
208 So what does this all mean?
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
209
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
210 A database (such as used by Exchange) is really a much better
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
211 approach if you want to move away from flat files. mx and especially
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
212 Cyrus take a tenative step in that direction; mx failed mostly because
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
213 it didn't go anywhere near far enough. Cyrus goes much further, and
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
214 scores remarkable benefits from doing so.
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
215
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
216 However, a well-designed pure database without the overhead of
ada5e610ab86 imap-2007e
yuuji@gentei.org
parents:
diff changeset
217 separate files would do even better.

yatex.org