mbox.5
changeset 0 068428edee47
equal deleted inserted replaced
-1:000000000000 0:068428edee47
       
     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)