|
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) |