		   Mailbox Naming Rules in c-client
			     Mark Crispin
			     23 May 1993


     Mailboxes are named in a manner that there always exists a name,
called the ``unambiguous name,'' which identifies the mailbox and the
mechanism (that is, c-client driver) used to access the data without
any confusion.  A mailbox may also have some number of shorter names,
called ``ambiguous names,'' which should also identify the proper
mailbox but which could, in certain circumstances, refer to more than
one mailbox using different technologies for each.

     These ambiguity issues come up primarily with some of the newer
and proposed mail drivers, all of which have namespace needs which
were not addressed with c-client's traditional drivers.

     To resolve these issues, the requirement of the existance of an
``unambiguous name'' stated above has been added.  Furthermore, the
namespace has been partitioned, both to delimit namespace boundaries
and to reserve large areas for future expansion.  The rules for this
namespace partitioning are indented in this document along with the
identity of the rule-maker for that rule.

	[MRC]
	The name ``INBOX'' in uppercase, lowercase, or any mix, is
	specially defined to be the user's primary mailbox.  It is
	not permitted to have an INBOX in more than one technology.

	[MRC]
	Names which begin with an alphanumeric character, that is,
	digits 0-9 and letters A-Z and a-z, are defined to be
	ambiguous names.

    The rules below are defined and used by known c-client drivers to
assist in specifying unambiguous names.  Note that not all of these
are valid in all environments; in particularly, they require that the
driver be appropriate for the local platform and lunk into the
application.

     It is the responsibility of the author of any new drivers to
define a set of rules for unambiguous naming which do not conflict
with existing rules, and to see to it that this document is updated to
register those new rules.  Any new rules should leave room for future
rules in the namespace; it is *not* acceptable to have a rule which
begins ``Names which begin with any other character than these...''!!
Other than these two guidelines, there are no specific requirements
for new rules.

	[MRC]
	Names which begin with an ``/'' refer to objects in a
	Unix filesystem, identified from the root.  Since there
	may be multiple drivers which operate on objects in a
	filesystem, it is necessary to examine the type of object
	and its contents to determine the appropriate driver.

	[MRC]
	Names which begin with an ``~'' refer to objects in a
	Unix filesystem, identified from a home directory.  Since
	there may be multiple drivers which operate on objects in a
	filesystem, it is necessary to examine the type of object
	and its contents to determine the appropriate driver.
	[BUG: home directories other than than the logged-in user's
	 are not yet implemented.]

	[MRC]
	Names which begin with an ``*'' character refer to bboards.
	For example, ``*comp.mail.misc'' refers to the newsgroup
	``comp.mail.misc'' on the local system.  Remote names are
	also allowed; ``*{newshost}comp.mail.misc'' refers to the
	newsgroup ``comp.mail.misc'' on the system ``newshost'' via
	IMAP.

	[MRC]
	Names which begin with an ``{'' character refer to remote
	mailboxes.  A remote mailbox is in the form
	 ``{'' host [``/'' switch [``='' value] [``:'' port] ``}'' [mailbox]
	where:
	 host		remote host (name or bracketed IP address)
	 switch		switch specifying various options
	 value		value for switches which take values
	 port		IP port number
	 mailbox	local mailbox name at remote host
	Switches may have be one of the following:
	 anonymous	specifies anonymous remote login
	 imap2		same as service=imap2
	 nntp		same as service=nntp
	 service	value specifies service to use
	The default service is imap2, the default port is the normal
	port for that service.

	[LGL]
	The Carmel mail format reserves all names begining with "#carmel"
        where each of the letter can be upper or lower case. The format of 
        the name is  #carmel<n>#<user>#<mailbox>.  If <n> is absent is is
        Carmel version one, for other version <n> is "2", "3"... The <user>
        and one "#" are optional and specify the user id of the owner
        of <mailbox>.  When absent the owner of the mailbox is the user-id
        under which the process opening the mailbox is authorized as. 

     Naming rules for new drivers should be added above this line.

     The rule-makers are identified as follows:

[LGL] Laurence Lundblade, LGL@CAC.Washington.EDU
[MRC] Mark Crispin, MRC@CAC.Washington.EDU

     Note that this document only defines names for c-client, and does
not presume to define names at higher levels.  In particular, Pine uses
and maintains a ``context'' layer between it and the user interface, and
names are transformed by this context layer.
