Provided by: qmail_1.06-4_i386 bug

NAME

       mbox - file containing mail messages

INTRODUCTION

       The most common format for storage of mail messages is mbox format.  An
       mbox is a single file containing zero or more mail messages.

MESSAGE FORMAT

       A message encoded in mbox format begins with a  From_  line,  continues
       with  a series of non-From_ lines, and ends with a blank line.  A From_
       line means any line that begins with the characters F, r, o, m, space:

            From god@heaven.af.mil Sat Jan  3 01:05:34 1996
            Return-Path: <god@heaven.af.mil>
            Delivered-To: djb@silverton.berkeley.edu
            Date: 3 Jan 1996 01:05:34 -0000
            From: God <god@heaven.af.mil>
            To: djb@silverton.berkeley.edu (D. J. Bernstein)

            How's that mail system project coming along?

       The final line is a completely blank line (no spaces or tabs).   Notice
       that blank lines may also appear elsewhere in the message.

       The  From_  line  always  looks  like  From  envsender  date  moreinfo.
       envsender is one word, without  spaces  or  tabs;  it  is  usually  the
       envelope  sender  of  the  message.   date  is the delivery date of the
       message.  It always contains exactly 24 characters in  asctime  format.
       moreinfo is optional; it may contain arbitrary information.

       Between  the  From_  line  and  the  blank line is a message in RFC 822
       format, as described in qmail-header(5), subject to  >From  quoting  as
       described below.

HOW A MESSAGE IS DELIVERED

       Here is how a program appends a message to an mbox file.

       It  first  creates a From_ line given the message's envelope sender and
       the current date.  If the envelope sender is empty (i.e., if this is  a
       bounce  message),  the  program  uses  MAILER-DAEMON  instead.   If the
       envelope  sender  contains  spaces,  tabs,  or  newlines,  the  program
       replaces them with hyphens.

       The  program  then  copies  the message, applying >From quoting to each
       line.  >From quoting ensures that the resulting  lines  are  not  From_
       lines: the program prepends a > to any From_ line, >From_ line, >>From_
       line, >>>From_ line, etc.

       Finally the program appends a blank line to the message.  If  the  last
       line  of  the  message  was  a  partial  line,  it writes two newlines;
       otherwise it writes one.

HOW A MESSAGE IS READ

       A reader scans through an mbox file looking for From_ lines.  Any From_
       line  marks  the beginning of a message.  The reader should not attempt
       to take advantage of the fact that every From_ line (past the beginning
       of the file) is preceded by a blank line.

       Once  the  reader  finds  a message, it extracts a (possibly corrupted)
       envelope sender and delivery date out of the From_ line.  It then reads
       until  the  next  From_ line or end of file, whichever comes first.  It
       strips off the final blank line and deletes the quoting of >From_ lines
       and >>From_ lines and so on.  The result is an RFC 822 message.

COMMON MBOX VARIANTS

       There are many variants of mbox format.  The variant described above is
       mboxrd format, popularized by Rahul Dhesi in June 1995.

       The original mboxo format quotes only From_ lines,  not  >From_  lines.
       As a result it is impossible to tell whether

            From: djb@silverton.berkeley.edu (D. J. Bernstein)
            To: god@heaven.af.mil

            >From now through August I'll be doing beta testing.
            Thanks for your interest.

       was quoted in the original message.  An mboxrd reader will always strip
       off the quoting.

       mboxcl format is like mboxo format, but includes a Content-Length field
       with the number of bytes in the message.  mboxcl2 format is like mboxcl
       but has no >From quoting.  These formats  are  used  by  SVR4  mailers.
       mboxcl2 cannot be read safely by mboxrd readers.

UNSPECIFIED DETAILS

       There  are  many locking mechanisms for mbox files.  qmail-local always
       uses flock on systems that have it, otherwise lockf.

       The delivery date in a From_ line does not specify a time zone.  qmail-
       local always creates the delivery date in GMT so that mbox files can be
       safely transported from one time zone to another.

       If the mtime on a nonempty mbox file is greater  than  the  atime,  the
       file  has  new  mail.   If the mtime is smaller than the atime, the new
       mail has been read.  If the atime equals the mtime, there is no way  to
       tell  whether  the file has new mail, since qmail-local takes much less
       than  a  second  to  run.   One  solution  is  for  a  mail  reader  to
       artificially  set the atime to the mtime plus 1.  Then the file has new
       mail if and only if the atime is less than or equal to the mtime.

       Some mail readers place Status fields in each message to indicate which
       messages have been read.

SEE ALSO

       maildir(5), qmail-header(5), qmail-local(8)

                                                                       mbox(5)