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 enve-
lope 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 for-
mat, 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 enve-
lope 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; other-
wise it writes one.
HOW A MESSAGE IS READ
A reader scans through an mbox file looking for From_ lines. Any From_
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 artifi-
cially 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)
5 s/qmail:(mbox)
Man(1) output converted with
man2html