mirror of
https://github.com/uw-imap/imap.git
synced 2024-11-16 18:38:21 +01:00
22f316e36d
MD5 2126fd125ea26b73b20f01fcd5940369
190 lines
7.6 KiB
Plaintext
190 lines
7.6 KiB
Plaintext
/* ========================================================================
|
||
* Copyright 1988-2006 University of Washington
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* http://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
*
|
||
* ========================================================================
|
||
*/
|
||
|
||
c-client Driver Characteristics
|
||
Mark Crispin
|
||
11 December 2006
|
||
|
||
|
||
Drivers are code modules that support different mailbox storage
|
||
technologies. A mailbox storage technology may be implemented by
|
||
1) files and directories on the local system
|
||
2) a database
|
||
3) a network protocol.
|
||
|
||
In the case of files and directories on the local system, a
|
||
driver supports a particular mailbox format. Mailbox formats are
|
||
discussed in more detail in the file formats.txt.
|
||
|
||
As of the date this document was written, there was no bundled
|
||
support for any databases in c-client. However, it should not be
|
||
particularly difficult to write a driver that communicates with a
|
||
database.
|
||
|
||
Network protocols supported by c-client drivers are the Internet
|
||
Mail Access Protocol (all versions: IMAP4rev1, IMAP4, IMAP2bis, and
|
||
IMAP2); the Post Office Protocol (version 3); and the Network News
|
||
Transport Protocol (NNTP). In addition, c-client also supports NNTP
|
||
and the Simple Mail Transport Protocol (SMTP) for mailbox transport.
|
||
|
||
By default, all drivers are enabled. There is little benefit to
|
||
be gained by disabling a driver, with one exception. The mbox driver
|
||
implements the behavior of automatically moving new mail from the
|
||
spool directory to the "mbox" file on the user's home directory, if
|
||
and *only* if the "mbox" exists and is in mailbox format. The mbox
|
||
driver is listed under EXTRADRIVERS; if you wish to disable it just
|
||
remove it from that list and rebuild.
|
||
|
||
I. Special name "INBOX"
|
||
|
||
The following rules to select INBOX and its format apply in
|
||
the order given if "black box mode" is not in effect:
|
||
1) mbox format is selected if file ~/mbox exists, and is in unix
|
||
format or is zero-length.
|
||
2) mx format is selected if file ~/INBOX/.mxindex exists.
|
||
3) mbx format is selected if file ~/INBOX exists and is in mbx format.
|
||
4) tenex format is selected if:
|
||
a) file ~/mail.txt exists, and is in tenex format or is zero-length.
|
||
b) file ~/INBOX exists and is in tenex format.
|
||
5) mtx format is selected if:
|
||
a) file ~/INBOX.MTX exists, and is in mtx format or is zero-length.
|
||
b) file ~/INBOX exists and is in mtx format.
|
||
6) mmdf format is selected if the spool directory file exists and is
|
||
in mmdf format.
|
||
7) unix format is selected if the spool directory file exists and is
|
||
in unix format.
|
||
8) the dummy driver is selected if the spool directory file does not
|
||
exist, or exists and is empty.
|
||
|
||
If "black box mode" is not in effect, messages are automatically
|
||
transferred ("snarfed") from the spool directory to an INBOX in mbox,
|
||
mx, mbx, tenex, and mtx formats.
|
||
|
||
The following rules to select INBOX and its format apply in the order
|
||
given if "black box mode" is in effect:
|
||
1) mx format is selected if file ~/INBOX/.mxindex exists.
|
||
2) mbx format is selected if file ~/INBOX exists and is in mbx format.
|
||
3) tenex format is selected if file ~/INBOX exists and is in tenex format.
|
||
4) mtx format is selected if file ~/INBOX exists and is in mtx format.
|
||
5) mmdf format is selected if file ~/INBOX exists and is in mmdf format.
|
||
6) unix format is selected if file ~/INBOX exists and is in unix format.
|
||
7) the dummy driver is selected if ~/INBOX does not exist, or exists
|
||
and is empty.
|
||
|
||
II. Special Name #mhinbox
|
||
|
||
#mhinbox always refers to the directory "inbox" in the MH path, which
|
||
is declared in the ~/.mh_profile file. Messages are automatically
|
||
transferred from the spool directory to #mhinbox mailbox.
|
||
|
||
|
||
III. Special Prefix "#mh/"
|
||
|
||
Any name prefixed with "#mh/" always refers to a directory in the MH
|
||
path, which is declared in the ~/.mh_profile file. For example, the name
|
||
"#mh/foo" refers to directory "foo" in the MH path.
|
||
|
||
|
||
IV. Special prefix "#news."
|
||
|
||
Any name prefixed with "#news" always refers to a newsgroup. For
|
||
example, the name "#news.comp.mail.misc" refers to newsgroup
|
||
"comp.mail.misc".
|
||
|
||
|
||
V. All Other Names
|
||
|
||
The driver is selected by generating a file name from the mailbox
|
||
name, and then examining the data of the object with the resulting
|
||
name. The formats are checked in order: mx, mbx, tenex, mtx, mmdf,
|
||
unix, and phile. The dummy driver is selected if the file is empty.
|
||
|
||
The file name is generated according to certain rules, based upon the
|
||
prefix of the mailbox name. On UNIX, the following rules apply:
|
||
|
||
Prefix Interpretation of Suffix
|
||
------ ------------------------
|
||
/ [black box] preceeds a user name; "/foo/bar" means
|
||
"black box user foo's mailbox bar"
|
||
[not black box] preceeds an absolute path name.
|
||
~ [not black box] preceeds a user name; "~foo/bar" means
|
||
"UNIX user foo's mailbox bar"
|
||
#ftp/ preceeds UNIX user ftp's mailbox name
|
||
#public/ preceeds UNIX user imappublic's mailbox name
|
||
#shared/ preceeds UNIX user imapshared's mailbox name
|
||
|
||
All other names are interpreted in the context of the UNIX user's home
|
||
directory (not black box), the black box user's black box directory
|
||
(black box), or UNIX user ftp's home directory (anonymous).
|
||
|
||
The strings "..", "//", and /~ are forbidden in names in:
|
||
black box mode
|
||
#ftp, #public, or #shared names
|
||
anonymous users
|
||
|
||
Anonymous users may only access:
|
||
INBOX (belonging to UNIX user ftp)
|
||
files in or below UNIX user ftp's home directory
|
||
#ftp, #news, and #public namespace
|
||
|
||
VI. Driver Comparison
|
||
|
||
The following information about the local file drivers is an
|
||
elaboration of a table compiled by Osma Ahvenlampi.
|
||
|
||
Driver CA CE UID Kwd Sub NFS Performance Layout
|
||
------ -- -- --- --- --- --- ----------- ------
|
||
unix no no yes yes no limited fair file
|
||
;;; traditional UNIX format
|
||
mbox no no yes yes no limited fair file
|
||
;;; traditional UNIX format, INBOX only, using ~/mbox with automatic
|
||
;;; moving from the mail spool directory.
|
||
mmdf no no yes yes no limited fair file
|
||
;;; default on SCO systems
|
||
mbx yes yes yes yes no no very good prefile
|
||
;;; best performing local file driver; preferred format at UW
|
||
tenex yes no no limited no no good prefile
|
||
;;; compatible with UNIX MM
|
||
mtx yes no no limited no no very good prefile
|
||
;;; PC Pine standard format; compatible with TOPS-20; identical to tenex
|
||
;;; but instead CRLF newlines instead of LF
|
||
mx yes buggy yes yes yes no poor ixdir
|
||
;;; fullest function; *not* recommended due to performance problems and bugs;
|
||
;;; to be redesigned/rewritten
|
||
mh yes no no no yes yes very poor dir
|
||
;;; compatible with mh; #mhinbox for INBOX, #mh/ prefix for all other names
|
||
news yes no yes no yes yes very poor ixdir
|
||
;;; local news spool access; #news. prefix for all names
|
||
phile no no no no no yes good file
|
||
;;; reads arbitrary file as a single readonly message
|
||
|
||
IMPORTANT: the "performance" ratings are relative to other drivers,
|
||
and not necessarily to other software which implements those formats.
|
||
They relate to the driver's performance in typical operations such as
|
||
an IMAP "FETCH ALL".
|
||
|
||
Key to headings:
|
||
CA: concurrent read/write access
|
||
CE: expunge permitted in concurrent read/write access
|
||
UID: sticky UIDs
|
||
Kwd: keyword flags
|
||
Sub: subfolders
|
||
NFS: usable over network filesystems (NFS, AFS, etc.)
|
||
Layout: file - single file
|
||
prefile - file with preallocated space for state
|
||
dir - directory, messages are files
|
||
ixdir - directory, messages are files, with helper index
|
||
|
||
In addition, drivers imap, nntp, and pop3 support IMAP4rev1, NNTP, and
|
||
POP3 protocols respectively.
|