debian/rules: Use `git' potty wrapper.
[qmail] / mbox.5
1 .TH mbox 5
2 .SH "NAME"
3 mbox \- file containing mail messages
4 .SH "INTRODUCTION"
5 The most common format for storage of mail messages is
6 .I mbox
7 format.
8 An
9 .I mbox
10 is a single file containing zero or more mail messages.
11 .SH "MESSAGE FORMAT"
12 A message encoded in
13 .I mbox
14 format begins with a
15 .B From_
16 line, continues with a series of
17 .B \fRnon-\fBFrom_
18 lines,
19 and ends with a blank line.
20 A
21 .B From_
22 line means any line that begins with the characters
23 F, r, o, m, space:
24
25 .EX
26 From god@heaven.af.mil Sat Jan 3 01:05:34 1996
27 .br
28 Return-Path: <god@heaven.af.mil>
29 .br
30 Delivered-To: djb@silverton.berkeley.edu
31 .br
32 Date: 3 Jan 1996 01:05:34 -0000
33 .br
34 From: God <god@heaven.af.mil>
35 .br
36 To: djb@silverton.berkeley.edu (D. J. Bernstein)
37 .br
38
39 .br
40 How's that mail system project coming along?
41 .br
42
43 .EE
44
45 The final line is a completely blank line (no spaces or tabs).
46 Notice that blank lines may also appear elsewhere in the message.
47
48 The
49 .B From_
50 line always looks like
51 .B From
52 .I envsender
53 .I date
54 .IR moreinfo .
55 .I envsender
56 is one word, without spaces or tabs;
57 it is usually the envelope sender of the message.
58 .I date
59 is the delivery date of the message.
60 It always contains exactly 24 characters in
61 .B asctime
62 format.
63 .I moreinfo
64 is optional; it may contain arbitrary information.
65
66 Between the
67 .B From_
68 line and the blank line is a message in RFC 822 format,
69 as described in
70 .BR qmail-header(5) ,
71 subject to
72 .B >From quoting
73 as described below.
74 .SH "HOW A MESSAGE IS DELIVERED"
75 Here is how a program appends a message to an
76 .I mbox
77 file.
78
79 It first creates a
80 .B From_
81 line given the message's envelope sender and the current date.
82 If the envelope sender is empty (i.e., if this is a bounce message),
83 the program uses
84 .B MAILER-DAEMON
85 instead.
86 If the envelope sender contains spaces, tabs, or newlines,
87 the program replaces them with hyphens.
88
89 The program then copies the message, applying
90 .B >From quoting
91 to each line.
92 .B >From quoting
93 ensures that the resulting lines are not
94 .B From_
95 lines:
96 the program prepends a
97 .B >
98 to any
99 .B From_
100 line,
101 .B >From_
102 line,
103 .B >>From_
104 line,
105 .B >>>From_
106 line,
107 etc.
108
109 Finally the program appends a blank line to the message.
110 If the last line of the message was a partial line,
111 it writes two newlines;
112 otherwise it writes one.
113 .SH "HOW A MESSAGE IS READ"
114 A reader scans through an
115 .I mbox
116 file looking for
117 .B From_
118 lines.
119 Any
120 .B From_
121 line marks the beginning of a message.
122 The reader should not attempt to take advantage of the fact that every
123 .B From_
124 line (past the beginning of the file)
125 is preceded by a blank line.
126
127 Once the reader finds a message,
128 it extracts a (possibly corrupted) envelope sender
129 and delivery date out of the
130 .B From_
131 line.
132 It then reads until the next
133 .B From_
134 line or end of file, whichever comes first.
135 It strips off the final blank line
136 and
137 deletes the
138 quoting of
139 .B >From_
140 lines and
141 .B >>From_
142 lines and so on.
143 The result is an RFC 822 message.
144 .SH "COMMON MBOX VARIANTS"
145 There are many variants of
146 .I mbox
147 format.
148 The variant described above is
149 .I mboxrd
150 format, popularized by Rahul Dhesi in June 1995.
151
152 The original
153 .I mboxo
154 format quotes only
155 .B From_
156 lines, not
157 .B >From_
158 lines.
159 As a result it is impossible to tell whether
160
161 .EX
162 From: djb@silverton.berkeley.edu (D. J. Bernstein)
163 .br
164 To: god@heaven.af.mil
165 .br
166
167 .br
168 >From now through August I'll be doing beta testing.
169 .br
170 Thanks for your interest.
171 .EE
172
173 was quoted in the original message.
174 An
175 .I mboxrd
176 reader will always strip off the quoting.
177
178 .I mboxcl
179 format is like
180 .I mboxo
181 format, but includes a Content-Length field with the
182 number of bytes in the message.
183 .I mboxcl2
184 format is like
185 .I mboxcl
186 but has no
187 .B >From
188 quoting.
189 These formats are used by SVR4 mailers.
190 .I mboxcl2
191 cannot be read safely by
192 .I mboxrd
193 readers.
194 .SH "UNSPECIFIED DETAILS"
195 There are many locking mechanisms for
196 .I mbox
197 files.
198 .B qmail-local
199 always uses
200 .B flock
201 on systems that have it, otherwise
202 .BR lockf .
203
204 The delivery date in a
205 .B From_
206 line does not specify a time zone.
207 .B qmail-local
208 always creates the delivery date in GMT
209 so that
210 .I mbox
211 files can be safely transported from one time zone to another.
212
213 If the mtime on a nonempty
214 .I mbox
215 file is greater than the atime,
216 the file has new mail.
217 If the mtime is smaller than the atime,
218 the new mail has been read.
219 If the atime equals the mtime,
220 there is no way to tell whether the file has new mail,
221 since
222 .B qmail-local
223 takes much less than a second to run.
224 One solution is for a mail reader to artificially set the
225 atime to the mtime plus 1.
226 Then the file has new mail if and only if the atime is
227 less than or equal to the mtime.
228
229 Some mail readers place
230 .B Status
231 fields in each message to indicate which messages have been read.
232 .SH "SEE ALSO"
233 maildir(5),
234 qmail-header(5),
235 qmail-local(8)