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 more-
       info.   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  con-
       tains spaces, tabs, or newlines, the program replaces them
       with hyphens.

       The program then copies the message, applying >From  quot-
       ing  to each line.  >From quoting ensures that the result-
       ing lines are not From_ lines: the program prepends a > to
       any  From_ line, >From_ line, >>From_ line, >>>From_ line,
       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  Con-
       tent-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-
       alias always uses flock on systems that have it, otherwise
       lockf.

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

       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-alias takes much less than a
       second to run.  One solution is for a mail reader to arti-
       ficially 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-alias(8)