view README @ 283:00dbc7e5f441 HEAD

vpopmail needs also crypt()
author Timo Sirainen <>
date Fri, 20 Sep 2002 14:51:23 +0300
parents 3b1985cbc908
children 58899a413569
line wrap: on
line source

 * Alpha release

This release has not been extensively tested, I don't recommend putting it
into production usage yet. All the IMAP4rev1 features are fully supported,
except custom message flags still need to be implemented. There's several
minor problems left, see TODO file.

 * Mail storages

Maildir is the preferred storage with most robust implementation. mbox
support is available but currently it relies a little bit on good luck, I
made it mostly for personal use and I strongly recommend using maildir if
at all possible.

Maildir folders are done like with courier. INBOX is the ~/Maildir
directory, all the other folders named as ".<folder>.<subfolder>.<etc>"
under it, any directories not starting with a dot are simply ignored.
Deleting folders is made atomic by renaming them as "..<folder name>" and
deleting the directory after that. So, all directories beginning with ".."
are deleted whenever they're noticed. Indexes are stored into each folder's
root directory.

mbox storage currently requires that all mail is in user-writable
directory, eg. ~/mail. Especially using /var/mail/user is NOT supported.
You may however create a ~/mail/inbox hardlink (or symlink if not chrooted)
to pointing to /var/mail/user. All files in the mail directory are
considered as mailboxes. Directories specify subfolders in IMAP. "inbox"
file specifies the INBOX folder and can not be named otherwise. Indexes are
stored into ".imap/<mailbox name>/" directories.

imap process detects the storage from MAIL-environment which is preferred
to be in format "<storage>:<data>", for example "maildir:~/Maildir". It's
anyway allowed to be in pretty much any format as long as some of the
storages recognizes it as a valid data, so for example "MAIL=~/mail" is
first checked by maildir storage to see if it's valid maildir and
mbox storage after that.

If the MAIL environment isn't given at all, all the storages are gone
through which try to find a valid directory for themselves to use. Also as
a special case, if MAILDIR environment exists, maildir storage is used with
the directory specified in it.

Maildir storage is autodetected by checking if <directory>/cur/ exists and
we have rwx access to it. If directory isn't known, / and ~/Maildir are
checked. / is checked because we could be chrooted.

mbox storage is autodetected by checking if .imap/ (+rwx), inbox (+rw) or
mbox (+rw) exists in directory. If directory isn't known, / is tried first.
After that, ~/mail and ~/Mail directories are used if they're found without
checking if they even contain any files.

 * Code

The code is split into a several libraries and binaries:

 src/master      - imap-master binary (see docs/design.txt)
 src/login       - imap-login binary
 src/auth        - imap-auth binary
 src/imap        - imap binary

 src/lib         - Generic library functions
 src/lib-mail    - RFC-822 and MIME parsering code
 src/lib-imap    - IMAP-specific functions for parsing, sending, etc.
 src/lib-index   - Mailbox indexing library, slightly IMAP-specific
 src/lib-storage - Mail storage separated into interface and implementation.
                   imap binary uses only the interface so it's possible to
		   add support for any kind of mail storage (eg. SQL).

 * RFCs conformed

822  - Standard for ARPA Internet Text Messages
2822 - Internet Message Format (updated rfc822)
2045..2049 - Multipurpose Internet Mail Extensions (MIME)

2060 - IMAP4rev1
2180 - IMAP4 Multi-Accessed Mailbox Practice

2595 - Using TLS with IMAP, POP3 and ACAP
2831 - Using Digest Authentication as a SASL Mechanism (DIGEST-MD5)


 * Contact info

Timo Sirainen <>,