summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/ChangeLog23
-rw-r--r--doc/LICENSE24
-rw-r--r--doc/OLD/AUTHORS45
-rwxr-xr-xdoc/OLD/ChangeLog.1.21237
-rw-r--r--doc/OLD/ChangeLog.1.376
-rw-r--r--doc/OLD/HTML/bincimap-faq.html926
-rw-r--r--doc/OLD/HTML/bincimap-goals.html160
-rw-r--r--doc/OLD/HTML/bincimap-imapdir.html257
-rw-r--r--doc/OLD/HTML/bincimap-tech.html503
-rw-r--r--doc/OLD/HTML/bincimap.css8
-rw-r--r--doc/OLD/README109
-rw-r--r--doc/OLD/README.SSL141
-rw-r--r--doc/TODO18
13 files changed, 3527 insertions, 0 deletions
diff --git a/doc/ChangeLog b/doc/ChangeLog
new file mode 100644
index 0000000..25c1566
--- /dev/null
+++ b/doc/ChangeLog
@@ -0,0 +1,23 @@
+ChangeLog:
+=========
+
+2.0.14 Removed gethostbyname and replaced by environment variable 'TCPLOCALHOST'.
+ Changed default logtype to 'multilog'.
+2.0.13 Logging is working now for each session at logout/disconnect/timeout.
+2.0.12 CRAM-MD5 Auth should work now (given the backend allows this).
+ Modularized auth operator for potential new methods.
+ Improved man pages to reflect current capabilities.
+2.0.11 BincInfo renamed to BincLog, added s/qmail like tags for logging.
+ Added a LICENSE file (under ./doc).
+ StartTLS working now after reordering reply command sequence.
+2.0.10 Added CRAM-MD5 authentication. 'logged in' log includes now remote IP.
+2.0.9 Added doc + man pages and finished slashpackage installation.
+2.0.8 Final cleaning and integration tests.
+2.0.7 Moved StartTLS support into operator-starttls.cc.
+2.0.6 Added StartTLS into sesssion-initialisation-bincimap-up.cc.
+2.0.5 Added operator-id.cc (RFC 2971) since Evolution requires this.
+2.0.4 Removed JAIL option -> sslserver can do that as well. Trimmed log output.
+2.0.3 Trimming of *.cc and *.h files. Removed StartTLS driver.
+2.0.2 Integration tests successful for TLS and with new qmail-authuser.
+2.0.1 Makefile working. First minor fixes. Initial working version.
+2.0.0 Initial restart of Bincimap 1.3.4 without Autoconf tools.
diff --git a/doc/LICENSE b/doc/LICENSE
new file mode 100644
index 0000000..8f1855e
--- /dev/null
+++ b/doc/LICENSE
@@ -0,0 +1,24 @@
+ * --------------------------------------------------------------------
+ * Copyright 2002-2005 Andreas Aardal Hanssen, 2023 Erwin Hoffmann
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
+ * --------------------------------------------------------------------
+ *
+ * The authors do no guarantee any particular fitness of the program.
+ * It is published 'as is'.
+ * Distributers should obey this and include this LICENSE file
+ * together with the ChangeLog and the adjacent documentation.
+ *
+ * --------------------------------------------------------------------
diff --git a/doc/OLD/AUTHORS b/doc/OLD/AUTHORS
new file mode 100644
index 0000000..1ece119
--- /dev/null
+++ b/doc/OLD/AUTHORS
@@ -0,0 +1,45 @@
+The following parties have participated in writing code or otherwise
+contributed to the Binc IMAP project:
+
+Author:
+Andreas Aardal Hanssen <andreas-binc@bincimap.org>
+
+Several users have been very helpful with bug reports and suggestions, and
+the author is very grateful for their contributions.
+
+Some users have also gone to the extra effort of debugging the cause of a
+bug, or have found a way of implementing a feature, and have either provided
+a very good description of what is needed, or they have actually provided a
+patch that has been added to Binc IMAP.
+
+While adding extra value to the discussion around the discovery of a bug or
+the evaluation of a new feature, these contributors also take some load of
+the author's back, so they deserve extra thanks.
+
+In this list are also included people who have contributed with mirrors and
+translations of the web pages.
+
+Henry Baragar <Henry.Baragar (a) Instantiated.Ca>
+Jürgen Botz <jurgen (a) botz.org>
+Charlie Brady <charlieb (a) e-smith.com>
+Caskey Dickson <caskey (a) technocage.com>
+Ketil Froyn <ketil (a) froyn.name>
+Gary Gordon <gv-mail (a) mygirlfriday.info>
+Marek Gutkowski <marek (a) moveo.pl>
+Daniel James <daniel_james (a) eml.cc>
+Zak Johnson <zakj (a) nox.cx>
+Sergei Kolobov <sergei (a) kolobov.com>
+Rafal Kupka <kupson (a) kupson.fdns.net>
+Eivind Kvedalen <bincimap (a) eivind.kvedalen.name>
+HIROSHIMA Naoki <naokih (a) iron-horse.org>
+Greger Stolt Nilsen <greger (a) psychoproject.net>
+John Starks <jstarks (a) starksnet.net>
+Peter Stuge <stuge-binc (a) cdy.org>
+Gerrit Pape <pape (a) smarden.org>
+Jeremy Rossi <jeremy (a) jeremyrossi.com>
+Dale Woolridge <dale-contrib-bincimap (a) woolridge.org>
+
+If you have contributed to the Binc IMAP project but are not listed here
+(this happens quite often), please send a mail to andreas-binc@bincimap.org
+and I'll add you to the list.
+
diff --git a/doc/OLD/ChangeLog.1.2 b/doc/OLD/ChangeLog.1.2
new file mode 100755
index 0000000..2fc7c86
--- /dev/null
+++ b/doc/OLD/ChangeLog.1.2
@@ -0,0 +1,1237 @@
+* Thu Jul 21 2005 Andreas Aardal Hanssen <andreas-binc at bincimap.org>
+- Fixed the INTERNALDATE response (again), so it uses the +DDDD
+ format instead of GMT, CEST and so on.
+- The command line switch for "depot" was fixed.
+- When renaming files / setting flags, the file list is read
+ first, and the files are then renamed afterwards. This fixed
+ a bug on XFS, where renaming the files also changes the order
+ in which they are scanned.
+- Integrated Jerry Lundström's patch to make sure that the
+ Mailbox::path variable is not reset when a mailbox is closed.
+- Released 1.2.13final
+
+* Sun Mar 06 2005 Andreas Aardal Hanssen <andreas-binc at bincimap.org>
+- Added quoting in the configure script to make it more cross platform.
+- Updated Copyright notices to include 2005
+- Remove the log messages about a possible crash when Binc IMAP was
+ unable to grab the mailbox lock.
+- Maildir fix: Always add :2, to files that are moved to cur/.
+- Made sure the state of the STARTTLS capability is correct, also when
+ in STARTTLS mode.
+- The time zone is now removed from the greeting if strftime fails (if
+ the time zone is not set, for example). %Z is used instead of %z, to
+ avoid text time zones ("GMT" becomes "+0100").
+- Fixed the BODY response, so if no longer includes any extensions.
+- The -p short option for --auth-penalty has been removed; it was a
+ conflicting short option.
+- The LIST reference can now end with the delimiter character.
+- EINVAL is caught in fsync(), which allows Binc IMAP to work better on
+ an NFS share.
+- Released 1.2.12final
+
+* Mon Dec 13 2004 Andreas Aardal Hanssen <andreas-binc at bincimap.org>
+- Fixed a lockup due to dangling symlinks in the Maildir
+- Replaced opendir()/dirfd() with open(), and Binc doesn't
+ use O_DIRECTORY anymore.
+- Fixed a bug with FIELDS in a BODY fetch being empty.
+- Fixed so EXAMINE no longer writes the cache file. Ensure that
+ the read-only flag is always set correctly.
+- Fixed so the \Recent flag is always remembered when the flags
+ are reset.
+- When in read-only mode, all messages earlier marked as
+ expunged are replaced properly in the internal message map.
+- Fixed a missing space in the response from RFC822.TEXT.
+- Fixed two bugs when saving the subscribed list on a full
+ file system.
+- Some compile fixes
+- Released 1.2.11final
+
+* Sun Sep 19 2004 Andreas Aardal Hanssen <andreas-binc at bincimap.org>
+- Released 1.2.10final
+
+* Mon Sep 13 2004 Andreas Aardal Hanssen <andreas-binc at bincimap.org>
+- For proper crash safety also on Linux systems, sync the directories
+ as well as the files.
+- In the MIME parser, count the number of lines and bytes in
+ the parent multiparts correctly.
+- When committing flags changes, restart the filename scan if the
+ rename fails because the file name suddenly changed.
+- Treat INBOX as case-insensitive when using wildcards in LIST and
+ LSUB.
+- Replaced '%i' with '%d' in convert.h to avoid strange problems with
+ sprintf generating wrong Maildir file names.
+- Binc no longer checks invalid mailbox paths like ".." and "".
+- Released 1.2.10beta1
+
+* Mon Jul 26 2004 Andreas Aardal Hanssen <andreas-binc at bincimap.org>
+- Fixed a bug which made all mailboxes read-only if an EXAMINE had
+ been used throughout the session.
+
+* Tue Jul 20 2004 Andreas Aardal Hanssen <andreas-binc at bincimap.org>
+- Made the README paths correspond to the ones generated by configure.
+- Released 1.2.9final
+
+* Mon Jul 12 2004 Andreas Aardal Hanssen <andreas-binc at bincimap.org>
+- Fixed a few bugs where session.setLastError() was used instead of
+ session.setResponseCode().
+- Fixed a charset detection bug in SEARCH.
+- Set Binc to ignore the SIGPIPE signal.
+- Released 1.2.9beta2
+- Fixed a compile error.
+- Released 1.2.9beta3
+
+* Sun Jul 04 2004 Andreas Aardal Hanssen <andreas-binc at bincimap.org>
+- Fixed a bug with concurrent access when both clients issued
+ EXPUNGE requests on messages that had arrived within the same
+ session.
+- Released 1.2.9beta1
+
+* Wed Jun 09 2004 Andreas Aardal Hanssen <andreas-binc at bincimap.org>
+- Binc IMAP now treats all other checkpassword exit codes than 0, 2
+ and 111 as "authentication failed".
+
+* Sun Jun 06 2004 Andreas Aardal Hanssen <andreas-binc at bincimap.org>
+- Instead of keeping silent about a failed pending update check, the
+ server will not explicitly close the connection, as it was intended
+ for it to do.
+- The cause of an error caused by failures to read the cache or
+ uidvalidity files is properly reported now.
+- If no umask is passed via the conf files, the umask is not set
+ (inherited by the parent process instead).
+- Released 1.2.8beta1
+
+* Thu Jun 03 2004 Andreas Aardal Hanssen <andreas-binc at bincimap.org>
+- Fixed a bug with Session::loadSubscribe trimming entries read from
+ .bincimap-subscribed, reported by Seth LaForge.
+- Fix a bug with subscribing to mailboxes. Now, mailboxes can only be
+ subscribed to once.
+- Allow FETCH to give FLAGS, EXISTS and RECENT notifications for
+ tighter synchronization with the depot.
+
+* Sun May 31 2004 Andreas Aardal Hanssen <andreas-binc at bincimap.org>
+- Compile fix for FreeBSD (pid_t)
+
+* Sun May 30 2004 Andreas Aardal Hanssen <andreas-binc at bincimap.org>
+- A compile fix in configure.in by removing unnecessary quoting.
+
+* Tue May 25 2004 Andreas Aardal Hanssen <andreas-binc at bincimap.org>
+- Added Henry Baragar's patches to fix the untagged NO responses
+ for unsupported commands. The responses are now tagged.
+
+* Sun May 23 2004 Andreas Aardal Hanssen <andreas-binc at bincimap.org>
+- UID STORE now responds with a UID data member as part of the
+ untagged FETCH responses.
+- When copying, the message is now rewound before data is read. This
+ fixes partial copies of messages that have recently been parsed.
+- bincimapd now takes the mailbox path as an option unqualified
+ argument to bincimapd, which overrides the mailbox path inherited
+ from bincimap-up or set through command line options. This fixes
+ a problem with vmailmgr.
+- Added Daniel James' patch for fixing fetching of RFC822.TEXT,
+ which should be equivalent to BODY[TEXT] but included the header
+ in the response.
+
+* Fri May 21 2004 Andreas Aardal Hanssen <andreas-binc at bincimap.org>
+- Fixed problem with the sequence set '*'. Binc IMAP claimed no
+ messages matched this set, but now the highest UID or sequence
+ number matches.
+
+* Sun Apr 18 2004 Andreas Aardal Hanssen <andreas-binc at bincimap.org>
+- Released 1.2.7final
+
+* Mon Apr 12 2004 Andreas Aardal Hanssen <andreas-binc at bincimap.org>
+- Added Gerrit's patch to compile on certain 64bit architectures.
+
+* Sun Apr 03 2004 Andreas Aardal Hanssen <andreas-binc at bincimap.org>
+- No longer wastes time in configure step checking for features that
+ we don't check defines for in the sources.
+- No longer checks for sstream/ostream - we don't use them anyway.
+- Updated man pages to be slightly more accurate.
+- From now of, Binc IMAP's tarballs by default install under
+ /usr/local, and setting --prefix will change this path. All Binc
+ IMAP files will be contained inside this directory. The RPM packages
+ are completely unchanged from before, and still use /opt/bincimap,
+ and so on.
+- Updated README to reflect this new packaging style.
+- Binc now generates maildir message names that conform to DjB's
+ suggestions for modern delivery agents.
+- Released 1.2.7beta6-1
+
+* Sun Mar 07 2004 Andreas Aardal Hanssen <andreas-binc at bincimap.org>
+- Fixed a mistake with handling the new command line parser. The
+ precedence of global config, command line arguments and local config
+ are now identical to that in 1.2.6.
+- Released 1.2.7beta5-1
+
+* Thu Mar 04 2004 Andreas Aardal Hanssen <andreas-bin at bincimap.org>
+- configure.in now also searches correctly for the OpenSSL include
+ path.
+- Updated info on default locations for service files in README.in.
+- Removed down files from supervise directories.
+- Added option to force scanning when doing a pendingUpdates().
+ This will also force all messages in new/ to be moved to cur/
+ regardless of how the messages were stored there.
+- Refined the algorithm for moving messages from new/ a tad; messages
+ created by Binc IMAP now get the string BincIMAP in their name.
+ Messages with BincIMAP in their name are always moved from new/
+ immediately, otherwise the timestamp is checked.
+- Released 1.2.7beta3-1
+- Typo in operator-append.cc fixed.
+- Released 1.2.7beta4-1
+
+* Tue Mar 02 2004 Andreas Aardal Hanssen <andreas-binc at bincimap.org>
+- COPY now uses the canonical form of the destination mailbox, so copying
+ to "Inbox/go" is interpreted as "INBOX/go".
+- Released 1.2.7beta2-1
+
+* Sun Feb 21 2004 Andreas Aardal Hanssen <andreas-binc at bincimap.org>
+- SELECT also reports RECENT and EXISTS on empty mailboxes.
+- Fixes to the prioritization of default args over command line options.
+- Fixes to configure.in allow correct handling of --with-openssl-libs
+ option.
+- The magic "." mailbox with IMAPdir is now skipped.
+- Added configure.in autocheck for -lsocket.
+- Default values of --localstatedir, --sysconfdir and --datadir fixed.
+- Fixed errors in README and README.SSL.
+- Released 1.2.7beta1-1
+- Fixed more errors in configure.in with detection of SSL libs.
+
+* Tue Feb 10 2004 Andreas Aardal Hanssen <andreas-binc at bincimap.org>
+- Replaced command line parser, as a first step towards completely
+ eliminating all mysterious problems related to the ordering of
+ command line arguments.
+
+* Thu Feb 05 2004 Andreas Aardal Hanssen <andreas-binc at bincimap.org>
+- Released 1.2.6-1
+
+* Tue Feb 03 2004 Andreas Aardal Hanssen <andreas-binc at bincimap.org>
+- Obfuscated email addresses in AUTHORS and sources files.
+- Removed tests directory from distribution
+- Moved xinetd and service scripts to localstatedir, which defaults
+ to /var/opt/bincimap. This has not yet been enabled in the RPM
+ files.
+- Fixed the checks for the OpenSSL libraries. It now also attempts to
+ link OpenSSL, and searches several standard locations.
+- The configure script now treats --enable-static and --disable-static
+ properly.
+- Cleaned up configure.in somewhat
+- Added "ca path" to bincimap.conf and command line options.
+- The new "ca path" and "ca file" options are now used to read CA
+ certificates. This did not work properly before.
+- Updated man pages with these new changes.
+- Added proper handling for systems that use <sys/wait.h> instead of
+ <wait.h>.
+- Increased internal transfer buffer size from 1024 bytes to 8192 bytes.
+- Added a fix in io-ssl.cc which only does a select on stdin if
+ SSL_pending() returns 0. This prevents a lockup in APPEND, among
+ others.
+- A fix in maildir-readcache.cc handles empty mailboxes properly,
+ also when the cache files are missing.
+- The cache files are always generated on first select, unless the
+ mailbox is selected in read-only mode (EXAMINE).
+- Improved documentation and logging in maildir-scan.cc.
+- Speedup in copying of files. We no longer wait 1 second for each
+ copy, but only as many microseconds as necessary for ensuring that our
+ own file names do not collide. We still wait one second before moving
+ external new/ messages into cur/.
+- Bumped cache file format because of a regression introduced in 1.2.4
+ which miscalculated message sizes, causing lockups.
+- Fixed the bug that miscalculated message sizes.
+- Fixed mime-printheader.cc. The merge of the output of BODY[TEXT]
+ and BODY[HEADER] is now exactly the output of BODY[], and its size
+ is the same as RFC822.SIZE.
+- Fixed a bug in APPEND where months were stored off-by-one.
+- APPEND now reads chunks of 8192 bytes instead of 1024.
+- Improved algorithm in APPEND make the code easier to read and
+ maintain.
+- Added --depot=[Maildir++|IMAPdir] command line option.
+- 1.2.6beta5-1
+
+* Tue Jan 20 2004 Andreas Aardal Hanssen <andreas-binc at bincimap.org>
+- Removed time_t <-> int implicit conversion and overload ambiguity.
+- Rewrote the flow of the APPEND command, and the readStr command
+ in io.cc.
+- Fixed behavior of fetching TEXT attribute.
+- 1.2.6beta3-1
+
+* Fri Jan 16 2004 Andreas Aardal Hanssen <andreas-binc at bincimap.org>
+- Fixed a bug where FETCH sometimes claimed that mime parts had
+ the wrong size.
+- Reverted an erroneous change from 1.2.3 to 1.2.4 in io.cc, where
+ readStr() no longer initialized the input buffer to "".
+- AppendOperator now stores the correct date on saved messages.
+- 1.2.6b2-1
+
+* Wed Jan 14 2004 Andreas Aardal Hanssen <andreas-binc at bincimap.org>
+- Two bugs were fixed that prevented a message that was saved to a
+ mailbox from getting the requested internaldate.
+- A bug in the unfolding of MIME headers erroneously removed what was
+ believed to be comments from within quoted text. This messed up
+ parsing multipart messages with parenthesis in their boundary
+ strings.
+- 1.2.6b1-1
+- Removed folder prefixes from header comments in all files. The
+ comments now only mention the base name of the file.
+
+* Mon Jan 12 2004 Andreas Aardal Hanssen <andreas-binc at bincimap.org>
+- LIST and LSUB now return X if X/* is queried for, as recommended
+ by Marc Crispin on the IMAP protocol list.
+- AUTHENTICATE PLAIN now writes "+ \r\n" instead of "+\r\n" as an
+ initial response. KMail got confused by only the "+", while pine
+ got confused by "+ OK". This compromise makes AUTHENTICATE PLAIN
+ work for both clients, while still being completely IMAP compliant.
+- Added Daniel James' patch which fixes HEADER.FIELDS.NOT behavior.
+
+* Fri Jan 09 2004 Andreas Aardal Hanssen <andreas-binc at bincimap.org>
+- Fixed problem with APPEND locking up
+- Fixed bug where clients were not informed when messages were
+ expunged.
+- 1.2.5-1
+
+* Thu Jan 08 2003 Andreas Aardal Hanssen <andreas-binc at bincimap.org>
+- Headers now display 2002-2004 in copyright notice.
+- 1.2.4-1
+
+* Wed Jan 07 2003 Andreas Aardal Hanssen <andreas-binc at bincimap.org>
+- Removed mime-printstruct.cc - it caused compile problems, and is
+ not in use.
+- Added Zak Johnson's patch to fix TRYCREATE
+- Added Jason Parson's patch to fix a problem with creating lock files.
+ The open function didn't get the mode argument, and the lock was
+ created with random mode bits set.
+
+* Thu Dec 18 2003 Andreas Aardal Hanssen <andreas-binc at bincimap.org>
+- Removed lex/yacc storage parser and replaced it and the whole
+ Storage class with a new approach. This uses less memory and is
+ faster. Refactoring of units depending on Storage was required.
+- Binc no longer requires the SSL cipher list to be set. If left
+ empty or not set, the default ciphers in OpenSSL are used.
+
+* Mon Dec 15 2003 Andreas Aardal Hanssen <andreas-binc at bincimap.org>
+- Removed memory bloat. Binc IMAP no longer reads entire fetch
+ responses into memory before outputting them, with the exception
+ of header fetch responses.
+
+* Mon Dec 08 2003 Andreas Aardal Hanssen <andreas-binc at bincimap.org>
+- Fixed two bugs in FETCH that messed up the fetch attributes and
+ gave the full header when fetching only selected fields.
+- Fixed a bug in the MIME parser. We now successfully parse
+ Mark Crispin's torture tests completely.
+
+* Fri Dec 05 2003 Andreas Aardal Hanssen <andreas-binc at bincimap.org>
+- Server now correctly displays BAD response if the stub is not
+ parsed correctly.
+
+* Thu Dec 04 2003 Andreas Aardal Hanssen <andreas-binc at bincimap.org>
+- Added README.SSL
+- README and README.SSL now mention the LifeWithBincIMAP.org site.
+
+* Tue Dec 02 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- The version number in the IMAP greeting can now be switched off with
+ the "version in greeting" option in Security in bincimap.conf.
+- The conf files now accept the '#' character as the start of a comment,
+ except when quoted.
+- Log now reports correct number of (unencrypted) bytes read or written.
+
+* Fri Nov 28 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Implemented support for fetch attributes ALL, FULL and FAST, which
+ for some reason had no implementation yet.
+- Fixed two bugs in operator-authenticate.cc in reading input to the
+ AUTHENTICATE command. Basically the server would loop forever if
+ the client suddenly disconnected while Binc was reading the
+ arguments.
+- Leaving the jail settings in Security{} in bincimap.conf empty
+ will prevent bincimap-up from entering the chroot jail and becoming
+ the jail user/group, but will no longer issue any warnings about it.
+- Greeting now uses (C) after Copyright instead of (c) before it.
+- Removed almost all time(), alarm() and signal() use. Use of this
+ technique for detecting timeouts is very error prone. We now use
+ select() instead.
+- Major changes to parser allow better detection of timeouts, and more
+ proper error reporting.
+
+* Tue Nov 25 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Applied Zak Johnson's patch for fixing a typo in using the
+ "environment ip variable" setting in bincimap.conf.
+
+* Tue Nov 17 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Fixed problem in maildir.cc where messages that are created with a
+ given internaldate always got time(0) instead.
+
+* Tue Oct 28 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Fixed typos in README
+
+* Tue Oct 04 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Added Gerrit's patch to solve operator<< ambiguous overload.
+
+* Tue Sep 29 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Added doxygen docs.
+
+* Fri Sep 26 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Added Jeremy Rossi's patch, which allows plain text authentication
+ if the environment variable ALLOWPLAIN is set. This can be used by
+ tcpserver to allow plain text authentication for clients connecting
+ from certain IP addresses.
+
+* Tue Sep 23 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Added cache to LIST requests - speeds up consecutive LIST requests
+ significantly.
+
+* Sun Sep 21 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Added new scripts to files section in spec file. The scripts were not
+ installed with the earlier rpm packages.
+
+* Sat Sep 20 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Added scripts: "toimapdir", "tomaildir++" and "checkpassword.pl"
+- Fixed two bugs in the MIME parser.
+- Improved error reporting when creating mailboxes with invalid names.
+- 1.2.3-1
+
+* Thu Sep 18 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Fixed STATUS to more properly report recent and uidnext.
+- Fixed maildir-scan.cc to correctly parse unique part of messages that
+ erroneously contain more than one ':'. Specifically, the former parser
+ assumed the ':' was always followed by ",2".
+
+* Wed Sep 17 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Fixed problem with some mailboxes being marked as \Noselect when
+ selectable. Not related to Mozilla mailbox error.
+- Removed some useless log output.
+
+* Sun Sep 14 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Fixed memory leak in bincimapd by adding reference counting.
+- LSUB sets \Noselect again
+- bincimap-subscribed is now called .bincimap-subscribed. The format is
+ greatly simplified. Existing subscribe-files are automatically
+ converted to the new format.
+
+* Wed Sep 10 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- "make cert" no longer uses absolute paths for mktemp and openssl.
+- LSUB always reads subscribed entries from bincimap-subscribed.
+- 1.2.2-1
+
+* Tue Sep 09 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Fixed bug in MIME parser where message sizes were mixed up, causing
+ some bodies to be reported as empty. Pine reacted to this bug by
+ reporting an unexpected message size.
+
+* Sat Sep 06 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Fixed bug in fillInputBuffer when converting CRLF files.
+
+* Fri Sep 05 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Greeting now displays time in 24h style instead of 12h style
+ with missing AM/PM.
+- Fixed bug in MIME parser where mozilla did not display attachments
+ correctly.
+- MIME parser speedup for partial content fetches
+- MIME parser now uses unsigned ints everywhere.
+- Artifact off-by-two error in mime parser is now gone.
+- BODY response now correctly terminates with a matching ')'.
+
+* Fri Sep 04 2003 Jurgen Botz <jurgen at botz.org>
+- parameterized rpm for '--without ssl' and '--with inusr'
+- parameterized version and release (use with --define)
+- use configure macro so all the paths are passed to configure
+ (this might help in future if more paths get used)
+- fixed the install and files sections to allow installing into
+ either /usr or /opt while conforming to FHS
+- shared directories shouldn't be owned by the package (i.e. /opt,
+ /etc, etc.)
+- use the doc macro to install doc files
+
+* Tue Sep 02 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- COPY now correctly reports errors with [TRYCREATE] if the destination
+ mailbox does not exist.
+- supervise files are now in service/ and not supervise/.
+- 1.2.1-1
+
+* Sun Aug 31 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Fixed so supervise/imaps/run and log/run are copied from the correct
+ source for "make install"
+- Fixed bug in STATUS with Maildir where only messages whose file names
+ started with a digit were counted.
+- bincimapd man page now has an ENVIRONMENT section.
+
+* Fri Aug 29 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Removed '-v' option from all 'rm'. This option is not defined on
+ OpenBSD.
+
+* Thu Aug 28 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Fixed problem with hanging bincimapd
+- Known bug: STATUS does not report correct UIDNEXT when there are recent
+ messages. A temporary fix has been added, which has a non serious race
+ condition.
+- 1.2.0-1
+
+* Sat Aug 23 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- BincStream is now a subclass of ostream again, after reports about
+ hanging processes.
+- Added "make cert" for creating an SSL certificate.
+- Changed default certificate location in bincimap.conf to the same
+ directory as bincimap.conf.
+- Passing --localstatedir to configure now sets the prefix for the log
+ dirs for multilog.
+- The log/run files now log to the localstate set directory.
+- Added version to README file.
+- "make install" no longer overwrites existing conf/run/xinetd files.
+- Added notice to end of "make install" output.
+- Now reports argument (hasn't done this for a while).
+
+* Fri Aug 22 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- RENAME now renames hierarchies of mailboxes correctly also when the
+ destination name is longer than the original name.
+
+* Sun Aug 17 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Fixes to mime-utils.h make it compile on more platforms.
+- TestBincStream binary is no longer installed
+- Depot code removed from bincimap-up, it doesn't belong there.
+- operator-logout doesn't have mailbox code in bincimap-up.
+- 1.2.0b1
+
+* Sat Aug 16 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Replaced fgetcCRLF with a buffering much simpler alternative. Also
+ with support for Mac files (so \r, \r\n and \n are all converted to
+ proper \r\n before processing). 20% speed increase on parser because
+ of this.
+- Fixed memory leak problem with fopen and open used on same file
+ descriptor.
+
+* Fri Aug 15 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Fixed bug where UID COPY treated sequence set as sequence numbers and
+ not UIDs.
+
+* Sat Aug 16 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Replaced fgetcCRLF with a buffering much simpler alternative. Also
+ with support for Mac files (so \r, \r\n and \n are all converted to
+ proper \r\n before processing). 20% speed increase on parser because
+ of this.
+- Fixed memory leak problem with fopen and open used on same file
+ descriptor.
+- 1.2.0b1
+
+* Fri Aug 15 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Fixed bug where UID COPY treated sequence set as sequence numbers and
+ not UIDs.
+
+* Thu Aug 14 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Fixed link copying. Messages are now sorted by internaldate on first
+ select. Then it is sorted by arrival. This allows copying while keeping
+ internaldate. Note that we now keep both flags and internaldate when
+ copying or appending messages.
+- 1.1.9-1
+
+* Tue Aug 12 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Fixed issues with cache and losing file descriptors.
+
+* Mon Aug 11 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Decided to bump the cache version number because the new message
+ sorting algorithm gives a different order of arrival than before. This
+ forces all new clients to resync their mailboxes.
+
+* Thu Aug 07 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Any files in cur/ and new/ are treated as messages.
+- Internaldate of messages is now acquired by stating files and not
+ by simply inspecting the filename.
+
+* Thu Jul 31 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Replaced all use of exceptions with return values, or sometimes by
+ ignoring errors that are not worth reporting.
+- Size of binaries is down by 35% when Binc IMAP now compiles with
+ -fno-exceptions. Those 35% extra were in the data segment,
+ and they were actually not shared among processes. No thanks to the
+ gcc team for bloating g++ binaries that use exceptions. :-)
+- Implemented full buffering of input and output. Earlier versions
+ read and wrote data byte by byte, all is now buffered.
+- COPY and APPEND operations now keep message flags.
+- Depot -> Mailbox -> Message API is greatly improved. There is now
+ no MIME or Maildir specific code in operators. Approaching point
+ where we can introduce more backends.
+- Mailbox iterator design is much better than before. Depot and Mailbox
+ iterators are implemented as proxy objects.
+- Improved processing of messages makes parser single-pass. Measurements
+ have shown a performance increase of over 40%.
+- Memory footprint of messages is smaller.
+- Maildir message cacheing is greatly improved, and controlled
+ completely by the MaildirMessageCache singleton. The File class is
+ gone.
+- Unsigned ints everywhere allow UID, UIDVALIDITY, sequence numbers
+ and sizes to be in the full range 0-4294967295.
+- Largefile support (O_LARGEFILE).
+- Renamed Command to Request (which is more accurate).
+- Renamed BincImapParserSet to SequenceSet.
+- Improved log output and error reporting.
+- Fixed a bug with subscribing to mailboxes. If you subscribed to a
+ mailbox that didn't exist (which is ok), it wasn't listed in the
+ output of LSUB. Now it is, but with \NoSelect.
+- Added openlog patch, which fixes a problem with trash log output
+ when using syslog.
+- Added the subfolders patch, which fixes the bug where Binc IMAP
+ would claim that no subfolder creation was allowed, although it
+ was.
+- Switched main development platform to SuSe Linux, so now we have
+ SuSe packages (for 8.2) in addition to the RedHat packages.
+
+* Sat May 31 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Fixed bug in operator-capability.cc that did not advertise STARTTLS
+ correctly.
+
+* Fri May 30 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- All NULL replaced with 0.
+- Cosmetics on .h files, removed lots of whitespace.
+
+* Sun May 25 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- More work on the manual
+- Added manual to distro
+- 1.1.8-1
+
+* Fri May 23 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- FETCH ENVELOPE now correctly defaults sender and reply-to fields to
+ the from-field.
+
+* Thu May 22 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Applied Gerrit's patch to allow compile with gcc-3.3
+- Fixed a bug for strstream users in BincStream that assumed a
+ stream was 0-terminated after a clear() even though that wasn't
+ always true.
+- Fixed typo in operator-login.cc that disallowed plain text auth
+ in ssl connection.
+- Removed extensive logging from operator-append.cc
+- Added more contributors to AUTHORS file
+- Added Sergei's patch to install-exec-hook and uninstall-hook
+
+* Tue May 20 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Minor change to mailbox/mailbox.h allows linking of bincimap-up without
+ adding the mailbox library.
+- 1.1.7-1
+
+* Mon May 19 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Added short options support for the new argument parser. Now has
+ more logical short option characters than before.
+- Updated man pages with new short options
+- Removed the --debug argument completely. Use --ssl instead.
+- Added workaround for compiler bug using FreeBSD and gcc 2.95.x.
+- Wrote more on Binc manual.
+
+* Sun May 18 2003 Eivind Kvedalen <bincimap at eivind.kvedalen.name>
+- addCapability added to BrokerFactory
+- Default capabilities moved to CapabilityOperator::CapabilityOperator.
+- Old argument parser removed
+- New argumentparser implemented
+- Storage::hasKey added
+- Storage::get added
+- Command::extra is now public
+- Session::parseCommandLine added
+
+* Sun May 18 2003 Eivind Kvedalen <bincimap at eivind.kvedalen.name>
+- addCapability added to BrokerFactory
+- Default capabilities moved to CapabilityOperator::CapabilityOperator.
+- Old argument parser removed
+- New argumentparser implemented
+- Storage::hasKey added
+- Storage::get added
+- Command::extra is now public
+- Session::parseCommandLine added
+
+* Sun May 18 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Added first draft of the Binc IMAP manual.
+- Removed redundant getcwd() from bincimapd.cc.
+- Removed gnugetopt / getopt_long requirement.
+- Updated html documentation
+- Fixed a bug in FETCH with multipart extension data.
+- 1.1.6-1
+
+* Tue May 13 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Added basic statistics to log output when client logs off
+- A temporary hack in the mime parser was added to prevent empty mime
+ parts to have a negative size.
+- Added uninstall hooks.
+
+* Mon May 12 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- manpages are now installed correctly from the tarball.
+- log prefix is now fixed and enabled for multilog type logging only
+- getpid is only grabbed once in the IO constructor
+- Session now properly supports importing and exported data to environment
+- bincimapd no longer reads command line arguments or globalconfig,
+ but inherits them from the environment.
+- man pages for bincimap-up and bincimapd were updated with new command
+ line options (all are passed to bincimap-up)
+- service and xinetd files no longer pass configuration details to
+ bincimapd.
+- CAPABILITY no longer reports auth or starttls capabilities in
+ authenticated state
+- Removed excessive logging from LIST output.
+- Fixed "auto create inbox" functionality for both empty and non-empty
+ Mailbox paths, and for both IMAPdir and Maildir++.
+- Removed intercomerr tunnel from authenticate.cc
+- authenticate.cc exports state to environment before invoking
+ authenticator.
+- Added install hooks for service/ and service/log/ files
+- Added install hooks for xinetd and conf files.
+
+* Sat May 10 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- bincimapd now interprets command line args before anything else (allows
+ --version etc..)
+
+* Thu May 08 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Updated man pages to point to the bincimap.org site
+
+* Mon May 05 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Added Gerrit's be-nice patch "diff" to convert.h, replacing a switch
+ with a series of if-tests, working around a compiler bug on the Alpha
+ platform for FreeBSD and Debian ports.
+- LSUB now always sorts subscription list before showing it to the
+ client.
+- Removed log output from LOGIN - authenticate.cc logs enough already.
+- In authenticate.cc, jail is entered after first chunk of data (the
+ ok response) is written from bincimapd. Fixes bug where retrying a failed
+ password would always fail.
+- Improved log output in authenticate.cc.
+- Removed the kill(...) calls in authenticate.cc, they could lead to some
+ unintended behavior if pids cycle.
+- Improved log output in bincimap-up and bincimapd.
+- In INSTALL, inserted one line at top referring to README.
+- In README, cleaned up examples, added notes about securing the service.
+- Updated FAQ with notes on configuring mailboxes and submailboxes.
+- Fixed "make install" - added hooks that create the sysconfdir directories
+ and copy conf files to right places.
+- configure --prefix and --sysconfdir now have default values and are no
+ longer required arguments.
+
+* Wed Apr 23 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Moved addressToParenlist into Address class
+- Removed some switches from inline convert.h functions
+- Added Tools singleton class, meant to take over for convert.h,
+ regex.h etc.
+- Started working on exporting and importing whole session object
+ to/from environment.
+- Made some very minor improvements to log output in authenticate.cc
+- For Maildir, messages in new/ are now also counted as unseen. This
+ bug caused several clients to report the wrong number of unseen
+ messages.
+- Added some ostream and ostream.h includes to io.cc and added std::
+ prefixes.
+- SUBSCRIBE no longer checks if what you wish to subscribe to is a
+ valid mailbox.
+- COPY and SEARCH use dynamic arrays instead of stack allocated
+ arrays. This is to satisfy ISO C++ restrictions.
+- Removed some unused variables
+- umask is now read as an unsigned int
+- Cleaner exit in authenticate.cc after adding breaks
+- Fixed bug in LSUB output. Folders with dots and backslashes are
+ now properly supported.
+- 1.1.5-1
+
+* Thu Apr 10 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Removed optimization in LIST, as it turned out to give wrong
+ interpretation of leaf nodes. Improved algorithm is on its way.
+- Changes to BincStream's dummyclass for cross-platform compatibility
+- Project now compiles with "-Wall -ansi -pedantic". On some platforms,
+ only if SSL support is not included (OpenSSL headers do not always
+ compile under these restrictions). Only one warning is given in
+ greeting.cc where '%z' is not ISO C++.
+
+* Mon Apr 07 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Renamed BincImapParserCommand to Command
+- Fixed FETCH BODY, acted like BODY[]
+- Removed tunneling of log data, bincimapd and bincimap-up now log
+ seperately.
+- Fixed bug in APPEND parser which disallowed empty flag list.
+- 1.1.4-1
+
+* Sun Apr 06 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- LIST now first checks with the wildcard, then does a test for wether
+ or not it's a mailbox. Speed-up.
+
+* Fri Apr 04 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Fixed flags in LIST
+- LIST now uses Depot::iterator to find entries
+- LIST does not include elements that are not mailboxes unless they
+ qualify as superiors of mailboxes.
+- Minor fixes in Storage::save method now may be a bit faster.
+- Removed SSL comment in bincimap-up
+- Fixed wording in error message when running an undefined/disallowed
+ command
+- Removed some unused variables
+- Removed trailing CR from error when a syntax error is discovered in
+ storage files.
+- Minor change to storage grammar action might speed up parsing of storage
+ files a tad.
+- Fixes to BincStream allow it to work fine with iomanip/ostream
+ operators. Old strstream does not work.
+
+* Thu Apr 03 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Added Ben Schumacher's regex patch which fixes a regex problem under
+ FreeBSD.
+- Replaced all sstream/stringstream with BincStream, cleaning up the
+ code a bit.
+- Made delimiter in toRegex configurable.
+
+* Wed Apr 02 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- 1.1.3-1
+
+* Tue Apr 01 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Created Status class, and added getStatus and getStatusID to Mailbox.
+- Moved much of StatusOperator process code into Depot.
+- In bincimap-up, IP from environment is now inserted into Session.
+- When unable to translate mailbox name to filename, Depot now gives
+ more comprehensible error message.
+- Removed some unused com/logger variables
+- Improved feedback from parser for some operators.
+- Added --with-ssl and --without-ssl to configure.
+
+* Mon Mar 31 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Added includes, fixing compile problems with FreeBSD.
+- Removed log info about operator exception
+
+* Sun Mar 30 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Fixed so STARTTLS starts an SSL negotiation. This broke in 1.1.2-1.
+
+* Sat Mar 29 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Added jail-path, jail-user and jail-group to argument list.
+- Updated man pages.
+- Added timeout to select in authenticate.cc
+- 1.1.2-1
+
+* Fri Mar 28 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Fixed segfault when calling bincimapd directly with invalid contents
+ of BINCIMAP_LOGIN in environment.
+- Added default umask 0777 if none is provided.
+
+* Thu Mar 27 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Moved create, delete and rename logics into Depot and out of Operators.
+ I'd like to enforce that only the Depot knows anything about the
+ map between file names and mailbox names.
+- Fixed a bug in rename that disallowed renaming a/b/c/d to e/b/c/d
+ unless a, a/b, a/b/c and a/b/c/d all existed.
+- Added bumpUidValidity method to Mailbox and Maildir
+- Moved compareNodes in search operator into SearchNodes class.
+- Added chroot, setgroups, setuid and setgid to bincimap-up stub. Added
+ configuration options to conf file in new "Security" section.
+- Created IOFactory singleton, which now handles IO objects correctly.
+- Seperated regular IO from SSL enabled IO. bincimapd does no longer link
+ against the ssl libraries and has no ssl code in it.
+- Stripped down libraries in bincimap-up, reducing code size.
+- Added NoopPendingOperator and removed pendingUpdates from regular NOOP
+ operator. bincimap-up uses only the stripped NOOPoperator. This allows
+ us to remove the pendingupdates code from bincimap-up.
+
+* Wed Mar 26 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Fixed a bug in the mime parser where the byte offset was used to seek
+ using fgetcCRLF. Replaced that with fseek and now fetching headers/mime
+ of sub-mimeparts is working fine again.
+- Fixed similar problem in mime-printbody, which now seeks using fseek.
+- bincimap-up now pipes log data from child.
+- Removed support from anything other than stderr logging from
+ authenticated daemon.
+- Cleaned up the logics in FETCH when fetching different types of BODY
+ data. Now supports fetch att MIME correctly.
+- 1.1.1-1
+
+* Tue Mar 25 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Added iterator to Depot class for stepping through depot entries
+- Added hierarchical rename
+- Fixed problem with some clients not allowing users to subscribe to
+ subfolders
+- APPEND now uses Depot to acquire file names
+- LIST and LSUB removes leading and trailing hierarchy delimiters
+- Added examine operator (missing in 1.1.0)
+- Set default "verify peer" to "no".
+
+* Mon Mar 24 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Updated README
+- Added technical documentation draft
+- Added IMAPdir spec draft
+- Removed usage.cc. Replaced with a pointer to man pages.
+- Added bincimap-up binary
+- authenticate.{cc,h} now sets up a tunnel between the client and the
+ authenticated daemon. SSL is managed by the unauthenticated stub.
+- Started enforcing conventions for formatting the source files. Document
+ is under progress.
+- bincimapd, now the authenticated daemon, can no longer do any SSL
+ related activity.
+- bincimapd now reads BINCIMAP_LOGIN from the environment to determine
+ what the response to the stub's authenticate or login commands should be.
+- To meet with checkpassword's conventions, bincimapd now exits with code
+ 111 on internal errors.
+- Removed quite a lot of debugging info
+- const-ified more functions.
+- Added IMAPdir and MaildirPP classes
+- Removed greeting.h
+- showGreeting is now self declared.
+- Removed most of the hungarian notation in the main classes
+- Added Session instance where needed
+- LIST and LSUB now use Depot to identify mailbox types
+- Added access to argc and argv to Session
+- Added pending() method to IO, to check for pending data. Always 0 if not
+ MODE_SSL.
+- readChar can now return -2, meaning that in SSL mode the read call must
+ be repeated.
+- DELETE in maildir.cc can not delete mailbox (which was actually allowed
+ before)
+- Maildir now does not care about IMAP mailbox names, only file names.
+- Removed "singular" concept from args parser.
+- Updated xinetd and supervise run files to match new invocation method.
+- Added goals doc
+- LIST no longer sets \Marked
+- 1.1.0-1
+
+* Thu Mar 20 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Removed bincimap-auth-checkpassword and bincimap-uidpwd completely
+ from the project
+- Added privilege seperation. Unauthenticated daemon is bincimap-up.
+ Authenticated daemon is bincimapd. Only checkpassword compatible
+ authenticators are supported.
+- Enabled local config settings. Users can now choose path, default
+ Mailbox type and depot type (IMAPdir/Maildir++). Default is Maildir++.
+- Added full support for IMAPdir and Maildir++ via pluggable Depot
+ objects in DepotFactory.
+- Made DepotFactory and BrokerFactory singletons.
+- Made delimiter character a variable in depot.
+- Cleaned up some code. bincimap-up.cc and bincimapd.cc still look very
+ bad.
+- Added technical documentation draft to docs
+- Added updated FAQ to docs
+- Added IMAPdir spec draft to docs
+
+* Tue Mar 18 2003 Eivind Kvedalen <eivind at kvedalen.name>
+- Fixed error messages in the various implementations of
+ the Operator::parse method.
+
+* Tue Mar 18 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Improved Storage::save algorithm
+- Improved Storage::load algorithm
+- Removed excessive logging
+- Changed pendingUpdates to optionally rescan for changes
+- Added speedup to SEARCH
+- Added minor speedup to fgetcCRLF functions
+- Storage now saves in PRETTIFY mode instead of MINIMIZE. Adds speed.
+ The MINIMIZE algorithm is undergoing maintenance.
+- Moved subscribed, cmdargs, globalconfig, localconfig, userid, ip
+ and state into new singlton called Session.
+- Added session.cc and session.h
+- Moved RETURN enum into Operator
+- Moved STATE enum into Session
+- Removed bincimapd-config.{cc,h}, bincimapd.h, bincimapd-commands.{cc,h}
+- Added initconfig.cc with most of bincimapd-config.cc's old content.
+
+* Mon Mar 17 2003 Eivind Kvedalen <eivind at kvedalen.name>
+- Clean-up in depot.h
+- getOperator added to Broker
+- parse() method added to Operator classes
+- parse() method implemented in operators. Code moved from
+ recursivedescent.cc
+- BincImapParserData added to BincImapParserCommand class
+
+* Mon Mar 17 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Fixed a silly bug in SEARCH UID which caused a segfault.
+- authenticate() now takes a Depot as input.
+- Initial mailbox create (INBOX) is done with default mailbox from
+ Depot
+- pendingupdates() now takes a Mailbox as input
+- Removed global mailbox pointer from bincimapd-config.{cc,h}
+- Changed error when expecting set instead of string in recursivedescent.cc
+- Weaved in Depot support in all operators
+- Removed references to global mailbox pointer.
+- Added rollback to UID operator parsers.
+
+* Sun Mar 16 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Constified loads of variables in Operators
+- Added BincException. All Exceptions now inherit BincException.
+- Added Depot. Broker now processes the Depot with the Operator
+- Made Operators' process method const.
+
+* Sat Mar 15 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- First stage of new design incorporated. Brokers and Operators are
+ introduced.
+- Converted all functions to operators that work properly.
+- Added support for IMAPdir schema.
+- Maildir::imapCreate no longer adds the "maildirfolder" file to the
+ depository.
+
+* Fri Mar 14 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Removed all other namespaces than Binc. We are moving to a more
+ object oriented approach.
+
+* Thu Mar 13 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Renamed MessageDepot to Mailbox
+
+* Tue Mar 11 2003 Eivind Kvedalen <eivind at kvedalen.name>
+- Plain authentication bug fixed
+- New iterator has been added to MessageDepot class
+- Caching of previous messages moved to MessageDepot class.
+
+* Tue Mar 11 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Auth method no longer uses environment. Uses netstrings.
+- Support for gnugetopt (for BSD) - untested. Removed support for regular
+ getopt. getopt_long is now required.
+- Updated FAQ
+- Improvements in "auto create inbox".
+- 1.0.25-2
+
+* Fri Mar 07 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Added function toCanonMaildir to util
+- Fixed a bug in mime-parseheader.cc that didn't set the header length.
+- Fixed a bug in imapparser.cc that prevented "FETCH *" requests.
+- Moved imap close, select, delete, create, expunge, functionality to
+ maildir class
+- Some cleanups in message depot
+- Several functions now use toCanonMailbox
+- Cleaned up bincimapd-select.cc
+- SEARCH now does not parse header if whole message has already been parsed.
+- Better error reporting in most imap functions
+- Big speedup in LIST by eliminating unnecessary stats
+- Fixed a problem with parsing content type header
+- FETCH now only parses header if only header is fetched. (bugfix)
+- In authenticate(), depot object is created and lives throughout the
+ life of the imap session.
+
+* Tue Mar 04 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Removed inlining from recursivedescent.cc - if the user wants these
+ inlined, he can compile the source with -O3.
+- Cleaned up all Makefile.am files. Removed tab indentation and threw
+ all files on one line. This hopefully removes automake's funny "seperator
+ missing" complaints.
+- Fixed a bug that prevented a user from fetching only '*'.
+- Removed stray blank (0x20) character that was printed as part of the
+ bodystructure response.
+
+* Mon Mar 03 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Added exception to COPYING for linking against OpenSSL
+- Added COPYING.OpenSSL
+- Added GPL note to README
+- Some cleanup in getopt code
+- Added Caskey Dickson's setuid/setgid patch
+- Added Caskey's copy patch
+- Cleaned up the IO code
+- Removed repr() and syntaxexception code from imapparser
+- Moved DELETE into Maildir code
+- Cleaned up create and delete code
+- Added create and delete properly to MessageDepot
+- Added Syntax exception code to exceptions.cc
+- Added stderr as a logtype option. It's equivalent to multilog.
+- Moved case converted mailbox name out as seperate function
+
+* Sat Feb 22 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- 1.0.24-1
+- Added GPL notices to all files
+- Gathered all exceptions into one global exceptions file
+- Storage class creates shorter aliases than before
+- Removed lex/yacc code from argument parser - replaced with getopt
+- Fixed Maildir++ complaince in maildir-create.cc
+- Fixed message size cacheing
+- IO class is no longer a subclass of ostream
+- bincimap-uidpwd uses getcwd and not get_current_working_dir
+- Added --disable-starttls functionality, and added it to config, usage
+ and man pages.
+- Cleaned up man pages more - added copyright notice
+- Added FAQ to docs
+- Added contrib area, all contribs are now bundled.
+- Some bincimap.conf settings have changed. Defaul for allow plain auth
+ is "no".
+- Minor updates to README
+- Moved usage function to seperate file, out of bincimapd.cc
+- Moved some configuration details into bincimapd-config.cc
+- Now alternatively reads environment variable set in configuration
+- All conf file settings can be properly overrun with command line options,
+ except authenticators.
+- In authenticate.cc, proper handling of nonexistant root Maildir
+- Append sleeps for a second before returning to ensure IMAP integrity
+ rules with APPEND.
+- Removed comments about Outlook ;)
+- CAPABILITY does not advertise STARTTLS if --disable-starttls is passed
+- COPY moves chunks of 8k at a time instead of only one byte
+- FETCH only full-parses a message at an RFC822.SIZE request if the
+ size is not already cached.
+- LOGOUT no longer cares what's happened to the subscription list
+- RENAME says that renaming inbox is not supported, and it properly
+ explains that you can't rename a folder _to_ INBOX.
+- SEARCH parses messages if LARGER or SMALLER is queried for, and if the
+ size is not already cached.
+- STARTTLS will not run if --disable-starttls is passed
+- Restructured the RPM file.
+
+* Sun Feb 16 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- 1.0.23-1
+- Fixes to the man pages
+- Running bincimapd with --version shows version
+- Running bincimapd with --help shows complete command line option list
+- All conf settings are also command line settings
+- Removed option to set CA search path - use the CA file instead
+- Fixed problem with LSUB requiring user to quote wildcards
+- Auth timeout must be larger than 30
+- 1.0.23-2
+- Fixed a problem with CREATE which prevented users from creating
+ new folders. The new/ and tmp/ folders could also be removed by
+ mistake in this release.
+
+* Sat Feb 15 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- It's no longer allowed to create folders called INBOXsomething, without
+ the dot.
+- Added buffers to IO class to allow logging SSL errors.
+- updateFlags in Maildir:: no longer tries to update flags where no updates
+ have been made.
+- All auth modules are now pure C++
+- APPEND, COPY, CREATE, DELETE, RENAME, STATUS checks for valid
+ Maildir through toMaildir function
+- APPEND now fsyncs correct directory
+- Fixed the problem with server rejecting "syslog" as logtype in conf file.
+- Fixed putenv support in authenticate
+- Fixed log output in authenticate
+- conf files now use only --prefix
+- package is now prefixed
+- Split up maildir implementation and mime parser into smaller files
+- Added Ivan F. Martinez' teapop authenticator to contrib/authenticators
+
+* Tue Feb 11 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Removed all the C debug code (for SSL) from the IO class
+- Made SSL cipher list configurable
+- General clean up in IO class, better error messages.
+- SSL peer verification is now optional
+- Make install problems are now solved, and conf files are generated
+ correctly. Only one prefix needed to build the package.
+- Man pages! ^_^
+
+* Mon Feb 10 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Fixed problem with input parser "lock-up". The error was that the
+ output wasn't flushed.
+- IO class doesn't run openlog twice if both command line args and
+ conf file say to use syslog.
+
+* Sun Feb 09 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- 1.0.22-1
+- Fixed myisprint, allowing Storage class to save correctly.
+- Inserted prefix in spec file, as a first attempt to make the
+ package relocatable.
+- Replaced setenv with putenv, allowing compile on Solaris
+- LIST now shows nonexisting inferior mailboxes, with the NoSelect
+ flag set.
+- COPY now uses time(NULL) instead of passed timestamp when storing
+ messages in destination folder.
+- No longer creates .bincimap if none exists.
+
+* Sat Feb 08 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- 1.0.21-1
+- Minor changes to README
+- Added Log section with log type in config
+- Added "auto create inbox" to config - valid are "yes" or not "yes"
+- Added "auto subscribe mailboxes" for when no subscribed file is found
+- Added "umask" to Mailbox section - decides umask for whole session
+- Transfer timeout is now used correctly
+- Renamed regex files to 'regmatch' to avoid collision with posix regex
+- PCRE was removed - in goes posix regex library
+- Fixed toMaildir function to return relate rather than absolute path
+- Removed PCRE dependencies everywhere
+- Added fsync patch for file systems that don't support it - thanks
+ to Caskey Dickson for spotting this.
+- Removed debug logging from Storage implementation.
+- Moved mailbox creating into messagedepot and maildir classes.
+- Added mode, owner and group settings when creating mailboxes.
+- Added syslog support to IO class - somewhat messy, prefixed
+- Changed <wait.h> to <sys/wait.h> everywhere
+- Removed artifact from checkpassword auth stub, allowing use of non-passwd
+ based authenticators
+- Removed debug logging from pendingUpdates
+- All config settings are now read from global config file and used.
+- Added command line option --logtype to override log type settings
+- Subscription changes are now immediately saved to disk
+- STATUS now reports all recent for mailboxes with no cache file
+- LOGIN now correctly checks if plain text auth is allowed
+- LIST now search relative to cwd, instead of from /
+- Un-inlined some functions in FETCH do reduce memory exhaustion during
+ compile. The inlines are unnecessary.
+- CREATE now uses messagedepot::create
+- CAPABILITY now reports correctly whether or not plain text auth is
+ allowed.
+- AUTHENTICATE now interprets config correctly wrt plain text auth
+- authenticate function now always chdir's into Maildir.
+- non chroot should work properly now
+- All elements in "auto subscribe mailboxes" are inserted into the
+ subscribed list if there is no subscribed list. The list is then
+ saved to disk.
+- Subscribed list is saved to current directory instead of /
+- Checks for libdl, provides smooth compile under FreeBSD
+- Added logtype to service and xinetd files
+- xinetd files are now equal for ssl and non-ssl, except for the --ssl
+ option.
+- cleaned up configure.in a bit.
+
+* Tue Feb 04 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- 1.0.19-1
+- When a new cache file is created, all messages are not marked as recent
+ as before
+- Fixed big bug with expunged messages.
+- Bumped cache & uidvalidity file version to avoid problems with messed
+ up cache files from expunge bug.
+- SSL settings from conf file are now used in IO class
+- 1.0.20-1
+- Fixed bug: subscription folders are now read as the user authenticates
+- Fixed potential buffer overflow with improper use of sprintf
+- Fixed service file "xinetd-bincimaps" with relocatable files
+- Added README which describes installation procedure with tarball.
+
+* Sun Feb 02 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- 1.0.18-1
+- Added config.h support
+- Removed -j 2 from spec file
+- Removed Config class, replaced all uses with Storage
+- Compatibility: prefixed all namespace std-includes with ::.
+- Added more GPL headers to source
+- Added BEFORE, BODY, KEYWORD, ON, SINCE, UNKEYWORD, SENTBEFORE,
+ SENTON, SENTSINCE to SEARCH
+- More compatibility for lacking sstream support (untested)
+- Now allows STORE operations with empty flag list ()
+- Removed "fromhex" binary from distro
+- Fixed autoconf/automake problems with defining correct variables
+ on all known platforms.
+- Removed traces of per-ip-subscription
+- Almost all configurable settings can now be set through config file
+- time and flags are ignored in APPEND, because the former implementation
+ and any implementation doing otherwise stands in risk of losing mails
+ in the depository.
+- lex/yacc files are now not processed unless by explicitly performing
+ a "make grammar" in the args/ and storage/ directories.
+- Fixed bug in STATUS which reported negative number of RECENT messages
+- COPY no longer stores time stamp or flags
+- Now correctly shows LOGINDISABLED in non-SSL mode if plain auth is
+ not supported.
+- Support for AUTH=PLAIN - required by the protocol.
+- supervise and xinetd files are now generated and follow configure
+ prefices, except the log files.
+- Fixed bug with expunge and flag updates not getting reported properly
+
+* Sat Jan 25 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Added special case for not cacheing status folders with
+ messages in new/ less than one second old
+
+* Tue Jan 21 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Added support for RENAME. Does not yet support hierarchical rename.
+- Fixed a race condition with not detecting folder changes.
+- Added compatibility settings in build process (sstream->strstream for
+ old compilers, untested)
+
+* Mon Jan 20 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Added workaround for Outlook's broken "Inbox" prefix. If the uppercased
+ mailbox name is "INBOX", then it is set to "INBOX". If the uppercased
+ prefix of the mailbox is "INBOX.", then the prefix is replaced with
+ "INBOX.". This allows Outlook's "Inbox.subfolder" behavior.
+
+* Sun Jan 19 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- Fixed bug with lock file when selecting invalid maildir
+- Now only moves files from new/ to cur/ if time_t part shows file is
+ older than one second.
+- Never uses rename - always uses link() to prevent files from getting
+ lost.
+- Fixed fetch problem because of case sensitive matching on mime headers
+- Added --enable-static option to configure
+- STATUS now returns correct number of RECENT messages.
+- Added EXAMINE
+- Speed up in scan() first checks for folder chance using stat
+- Only 5 log files are kept, and they are rotated at 1MB.
+- Fixed problem with gcc2 interpreting setw and setfill different from
+ gcc3, causing Binc IMAP compiled with gcc2 to sort messages wrongly.
+
+* Mon Jan 13 2003 Andreas Aardal Hanssen <bincimap at andreas.hanssen.name>
+- AUTHENTICATE no longer requires first argument to be upper case
+- Removed some debug info from the log files
+- Fixed problem with getting kicked off when the uidvalidity bounces
+ at first select.
diff --git a/doc/OLD/ChangeLog.1.3 b/doc/OLD/ChangeLog.1.3
new file mode 100644
index 0000000..cca9e3c
--- /dev/null
+++ b/doc/OLD/ChangeLog.1.3
@@ -0,0 +1,76 @@
+* Since 1.3.3:
+ - Added quotes to the configure.in and m4 scripts to
+ prevent a configure error on some platforms.
+ - Updated the copyright headers.
+ - Fixed several bugs in the handling of command line options.
+ - Updated the man pages.
+ - Refactored Maildir::updateFlags()
+ - Fixed the use of timeouts in the SSL device; an uninitialized
+ variable was causing select() to sleep too long.
+ - bincimap-up now has a fixed timeout of 60 seconds, and the main
+ server times out after 30 minutes.
+ - Fixed timeouts in IO devices.
+ - Now renames files with ":2," when moving them from new/ to cur/.
+ - Added heuristics to help detect errors when invoking checkpassword.
+ - Fixed the "make cert" and "make testcert" scripts.
+ - Improved the logging mechanisms.
+ - The server reports an error correctly when started in SSL mode,
+ without any compiled-in SSL support.
+ - Fixed a bug in the BODY response.
+ - Fixed a bug in the INTERNALDATE response.
+ - LIST and LSUB now allow the reference to end with the delimiter
+ character.
+ - The server now handles strftime returning 0 (for example, if the
+ passed buffer was too short).
+ - Merged several patches from Jerry Lundström. fsync() fixes for
+ NFS, and a patch that allows 1.2 subscribe lists to work with 1.3,
+ - Integrated Jerry Lundström's patch to prevent resetting
+ of the mailbox path when a mailbox is closed.
+ - Integrated Jerry Lundström's patch to allow changing
+ of the mailbox delimiter.
+ - When updating flags, the list of files is read first, then
+ iterated when renaming files. This removes a race condition
+ on XFS, where renaming files changed the order in which
+ they are scanned.
+ - Fixed a bug in the response to BODY fetches, where the
+ list of headers would be returned also when no headers
+ were in the fetch attribute.
+ - Fixed a bug where the server would not recover properly
+ after a client tried a command in the wrong state.
+
+* Since 1.3.2:
+ - The response code is now included in the OK response.
+ - Compile errors fixed.
+ - Replaced opendir()/dirfd() with open().
+ - Fixed a lockup due to dangling symlinks.
+ - Fix a bug where FIELDS in a BODY fetch was empty.
+ - Added a missing space in RFC822.SIZE response.
+ - A memory leak and a bug caused by saving the subscribed
+ file to a full file system were fixed.
+ - Fixed the --logtype command line argument.
+ - Fixed LITERAL+ support in APPEND.
+ - Fixed a bug in the LSUB operator where a map iterator
+ was used on a multimap.
+ - Binc 1.3 now compiles with --without-ssl.
+ - Integrated several bugfixes from 1.2.
+
+* Since 1.3.1:
+ - Moved chroot settings out of the conf files and into
+ configure.
+ - Fixed wildcards in LIST and LSUB.
+ - Fixed the line count for multiparts in the MIME parser.
+ - Syncs the directory when saving the cache file.
+ - Fixed LITERAL+ support in APPEND.
+ - Fixed IODevice:readStr() and how it's used in APPEND.
+ - Assume IMAPdir as the default depot instead of Maildir++.
+ - Documentation updates: README, README.SSL and README.DEPOT.
+ - Added native protocol dumping support by exporting the
+ PROTOCOLDUMP variable.
+ - Compile fixes.
+
+* Since 1.3.0:
+ - Fixed lockups due to major bugs in the IODevice classes.
+ - Fixed bugs in the refactored MIME parser that rendered
+ it useless.
+ - Tested with pine, Mozilla mail and Evolution.
+
diff --git a/doc/OLD/HTML/bincimap-faq.html b/doc/OLD/HTML/bincimap-faq.html
new file mode 100644
index 0000000..61e7129
--- /dev/null
+++ b/doc/OLD/HTML/bincimap-faq.html
@@ -0,0 +1,926 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<HTML>
+
+<HEAD>
+ <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+ <META HTTP-EQUIV="Content-Language" CONTENT="en">
+
+ <TITLE>Binc IMAP - FAQ</TITLE>
+ <META NAME="revisit-after" CONTENT="14 days">
+ <META NAME="keywords" CONTENT="Binc IMAP FAQ checkpassword daemontools tcpserver xinetd Maildir qmail">
+ <META NAME="description" CONTENT="Andreas Aardal Hanssen">
+ <META NAME="copyright" CONTENT="Copyright Andreas Aardal Hanssen 2002, 2003">
+ <META NAME="distribution" CONTENT="global">
+ <META NAME="author" CONTENT="Andreas Aardal Hanssen">
+ <LINK REL="stylesheet" HREF="bincimap.css" TYPE="text/css">
+ <LINK REL="icon" HREF="/favicon.ico" TYPE="image/ico">
+ <LINK REL="shortcut icon" HREF="/favicon.ico">
+
+</HEAD>
+
+<BODY BGCOLOR="#000000">
+
+<TABLE WIDTH="95%" ALIGN="CENTER" CELLSPACING="0" CELLPADDING="4">
+<TR>
+<TD BGCOLOR="#004444">
+
+<TABLE WIDTH="99%" ALIGN="CENTER" CELLSPACING="0" CELLPADDING="4">
+ <TR>
+ <TD CLASS="headtext" BGCOLOR="#226666" ALIGN="LEFT">
+ <TABLE>
+ <TR>
+ <TD ALIGN="center" VALIGN="middle"><IMG ALT="Binc IMAP logo" SRC="b-button64.png" BORDER="0"></TD>
+ <TD ALIGN="center" VALIGN="middle">Binc IMAP - FAQ</TD>
+ </TR>
+ </TABLE>
+ </TD>
+ <TD CLASS="bodytext" BGCOLOR="#226666" ALIGN="RIGHT">
+ <A HREF="http://www.gnu.org/licenses/gpl.html">GNU General Public License</A><BR>
+ Andreas Aardal Hanssen &lt;andreas@hanssen.name&gt;
+ </TD>
+ </TR>
+ <TR>
+ <TD CLASS="bodytext" BGCOLOR="#FFFFFF" COLSPAN="2"></TD>
+ </TR>
+</TABLE>
+
+<DIV CLASS="bodytext">
+
+<UL>
+ <LI>General questions
+ <BLOCKQUOTE>
+ <P><A HREF="#q1">Q: Why did you start writing Binc IMAP?</A></P>
+ <P><A HREF="#q2">Q: What is "Binc"?</A></P>
+ </BLOCKQUOTE>
+ </LI>
+ <LI>About Binc IMAP
+ <BLOCKQUOTE>
+ <P><A HREF="#q3">Q: What are the advantages of Binc IMAP?</A></P>
+ <P><A HREF="#q4">Q: So Binc IMAP doesn't focus on security?</A></P>
+ <P><A HREF="#q5">Q: Is Binc IMAP <I>fast</I>?</A></P>
+ <P><A HREF="#q6">Q: Is Binc IMAP a stable, secure server?</A></P>
+ </BLOCKQUOTE>
+ </LI>
+ <LI>Configuration
+ <BLOCKQUOTE>
+ <P><A HREF="#q7">Q: Which configuration files are used by Binc IMAP?</A></P>
+ <P><A HREF="#q12">Q: How can I tell Binc IMAP where my mailboxes/folders are?</A></P>
+ <P><A HREF="#q13">Q: How can I get SSL to work?</A></P>
+ </BLOCKQUOTE>
+ </LI>
+ <LI>Usage
+ <BLOCKQUOTE>
+ <P><A HREF="#q14">Q: How do I find my folders in Binc IMAP?</A></P>
+ </BLOCKQUOTE>
+ </LI>
+ <LI>Authentication
+ <BLOCKQUOTE>
+ <P><A HREF="#q8">Q: How does Binc IMAP authentication work?</A></P>
+ </BLOCKQUOTE>
+ </LI>
+ <LI>Compiling
+ <BLOCKQUOTE>
+ <P><A HREF="#q15">Q: How do I fix this: "Unable to find required function getopt_long"?</A></P>
+ <P><A HREF="#q16">Q: How do I fix this: "Unable to find the crypto library which is part of OpenSSL"?</A></P>
+ <P><A HREF="#q17">Q: How do I fix this: "Unable to find the ssl library which is part of OpenSSL"?</A></P>
+ </BLOCKQUOTE>
+ </LI>
+ <LI>Installing
+ <BLOCKQUOTE>
+ <P><A HREF="#q10">Q: How do I install Binc IMAP?</A></P>
+ <P><A HREF="#q11">Q: Why does Binc IMAP (RPM) install under /opt?</A></P>
+ </BLOCKQUOTE>
+ </LI>
+</UL>
+
+<HR>
+
+<A NAME="q1">
+<B><U>Q: Why did you start writing Binc IMAP?</U></B>
+</A>
+
+<BLOCKQUOTE>
+<P>First of all, I work a lot with qmail servers, and there haven't
+really been many Maildir capable IMAP4rev1 servers around. I used
+Courier-IMAP for years, but after loads of abuse from the Courier
+community and its author, I found that earth had room for one more
+IMAP4rev1 server.</P>
+
+<P>Enjoying the simplicity of qmail-pop3d, I decided to create an IMAP
+server that was equally simple to install and use, and that could work
+side-by-side with qmail-pop3d to provide IMAP service to qmail
+users.</P>
+
+<P>I had already written an IMAP server for proxying POP3-accounts at
+work, and I had so many good experiences from that project that I
+beleived that I could really write a great IMAP server.</P>
+
+<P>Well, it's up to you to determine how great it is, but I swear it has
+it's advantages over the existing Maildir capable IMAP servers out
+there.</P>
+</BLOCKQUOTE>
+
+<HR>
+
+<A NAME="q2">
+<B><U>Q: What is "Binc"?</U></B>
+</A>
+
+<BLOCKQUOTE>
+
+<P>This should be quite obvious: Binc Is Not Courier-IMAP :-).</P>
+
+</BLOCKQUOTE>
+
+<HR>
+
+<A NAME="q3">
+<B><U>Q: What are the advantages of Binc IMAP?</U></B>
+</A>
+
+<BLOCKQUOTE>
+
+<P>Binc IMAP is a <I>light weight alternative</I> to existing IMAP
+servers. It's easier to install, easier to maintain, and it's easy to
+integrate into existing (perhaps legacy) authentication
+environments.</P>
+
+<P>Binc IMAP is small and simple. The total number of lines of source
+code is much smaller in Binc than in the other servers. Version
+1.0.24-1 of Binc IMAP has about 18000 lines of code. There are only
+17000 lines of hand written code, including comments. Few lines in
+itself does <I>not</I> imply that the code is better, but it's
+certainly much easier to maintain.</P>
+
+<P>It is also written in C++, using standard C++ data components. If
+this server crashes, it'll most likely abort, and not suffer a
+segmentation fault, which is the most common reason for exploits.</P>
+
+<P>Binc IMAP uses an object oriented design all the way. A modular,
+simple design with few lines of code means that it's easier to uncover
+bugs, and it's easier to fix them without disturbing the rest of the
+source code.</P>
+
+</BLOCKQUOTE>
+
+<HR>
+
+<A NAME="q4">
+<B><U>Q: So Binc IMAP doesn't focus on security?</U></B>
+</A>
+
+<UL>
+ <LI>Security comes naturally with a service with a clean, correct
+ design and no bugs</LI>
+
+ <LI>Security can not be claimed. To prove that a server is not
+ secure, one must simply find a way to exploit it. <I>Claiming</I>
+ that a server is secure is like claiming that nobody can find a way
+ to break it.</LI>
+
+ <LI>The only true argument is to <I>prove</I> that it's secure. And
+ that's almost impossible.</LI>
+
+ <LI>Binc IMAP focuses on creating a service with a clean, correct
+ design with no bugs. Time and experience will tell wether it's a
+ secure server or not.</LI>
+</UL>
+
+<HR>
+
+<A NAME="q5">
+<B><U>Q: Is Binc IMAP <I>fast</I>?</U></B>
+</A>
+
+<P>Binc IMAP focuses its optimizations on the type of activity that
+dominates the lifetime of an IMAP connection, which is idle time.</P>
+
+ <UL>
+ <LI>Pending updates: When a client issues NOOP, CHECK or similar,
+ the server must give the latest changes to the depository. If no
+ changes have been made, this operation will with Binc IMAP
+ consist of only two stat-calls, which is extremely fast.</LI>
+
+ <LI>FETCH: Multiple subsequent operations on the same message
+ will never cause the message to be parsed more than twice - once
+ for header-only operations and once for full message info.</LI>
+
+ <LI>STATUS: The status command is typically used to check for
+ new messages in all subscribed mailboxes. If no changes have been
+ made to a mailbox, the status command in Binc IMAP consists of
+ only two stat calls, which is extremely fast.</LI>
+
+ <LI>SEARCH: The search keys are weighted, and the search query is
+ sorted with lightest-search first. This prevents unnecessary
+ processing of slow search keys if the light search keys do not
+ match the message set.</LI>
+ </UL>
+
+<P>Some activity is not optimal in Binc IMAP, and searching for random
+text in particular is no faster than a sequential search using
+standard UNIX tools such as <I>grep</I>. Searching for text in a large
+mailbox is quite rare, however, compared to the random activity of
+close-to-idle clients.</P>
+
+<HR>
+
+<A NAME="q6">
+<B><U>Q: Is Binc IMAP a stable, secure server?</U></B>
+</A>
+
+<BLOCKQUOTE>
+<P>It's hard to write bug free programs, especially with a complex
+protocol like IMAP4rev1. Any attempts to verify code usually comes
+down to the limitations in the author's experience with
+verification. Or as
+<A HREF="http://www-cs-faculty.stanford.edu/~knuth/">Donald Knuth</A>
+said (my favorite quote):</P>
+
+<P><I>"Beware of bugs in the above code; I have only proved it correct,
+ not tried it."</I></P>
+
+<P>Knuth teaches that it can be easy to prove that your code is
+correct, but who's going to prove that your <I>proof</I> is correct?
+Proving your proof might turn out to be close to impossle. What you
+can have, is conventions and principles that prevent bugs from showing
+up in your programs. Here are mine:</P>
+
+<UL>
+ <LI>Don't reinvent the wheel. Unless absolutely necessary, write
+ code that doesn't exist already.</LI>
+ <LI>Spend your time on making it work as simple as possible,
+ then start making optimizations.</LI>
+ <LI>Don't let optimization obfuscate your source code.</LI>
+ <LI>Find a better algorithm, or if you can't get the speed that you
+ want, change to a more efficient programming language.</LI>
+ <LI>Handle all error conditions.</LI>
+ <LI>Avoid buffers altogether.</LI>
+ <LI>Don't hand write parsers unless strictly necessary - they are
+ hard to get right.</LI>
+ <LI>For G's sake, be compliant! If the standard has flaws, then
+ <I>help fix the flaws</I> - don't break the standard.</LI>
+</UL>
+
+<P>Now I don't pay $2.56^n where n equals the total number of
+bugs discovered in Binc IMAP, but I will certainly give you
+many pats on the back if I get the chance. :-)</P>
+
+<P>I could go on and on, but the point is that I have tried my best to
+perform all the expected tasks in the most logical and obvious way
+possible, using all my C++ security experience to aid me. But at the
+time of writing, the server is young, the community small, and we are
+only in Beta. So time will have to tell how stable and secure we
+are.</P>
+
+</BLOCKQUOTE>
+
+<HR>
+
+<A NAME="q7">
+<B><U>Q: Which configuration files are used by Binc IMAP?</U></B>
+</A>
+
+<BLOCKQUOTE>
+<UL>
+ <LI>/etc/opt/bincimap/supervise/imap/run</LI>
+ <LI>/etc/opt/bincimap/supervise/imaps/run</LI>
+ <LI>/etc/opt/bincimap/xinetd/imap</LI>
+ <LI>/etc/opt/bincimap/xinetd/imaps</LI>
+</UL>
+
+<P>These files are for administrators. You can set up Binc IMAP's
+authentication method here.</P>
+
+<UL>
+<LI>/etc/opt/bincimap/bincimap.conf</LI>
+</UL>
+
+<P>This first file is for setting global administrator settings, such
+as paths to the host's SSL certificate, timeouts for idle clients and
+so on. It need not be readable for anyone but root.</P>
+
+<UL>
+<LI>$HOME/.bincimap</LI>
+</UL>
+
+<P>This file is for individual settings, such as what the exact path
+is to this user's depository, which default Mailbox type to use and
+which type of depository the user uses.</P>
+
+</BLOCKQUOTE>
+
+<HR>
+
+<A NAME="q12">
+<B><U>Q: How can I tell Binc IMAP where my mailboxes/folders are?</U></B>
+</A>
+
+<BLOCKQUOTE>
+
+<P>The configuration file has a section called <B>Mailbox</B>. You can
+set the <B>path</B> to your users' mail depository there, relative to
+the users' home areas.</P>
+
+<P>If your depository is not is users' homeareas, for instance if your
+depository has a <B>/var/mail/user/</B> structure, you can safely set
+<B>path</B> to <B>"."</B> or <B>""</B>. Your authenticator must then
+change to the full path of the depository, <B>/var/mail/user/</B>,
+before invoking bincimapd.</P>
+
+<P>For a <B>Maildir++</B> depository under standard home areas, with
+the mailbox path set to "Maildir" in bincimap.conf, your structure
+would typically look something like this:</P>
+
+<TABLE ALIGN="center" CELLSPACING="5" CELLPADDING="5">
+ <TR>
+ <TH BGCOLOR="#555555">File system
+ </TH>
+ <TH BGCOLOR="#555555">IMAP
+ </TH>
+ <TH BGCOLOR="#555555">Description
+ </TH>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#555555">
+ <PRE>
+~/Maildir/
+~/Maildir/.Sent/
+ </PRE>
+ </TD>
+ <TD BGCOLOR="#555555">
+ <PRE>
+"INBOX"
+"INBOX/Sent"
+ </PRE>
+ </TD>
+ <TD BGCOLOR="#555555">
+ <PRE>
+The main mailbox, the INBOX.
+A user created mailbox.
+ </PRE>
+ </TD>
+ </TR>
+</TABLE>
+
+<P>If you use IMAPdir (setting depot="IMAPdir" and for instance
+path="IMAPdir"), the structure would be slightly different:</P>
+
+<TABLE ALIGN="center" CELLSPACING="5" CELLPADDING="5">
+ <TR>
+ <TH BGCOLOR="#555555">File system
+ </TH>
+ <TH BGCOLOR="#555555">IMAP
+ </TH>
+ <TH BGCOLOR="#555555">Description
+ </TH>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#555555">
+ <PRE>
+~/IMAPdir/INBOX -> ../Maildir
+~/IMAPdir/Sent/
+~/IMAPdir/Sent.2003/
+~/Maildir/
+ </PRE>
+ </TD>
+ <TD BGCOLOR="#555555">
+ <PRE>
+"INBOX"
+"Sent"
+"Sent/2003"
+&lt;zip&gt;
+ </PRE>
+ </TD>
+ <TD BGCOLOR="#555555">
+ <PRE>
+The main mailbox symlink, the INBOX.
+A user created mailbox.
+A sublevel user created mailbox.
+Invisible.
+ </PRE>
+ </TD>
+ </TR>
+</TABLE>
+
+<P>With no seperate directory for the mail depository, your structure
+would be like this with IMAPdir, and similar with Maildir++ <I>(the
+prefix folder is simply dropped, and INBOX itself is a Maildir, note
+that the MTA must be instructed to deliver to INBOX and not
+Maildir)</I>:</P>
+
+<TABLE ALIGN="center" CELLSPACING="5" CELLPADDING="5">
+ <TR>
+ <TH BGCOLOR="#555555">File system
+ </TH>
+ <TH BGCOLOR="#555555">IMAP
+ </TH>
+ <TH BGCOLOR="#555555">Description
+ </TH>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#555555">
+ <PRE>
+~/INBOX
+~/Sent/
+~/Sent.2003/
+ </PRE>
+ </TD>
+ <TD BGCOLOR="#555555">
+ <PRE>
+"INBOX"
+"Sent"
+"Sent/2003"
+ </PRE>
+ </TD>
+ <TD BGCOLOR="#555555">
+ <PRE>
+The main mailbox, the INBOX, a Maildir.
+A user created mailbox.
+A sublevel user created mailbox.
+ </PRE>
+ </TD>
+ </TR>
+</TABLE>
+
+</BLOCKQUOTE>
+
+<HR>
+
+<A NAME="q13">
+<B><U>Q: How can I get SSL to work?</U></B>
+</A>
+
+<BLOCKQUOTE>
+
+<P>SSL in Binc IMAP is quite simple to set up. First you need a PEM
+encoded certificate file. In some distributions, you can generate this
+file by changing to /usr/share/ssl/certs and running "make". A script
+will give you the option to build a PEM file.</P>
+
+<P>When you have a PEM file, edit <B>bincimap.conf</B> in the SSL
+section . You need to add an item called <B>pem file</B> and set it to
+point to your PEM certificate. The path name must be absolute. For
+example:</P>
+
+<PRE>
+ SSL {
+ pem file = "/usr/share/ssl/certs/mypemfile.pem",
+ ca file = "",
+ cipher list = "!ADH:RC4+RSA:HIGH:MEDIUM:LOW:EXP:+SSLv2:+EXP",
+ verify peer = "no"
+ }
+</PRE>
+
+<P>The item <B>ca file</B> in <B>bincimap.conf</B> tells Binc IMAP
+which file on your system contains a bundle of <B>certificate
+authorities</B>.</P>
+
+<P>Next comes the item called <B>cipher list</B>. It tells Binc IMAP
+about which ciphers you want your server to support. This depends on
+what version of OpenSSL you're running.</P>
+
+<P>Last comes an option called <B>verify peer</B>. This tells Binc
+IMAP wether to attempt to verify the client's identity.</P>
+
+<P>Visit <A
+HREF="http://httpd.apache.org/docs-2.0/ssl/ssl_intro.html">this link
+at the Apache.org website</A> to read more about SSL and TLS
+principles.</P>
+
+</BLOCKQUOTE>
+
+<HR>
+
+<A NAME="q14">
+<B><U>Q: How do I find my folders in Binc IMAP?</U></B>
+</A>
+
+<BLOCKQUOTE>
+
+<P>Binc IMAP can be configured to use two types of depositories:
+Maildir++ and IMAPdir.</P>
+
+<P>Using Maildir++, all folders in Binc IMAP must be subfolders of
+INBOX. This is the default setting.</P>
+
+<P>This means that if you want to create a folder called <B>work</B>,
+you have to create <B>INBOX.work</B> or <B>INBOX/work</B>.</P>
+
+<P>For some graphical IMAP clients like <B>Outlook</B> (look out!) or
+<B>Mozilla Mail</B>, this means you need to <I>right click</I> on
+<B>INBOX</B> and select "Create subfolder".</P>
+
+<P>Using IMAPdir, folders can be created in any levels. See also <A
+HREF="#q12">this question</A>.</P>
+
+</BLOCKQUOTE>
+
+<HR>
+
+<A NAME="q8">
+<B><U>Q: How does Binc IMAP authentication work?</U></B>
+</A>
+
+<BLOCKQUOTE>
+<P>Binc IMAP is spawned by xinetd, tcpserver or any other TCP wrapper
+running as root.</P>
+
+<P>It immediately goes into pre-authentication mode, where it expects
+the client to enter STARTTLS if the client is not already running an
+SSL connection. When in TLS/SSL mode, it will accept clear text
+authentication.</P>
+
+<P>Binc IMAP uses the same authentication method as
+<U>qmail-pop3d</U>, checkpassword. The pre-authentication stub invokes
+the checkpassword compatible authenticator, which if the password is
+correct in turn invokes the main Binc IMAP daemon.</P>
+
+<P>The <A HREF="http://cr.yp.to/checkpwd.html">checkpassword documentation</A> is
+required reading for everyone running Binc IMAP.</P>
+
+</BLOCKQUOTE>
+
+<HR>
+
+<A NAME="q15">
+<B><U>Q: How do I fix this: "Unable to find required function getopt_long"?</U></B>
+</A>
+
+<BLOCKQUOTE>
+
+<P>The <U>getopt_long</U> function is a GNU extension to the POSIX.2 <U>getopt</U>
+function. It allows long arguments such as <B>--enable-ssl</B>.</P>
+
+<P>Unfortunately, this function is not defined on all
+platforms. Specifically, it is known to not exist on FreeBSD.</P>
+
+<P>For FreeBSD users, install <U>gnugetopt</U> from ports. Otherwise,
+post this problem with as much relevant info as you can provide, to
+the mailing list.</P>
+
+</BLOCKQUOTE>
+
+<HR>
+
+<A NAME="q16">
+<B><U>Q: How do I fix this: "Unable to find the crypto library which is part of OpenSSL"?</U></B>
+</A>
+
+<BLOCKQUOTE>
+
+<P>The <U>crypto</U> library is a part of <A HREF="http://www.openssl.org">OpenSSL</A>. This
+library is required for Binc IMAP to compile.</P>
+
+<P>If you can not get Binc IMAP to compile with OpenSSL, there should
+be a <A HREF="dl/RPMS">static RPM package</A> available for download.</P>
+
+</BLOCKQUOTE>
+
+<HR>
+
+<A NAME="q17">
+<B><U>Q: How do I fix this: "Unable to find the ssl library which is part of OpenSSL"?</U></B>
+</A>
+
+<BLOCKQUOTE>
+
+<P>The <U>crypto</U> library is a part of <A HREF="http://www.openssl.org">OpenSSL</A>. This
+library is required for Binc IMAP to compile.</P>
+
+<P>If you can not get Binc IMAP to compile with OpenSSL, there should
+be a <A HREF="dl/RPMS">static RPM package</A> available for download.</P>
+
+</BLOCKQUOTE>
+
+<HR>
+
+<A NAME="q10">
+<B><U>Q: How do I install Binc IMAP?</U></B>
+</A>
+
+<BLOCKQUOTE>
+
+<P>The <I>easiest</I> way to install Binc IMAP on your server is to
+follow these instructions:</P>
+
+<UL>
+ <LI>Download the RPM from <A HREF="dl/RPMS">http://www.bincimap.andreas.hanssen.name/dl/RPMS</A></LI>
+ <LI>Install the RPM</LI>
+ <LI>Copy, edit and perhaps symlink the configuration files:
+ <UL>
+ <LI>with daemontools:
+ <UL>
+ <LI>ln -s /etc/opt/bincimap/supervise/imap /service/imap</LI>
+ <LI>ln -s /etc/opt/bincimap/supervise/imaps /service/imaps</LI>
+ </UL>
+ </LI>
+ <LI>with xinetd:
+ <UL>
+ <LI>ln -s /etc/opt/bincimap/xinetd/imap /etc/xinetd.d/imap</LI>
+ <LI>ln -s /etc/opt/bincimap/xinetd/imaps /etc/xinetd.d/imaps</LI>
+ <LI>service xinetd restart</LI>
+ </UL>
+ </LI>
+ </UL>
+ </LI>
+ <LI>Check that the service is up by connecting using a standard IMAP client</LI>
+</UL>
+
+<P>If you want to build Binc IMAP from source, there's a <B>README</B>
+file that gives you the instructions step by step, inside the
+tarball. You can also get some clues by inspecting the bundled
+<B>bincimap-spec</B> file's <B>install</B> section.</P>
+
+</BLOCKQUOTE>
+
+<HR>
+
+<A NAME="q11">
+<B><U>Q: Why does Binc IMAP (RPM) install under /opt?</U></B>
+</A>
+
+<BLOCKQUOTE>
+
+<P>The reason for this is that I have tried my best to follow the <A
+HREF="http://www.pathname.com/fhs/">File System Hierarchy
+Standard</A>.</P>
+
+<P>Binaries go under <B>/opt/bincimap/bin</B></P>
+
+<P>Host specific configuration goes under <B>/etc/opt/bincimap</B></P>
+
+<P>If you want your files elsewhere, there's always the option to build
+the project from source. :-)</P>
+
+</BLOCKQUOTE>
+
+<HR>
+
+<TABLE WIDTH="99%" ALIGN="CENTER" CELLSPACING="0" CELLPADDING="4">
+ <TR>
+ <TD CLASS="bodytext" BGCOLOR="#FFFFFF"></TD>
+ </TR>
+ <TR>
+ <TD CLASS="headtext" BGCOLOR="#226666">
+ <A HREF="http://validator.w3.org/check/referer">
+ <IMG BORDER="0" SRC="http://www.w3.org/Icons/valid-html401"
+ ALT="Valid HTML 4.01!" HEIGHT="31" WIDTH="88">
+ </A>
+ <A HREF="http://cr.yp.to/djbdns.html"><IMG BORDER="0" WIDTH="88"
+ HEIGHT="31" SRC="djbdns.jpg" ALT="Powered by djbdns!"></A>
+ <IMG BORDER="0" WIDTH="88" HEIGHT="30" SRC="binclogo.gif"
+ ALT="Powered by Binc IMAP">
+ </TD>
+ </TR>
+</TABLE>
+
+</DIV>
+</TD>
+</TR>
+</TABLE>
+<BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR>
+<BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR>
+
+</BODY>
+</HTML>
++FLAGS \Flagged
+* FETCH (FLAGS (\Seen \Flagged))
+8 OK STORE completed
+ </PRE>
+ </LI>
+ </UL>
+</P>
+
+<P>If all these tests work fine, try connecting with an IMAP client
+such as Mozilla, Outlook, Eudora, Netscape, Mutt or Pine.</P>
+
+</BLOCKQUOTE>
+
+<HR>
+
+<A NAME="q14">
+<B><U>Q: How do I find my folders in Binc IMAP?</U></B>
+</A>
+
+<BLOCKQUOTE>
+
+<P>Binc IMAP can be configured to use two types of depositories:
+Maildir++ and IMAPdir.</P>
+
+<P>Using Maildir++, all folders in Binc IMAP must be subfolders of
+INBOX. This is the default setting.</P>
+
+<P>This means that if you want to create a folder called <B>work</B>,
+you have to create <B>INBOX.work</B> or <B>INBOX/work</B>.</P>
+
+<P>For some graphical IMAP clients like <B>Outlook</B> (look out!) or
+<B>Mozilla Mail</B>, this means you need to <I>right click</I> on
+<B>INBOX</B> and select "Create subfolder".</P>
+
+<P>Using IMAPdir, folders can be created in any levels. See also <A
+HREF="#q12">this question</A>.</P>
+
+</BLOCKQUOTE>
+
+<HR>
+
+<A NAME="q8">
+<B><U>Q: How does Binc IMAP authentication work?</U></B>
+</A>
+
+<BLOCKQUOTE>
+<P>Binc IMAP is spawned by xinetd, tcpserver or any other TCP wrapper
+running as root.</P>
+
+<P>It immediately goes into pre-authentication mode, where it expects
+the client to enter STARTTLS if the client is not already running an
+SSL connection. When in TLS/SSL mode, it will accept clear text
+authentication.</P>
+
+<P>Binc IMAP uses the same authentication method as
+<U>qmail-pop3d</U>, checkpassword. The pre-authentication stub invokes
+the checkpassword compatible authenticator, which if the password is
+correct in turn invokes the main Binc IMAP daemon.</P>
+
+<P>The <A HREF="http://cr.yp.to/checkpwd.html">checkpassword documentation</A> is
+required reading for everyone running Binc IMAP.</P>
+
+</BLOCKQUOTE>
+
+<HR>
+
+<A NAME="q19">
+<B><U>Q: What does this mean: "Server broke for <userid>, /bin/checkpassword returned 111 (internal error)"?</U></B>
+</A>
+
+<BLOCKQUOTE>
+
+<P>This log line is printed by <U>bincimap-up</U>, and reflects how
+confusing checkpassword can be at times. Most often, though, the
+problem is easy to solve.</P>
+
+<P>Log in as the user who tried to log in. If you are using a virtual
+mail account system like vpopmail, become the user that mail accounts
+are stored as.</P>
+
+<P>Try running the bincimapd daemon manually. If you can execute the
+binary, there will be no output and the server will simply exit. Most
+often, however, you will get an error such as "command not found" or
+"permission denied". This should explain quite easily what the problem
+is. Note that the bincimapd binary must have read and execute
+permissions for all users (755).</P>
+
+<P>If this didn't solve your problem, please post to the mailing list
+a stack trace. To create a stacktrace, attach to tcpserver/xinetd
+using "strace -s 1024 -f -p <pid> 2>&1 >dump". Log in to reproduce the
+error. Then interrupt the strace program and email the "dump" file to
+the mailing list. <B>Note:</B> It is likely that the dump file
+contains passwords in plain text.</P>
+
+</BLOCKQUOTE>
+
+<HR>
+
+<A NAME="q15">
+<B><U>Q: How do I fix this: "Unable to find required function getopt_long"?</U></B>
+</A>
+
+<BLOCKQUOTE>
+
+<P>Note: This only applies to versions 1.1.6 or older.</P>
+
+<P>The <U>getopt_long</U> function is a GNU extension to the POSIX.2 <U>getopt</U>
+function. It allows long arguments such as <B>--enable-ssl</B>.</P>
+
+<P>Unfortunately, this function is not defined on all
+platforms. Specifically, it is known to not exist on FreeBSD.</P>
+
+<P>For FreeBSD users, install <U>gnugetopt</U> from ports. Otherwise,
+post this problem with as much relevant info as you can provide, to
+the mailing list.</P>
+
+</BLOCKQUOTE>
+
+<HR>
+
+<A NAME="q16">
+<B><U>Q: How do I fix this: "Unable to find the crypto library which is part of OpenSSL"?</U></B>
+</A>
+
+<BLOCKQUOTE>
+
+<P>The <U>crypto</U> library is a part of <A HREF="http://www.openssl.org">OpenSSL</A>. This
+library is required for Binc IMAP to compile.</P>
+
+<P>If you can not get Binc IMAP to compile with OpenSSL, there should
+be a <A HREF="dl/RPMS">static RPM package</A> available for download.</P>
+
+</BLOCKQUOTE>
+
+<HR>
+
+<A NAME="q17">
+<B><U>Q: How do I fix this: "Unable to find the ssl library which is part of OpenSSL"?</U></B>
+</A>
+
+<BLOCKQUOTE>
+
+<P>The <U>crypto</U> library is a part of <A HREF="http://www.openssl.org">OpenSSL</A>. This
+library is required for Binc IMAP to compile.</P>
+
+<P>If you can not get Binc IMAP to compile with OpenSSL, there should
+be a <A HREF="dl/RPMS">static RPM package</A> available for download.</P>
+
+</BLOCKQUOTE>
+
+<HR>
+
+<A NAME="q10">
+<B><U>Q: How do I install Binc IMAP?</U></B>
+</A>
+
+<BLOCKQUOTE>
+
+<P>The <I>easiest</I> way to install Binc IMAP on your server is to
+follow these instructions:</P>
+
+<UL>
+ <LI>Download the RPM from <A HREF="dl/RPMS">http://www.bincimap.andreas.hanssen.name/dl/RPMS</A></LI>
+ <LI>Install the RPM</LI>
+ <LI>Copy, edit and perhaps symlink the configuration files:
+ <UL>
+ <LI>with daemontools:
+ <UL>
+ <LI>ln -s /etc/opt/bincimap/supervise/imap /service/imap</LI>
+ <LI>ln -s /etc/opt/bincimap/supervise/imaps /service/imaps</LI>
+ </UL>
+ </LI>
+ <LI>with xinetd:
+ <UL>
+ <LI>ln -s /etc/opt/bincimap/xinetd/imap /etc/xinetd.d/imap</LI>
+ <LI>ln -s /etc/opt/bincimap/xinetd/imaps /etc/xinetd.d/imaps</LI>
+ <LI>service xinetd restart</LI>
+ </UL>
+ </LI>
+ </UL>
+ </LI>
+ <LI>Check that the service is up by connecting using a standard IMAP client</LI>
+</UL>
+
+<P>If you want to build Binc IMAP from source, there's a <B>README</B>
+file that gives you the instructions step by step, inside the
+tarball. You can also get some clues by inspecting the bundled
+<B>bincimap-spec</B> file's <B>install</B> section.</P>
+
+</BLOCKQUOTE>
+
+<HR>
+
+<A NAME="q11">
+<B><U>Q: Why does Binc IMAP (RPM) install under /opt?</U></B>
+</A>
+
+<BLOCKQUOTE>
+
+<P>The reason for this is that I have tried my best to follow the <A
+HREF="http://www.pathname.com/fhs/">File System Hierarchy
+Standard</A>.</P>
+
+<P>Binaries go under <B>/opt/bincimap/bin</B></P>
+
+<P>Host specific configuration goes under <B>/etc/opt/bincimap</B></P>
+
+<P>If you want your files elsewhere, there's always the option to build
+the project from source. :-)</P>
+
+</BLOCKQUOTE>
+
+<HR>
+
+<TABLE WIDTH="99%" ALIGN="CENTER" CELLSPACING="0" CELLPADDING="4">
+ <TR>
+ <TD CLASS="bodytext" BGCOLOR="#FFFFFF"></TD>
+ </TR>
+ <TR>
+ <TD CLASS="headtext" BGCOLOR="#226666">
+ <A HREF="http://validator.w3.org/check/referer">
+ <IMG BORDER="0" SRC="http://www.w3.org/Icons/valid-html401"
+ ALT="Valid HTML 4.01!" HEIGHT="31" WIDTH="88">
+ </A>
+ <A HREF="http://cr.yp.to/djbdns.html"><IMG BORDER="0" WIDTH="88"
+ HEIGHT="31" SRC="djbdns.jpg" ALT="Powered by djbdns!"></A>
+ <IMG BORDER="0" WIDTH="88" HEIGHT="30" SRC="binclogo.gif"
+ ALT="Powered by Binc IMAP">
+ </TD>
+ </TR>
+</TABLE>
+
+</DIV>
+</TD>
+</TR>
+</TABLE>
+<BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR>
+<BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR>
+
+</BODY>
+</HTML>
diff --git a/doc/OLD/HTML/bincimap-goals.html b/doc/OLD/HTML/bincimap-goals.html
new file mode 100644
index 0000000..fd387e8
--- /dev/null
+++ b/doc/OLD/HTML/bincimap-goals.html
@@ -0,0 +1,160 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<HTML>
+
+<HEAD>
+ <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+ <META HTTP-EQUIV="Content-Language" CONTENT="en">
+
+ <TITLE>Binc IMAP - Goals</TITLE>
+ <META NAME="revisit-after" CONTENT="14 days">
+ <META NAME="keywords" CONTENT="Binc IMAP Goals checkpassword daemontools tcpserver xinetd Maildir qmail">
+ <META NAME="description" CONTENT="Andreas Aardal Hanssen">
+ <META NAME="copyright" CONTENT="Copyright Andreas Aardal Hanssen 2002, 2003">
+ <META NAME="distribution" CONTENT="global">
+ <META NAME="author" CONTENT="Andreas Aardal Hanssen">
+ <LINK REL="stylesheet" HREF="bincimap.css" TYPE="text/css">
+ <LINK REL="icon" HREF="/favicon.ico" TYPE="image/ico">
+ <LINK REL="shortcut icon" HREF="/favicon.ico">
+
+</HEAD>
+
+<BODY BGCOLOR="#000000">
+
+<TABLE WIDTH="95%" ALIGN="CENTER" CELLSPACING="0" CELLPADDING="4">
+<TR>
+<TD BGCOLOR="#004444">
+
+<TABLE WIDTH="99%" ALIGN="CENTER" CELLSPACING="0" CELLPADDING="4">
+ <TR>
+ <TD CLASS="headtext" BGCOLOR="#226666" ALIGN="LEFT">
+ <TABLE>
+ <TR>
+ <TD ALIGN="center" VALIGN="middle"><IMG ALT="Binc IMAP logo" SRC="b-button64.png" BORDER="0"></TD>
+ <TD ALIGN="center" VALIGN="middle">Binc IMAP - Goals</TD>
+ </TR>
+ </TABLE>
+ </TD>
+ <TD CLASS="bodytext" BGCOLOR="#226666" ALIGN="RIGHT">
+ <A HREF="http://www.gnu.org/licenses/gpl.html">GNU General Public License</A><BR>
+ Andreas Aardal Hanssen &lt;andreas@hanssen.name&gt;
+ </TD>
+ </TR>
+ <TR>
+ <TD CLASS="bodytext" BGCOLOR="#FFFFFF" COLSPAN="2"></TD>
+ </TR>
+</TABLE>
+
+<BLOCKQUOTE>
+
+The Binc IMAP project is more than programming. This is a list of the main goals and visions
+that the author of Binc IMAP has put to ground.
+
+<UL>
+<LI>Helpful, hospitable community
+ <UL>
+ <LI>Although it is expected that users of Binc IMAP do their homework before posting, the server author
+ and community of the Binc IMAP mailing list will be friendly and will approach everyone with respect.
+ The same is expected from those who post to the list.</LI>
+ <LI>There will be no RTFM on the project's mailing list. Flaming and personal insults on the project's mailing list will result in banning of the originator.</LI>
+ <LI>The community is encouraged to pay back to the project's contributors by <B>sharing</B> their own
+ contributions to Binc IMAP through the GPL license.</LI>
+ </UL>
+</LI>
+<LI>Security through good design
+ <UL>
+ <LI>A well designed server is <U>less exposed to bugs</U> than a poorly designed server.</LI>
+ <LI>The server will strive to use <U>every kind of security enhancing feature</U>, while
+ keeping the implementation details as simple as possible.</LI>
+ <LI><U>The source is open</U> and downloadable. Potential bugs and/or nasty pieces of
+ code are easily uncovered when the whole community is able to study every line of
+ code in detail. Bugs should always be reported to the project's mailing list.</LI>
+ </UL>
+</LI>
+<LI>No competition
+ <UL>
+ <LI>Under no circumstance will this project be in market driven competition with other
+ IMAP servers.</LI>
+ <LI>Binc IMAP is first and foremost a <U>quality driven project</U>.</LI>
+ <LI>This project is meant to <U><I>influence</I> the community</U> of authors of
+ network protocols and servers, and hopes to increase the general quality
+ of software that is used all over the globe and beyond.</LI>
+ </UL>
+</LI>
+<LI>Modularity
+ <UL>
+ <LI><B>Binary modularity</B>
+ <P><U>Pluggable extension support.</U> Modules that are loaded into Binc can change a
+ great deal of Binc's behavior. Adding your own extension or altering Binc
+ IMAP's behavior should be as easy as it can get, and it should not require a
+ recompile of the Binc IMAP core.</P>
+ <P><U>Pluggable authentication support.</U> By supporting <B>checkpassword</B>
+ compatible authentication modules, Binc IMAP clients can authenticate against great
+ number of authorities.</P>
+ </LI>
+ <LI><B>Source modularity</B>
+ <P>With a modular and simple yet advanced object oriented design, it should be
+ easy to quickly understand what every method and function does. This will
+ increase third party developers' ability to write extensions and modifications fast.</P>
+ <P>Development of the design and implementation of Binc IMAP will focus on
+ <U>extensibility, robustness and speed</U>.
+ </LI>
+
+ </UL>
+</LI>
+<LI>Quality over quantity
+ <UL>
+ <LI>Binc IMAP's releases are milestones. We strive for perfection.</LI>
+ <LI>Work on improving the existing design and extensibility will always go ahead of
+ adding new features.</LI>
+ <LI>Through extensive module support, the community is encouraged to contribute
+ to the adding and testing of new features. Core design and implementation will
+ always focus on quality.</LI>
+ </UL>
+</LI>
+</UL>
+
+<HR>
+Last updated: 2003-03-24
+
+
+</BLOCKQUOTE>
+
+<TABLE WIDTH="99%" ALIGN="CENTER" CELLSPACING="0" CELLPADDING="4">
+ <TR>
+ <TD CLASS="bodytext" BGCOLOR="#FFFFFF"></TD>
+ </TR>
+ <TR>
+ <TD CLASS="headtext" BGCOLOR="#226666">
+ <A HREF="http://validator.w3.org/check/referer">
+ <IMG BORDER="0" SRC="http://www.w3.org/Icons/valid-html401"
+ ALT="Valid HTML 4.01!" HEIGHT="31" WIDTH="88">
+ </A>
+ <A HREF="http://cr.yp.to/djbdns.html"><IMG BORDER="0" WIDTH="88"
+ HEIGHT="31" SRC="djbdns.jpg" ALT="Powered by djbdns!"></A>
+ <IMG BORDER="0" WIDTH="88" HEIGHT="30" SRC="binclogo.gif"
+ ALT="Powered by Binc IMAP">
+ </TD>
+ </TR>
+</TABLE>
+
+</TD>
+</TR>
+</TABLE>
+<BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR>
+<BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR>
+
+</BODY>
+</HTML>
+">
+ </TD>
+ </TR>
+</TABLE>
+
+</TD>
+</TR>
+</TABLE>
+<BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR>
+<BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR>
+
+</BODY>
+</HTML>
diff --git a/doc/OLD/HTML/bincimap-imapdir.html b/doc/OLD/HTML/bincimap-imapdir.html
new file mode 100644
index 0000000..2309a0d
--- /dev/null
+++ b/doc/OLD/HTML/bincimap-imapdir.html
@@ -0,0 +1,257 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<HTML>
+
+<HEAD>
+ <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+ <META HTTP-EQUIV="Content-Language" CONTENT="en">
+
+ <TITLE>Binc IMAP - IMAPdir</TITLE>
+ <META NAME="revisit-after" CONTENT="14 days">
+ <META NAME="keywords" CONTENT="Binc IMAP imapdir checkpassword daemontools tcpserver xinetd Maildir qmail">
+ <META NAME="description" CONTENT="Andreas Aardal Hanssen">
+ <META NAME="copyright" CONTENT="Copyright Andreas Aardal Hanssen 2002, 2003">
+ <META NAME="distribution" CONTENT="global">
+ <META NAME="author" CONTENT="Andreas Aardal Hanssen">
+ <LINK REL="stylesheet" HREF="bincimap.css" TYPE="text/css">
+ <LINK REL="icon" HREF="/favicon.ico" TYPE="image/ico">
+ <LINK REL="shortcut icon" HREF="/favicon.ico">
+
+</HEAD>
+
+<BODY BGCOLOR="#000000">
+
+<TABLE WIDTH="95%" ALIGN="CENTER" CELLSPACING="0" CELLPADDING="4">
+<TR>
+<TD BGCOLOR="#004444">
+
+<TABLE WIDTH="99%" ALIGN="CENTER" CELLSPACING="0" CELLPADDING="4">
+ <TR>
+ <TD CLASS="headtext" BGCOLOR="#226666" ALIGN="LEFT">
+ <TABLE>
+ <TR>
+ <TD ALIGN="center" VALIGN="middle"><IMG ALT="Binc IMAP logo" SRC="b-button64.png" BORDER="0"></TD>
+ <TD ALIGN="center" VALIGN="middle">Binc IMAP - IMAPdir</TD>
+ </TR>
+ </TABLE>
+ </TD>
+ <TD CLASS="bodytext" BGCOLOR="#226666" ALIGN="RIGHT">
+ <A HREF="http://www.gnu.org/licenses/gpl.html">GNU General Public License</A><BR>
+ Andreas Aardal Hanssen &lt;andreas@hanssen.name&gt;
+ </TD>
+ </TR>
+ <TR>
+ <TD CLASS="bodytext" BGCOLOR="#FFFFFF" COLSPAN="2"></TD>
+ </TR>
+</TABLE>
+
+<DIV CLASS="bodytext">
+
+<BLOCKQUOTE>
+
+<P>This document describes the generic mail folder structure
+<B>IMAPdir</B>.</P>
+
+<P>The goal of the work behind this specification is to provide the
+community with an unambiguous representation of a mailbox hierarchy
+where a mailbox name has a one-to-one match against a file system
+representation. The hierarchy and naming style is inspired by the
+IMAP4 protocol.</P>
+
+<P>Rather than being a completely new mailbox format, this specification
+sets conventions on how to represent a mailbox hierarchy on a file
+system, using existing mailbox formats. <B>IMAPdir</B> is not bound to
+any protocol.</P>
+
+<P><B>IMAPdir</B> works with any mailbox format where one mailbox can
+be identified by a file, a directory or a symbolic link. One entry in
+an <B>IMAPdir</B> folder is a candidate for a mailbox. If the
+<B>IMAPdir</B> client can not identify a directory entry as a
+selectable mailbox, then the client must either skip the entry or
+mark it as invalid (in IMAP, marked as \NoSelect).</P>
+
+<UL>
+<LI>There is no limitation to the type of file system or the number of
+file systems represented inside an <B>IMAPdir</B>.</LI>
+<LI>There are no reserved ordinary folder
+names such as "Sent", "Draft" or "Trash".</LI>
+<LI>Clients of the mailboxes inside an <B>IMAPdir</B>
+folder <I>must</I> follow the respective format and protocol conventions
+strictly.</LI>
+</UL>
+
+<P>The format of a mailbox representation in <B>IMAPdir</B> is a
+sequence of one or more US-ASCII characters (32-126), encoded using
+the following rules:</P>
+
+<UL>
+<LI>A dot '.' character represents a soft hierarchy delimiter with two exceptions:
+ <UL>
+ <LI>A leading dot represents the dot itself.</LI>
+ <LI>A dot '.' preceded by a backslash '\' represents the dot '.' itself.</LI>
+ </UL>
+</LI>
+<LI>A backslash '\' preceded by a backslash '\' represents the backslash '\' itself. For all other cases than before a dot '.' or a backslash '\', a stray backslash '\' character is considered an error.</LI>
+<LI>A backslash '\' as the first character of an entry is considered an error.</LI>
+<LI>All other characters represent themselves.</LI>
+</UL>
+
+Note that the protocol used to fetch the mailbox using the
+structuring <B>IMAPdir</B> convention may restrict the character set
+allowed. The clients <I>must</I> in those cases translate the mailbox
+names to a selectable format.
+
+<P>As with <A
+HREF="http://www.inter7.com/courierimap/README.maildirquota.html">Maildir++</A>,
+submailboxes can not be represented in a recursive fashion in the file
+system. The mailbox' representation name will contain the soft
+hierarchy delimiter character dot '.', and all mailboxes must reside
+in the same root level directory.</P>
+
+<P>The following example shows the typical content of an
+<B>IMAPdir</B> stored under the directory <B>mail/</B>. The <B>file
+system</B> column displays the contents as viewed by the UNIX command
+'ls -al -F'.</P>
+
+<TABLE ALIGN="center" CELLSPACING="5" CELLPADDING="5">
+ <TR>
+ <TH BGCOLOR="#555555">File system
+ </TH>
+ <TH BGCOLOR="#555555">IMAP
+ </TH>
+ <TH BGCOLOR="#555555">Description
+ </TH>
+ </TR>
+ <TR>
+ <TD BGCOLOR="#555555">
+ <PRE>
+mail/INBOX -> /var/mail/paul
+mail/INBOX.old/ -> ../Maildir/
+mail/INBOX.outbox/
+mail/work
+mail/3rd\. of July
+mail/Sent.2003.Jan/
+mail/Sent.2003.Feb/
+mail/Sent.2003.Mar/
+mail/.foo
+ </PRE>
+ </TD>
+ <TD BGCOLOR="#555555">
+ <PRE>
+"INBOX"
+"INBOX/old"
+"INBOX/outbox"
+"work"
+"3rd. of July"
+"Sent/2003/Jan"
+"Sent/2003/Feb"
+"Sent/2003/Mar"
+".foo"
+ </PRE>
+ </TD>
+ <TD BGCOLOR="#555555">
+ <PRE>
+Symbolic link to mbox
+Symbolic link to Maildir
+Maildir
+mbox
+mbox
+Maildir
+Maildir
+Maildir
+mbox
+ </PRE>
+ </TD>
+ </TR>
+</TABLE>
+
+<P>In other multi level mailbox formats, <B>INBOX</B> is treated as a
+special case.</P>
+
+<BLOCKQUOTE>
+ <P><U><B>Maildir++</B></U></P>
+
+ <UL>
+ <LI><A
+ HREF="http://www.inter7.com/courierimap/README.maildirquota.html">Maildir++</A>
+ defines the mail directory itself as
+ <B>INBOX</B>. Any subdirectories inside starting with a single dot
+ '.', and containing the file <B>maildirfolder</B> are interpreted as
+ a <A
+ HREF="http://www.inter7.com/courierimap/README.maildirquota.html">Maildir++</A>
+ submailbox.
+
+ <LI><P>A <A HREF="http://cr.yp.to/proto/maildir.html">Maildir</A> is by
+ Dan J. Bernstein's definition identified by a directory that
+ contains the subdirectories <B>cur</B>,
+ <B>new</B> and <B>tmp</B> and nothing else.</LI>
+
+ <LI>The <A
+ HREF="http://www.inter7.com/courierimap/README.maildirquota.html">Maildir++</A>
+ definition follows naturally from <A
+ HREF="http://www.inter7.com/courierimap/README.maildirquota.html">Maildir++</A>
+ being an extension to Dan J. Bernstein's <A
+ HREF="http://cr.yp.to/proto/maildir.html">Maildir</A>
+ format. However, although the directory ~/Maildir/ itself is a
+ standard representation of INBOX for <A
+ HREF="http://cr.yp.to/proto/maildir.html">Maildir</A> clients, it is
+ not standard for other mailbox formats. With <A
+ HREF="http://www.inter7.com/courierimap/README.maildirquota.html">Maildir++</A>,
+ your mailboxes and INBOX in particular must be a <A
+ HREF="http://cr.yp.to/proto/maildir.html">Maildir</A>.
+ </UL>
+
+ <P><U><B>mbox</B></U></P>
+
+ <UL>
+ <LI>When using the <B>mbox</B> storage format, the user's INBOX is typically
+ stored at /var/spool/mail/&lt;username&gt;.</LI>
+
+ <LI>Using this format, the mail depository client must both have the
+ path to the user's INBOX <I>and</I> the path to the user's local
+ mailbox depository, typically <B>mail/</B>.</LI>
+ </UL>
+
+</BLOCKQUOTE>
+
+<P>Note that although <B>IMAPdir</B> has no restrictions with regards
+to mailbox names, the protocol that uses <B>IMAPdir</B> might. For
+example, IMAP servers will require the mailbox <B>INBOX</B> to be
+present.</P>
+
+<HR>
+
+<P>Last updated on <B>2003-03-20</B>.</P>
+
+<P>Please direct comments to <B>IMAPdir</B> or this document to the
+<A HREF="/#mailinglist">Binc IMAP mailing list</A>. Remember to <I>search the archives</I>
+first.</P>
+
+</BLOCKQUOTE>
+
+<TABLE WIDTH="99%" ALIGN="CENTER" CELLSPACING="0" CELLPADDING="4">
+ <TR>
+ <TD CLASS="bodytext" BGCOLOR="#FFFFFF"></TD>
+ </TR>
+ <TR>
+ <TD CLASS="headtext" BGCOLOR="#226666">
+ <A HREF="http://validator.w3.org/check/referer">
+ <IMG BORDER="0" SRC="http://www.w3.org/Icons/valid-html401"
+ ALT="Valid HTML 4.01!" HEIGHT="31" WIDTH="88">
+ </A>
+ <A HREF="http://cr.yp.to/djbdns.html"><IMG BORDER="0" WIDTH="88"
+ HEIGHT="31" SRC="djbdns.jpg" ALT="Powered by djbdns!"></A>
+ <IMG BORDER="0" WIDTH="88" HEIGHT="30" SRC="binclogo.gif"
+ ALT="Powered by Binc IMAP">
+ </TD>
+ </TR>
+</TABLE>
+
+</DIV>
+</TD>
+</TR>
+</TABLE>
+<BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR>
+<BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR>
+
+</BODY>
+</HTML>
diff --git a/doc/OLD/HTML/bincimap-tech.html b/doc/OLD/HTML/bincimap-tech.html
new file mode 100644
index 0000000..e5fce32
--- /dev/null
+++ b/doc/OLD/HTML/bincimap-tech.html
@@ -0,0 +1,503 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<HTML>
+
+<HEAD>
+ <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+ <META HTTP-EQUIV="Content-Language" CONTENT="en">
+
+ <TITLE>Binc IMAP - Technical Documentation</TITLE>
+ <META NAME="revisit-after" CONTENT="14 days">
+ <META NAME="keywords" CONTENT="Binc IMAP technical documentation checkpassword daemontools tcpserver xinetd Maildir qmail">
+ <META NAME="description" CONTENT="Andreas Aardal Hanssen">
+ <META NAME="copyright" CONTENT="Copyright Andreas Aardal Hanssen 2002, 2003">
+ <META NAME="distribution" CONTENT="global">
+ <META NAME="author" CONTENT="Andreas Aardal Hanssen">
+ <LINK REL="stylesheet" HREF="bincimap.css" TYPE="text/css">
+ <LINK REL="icon" HREF="/favicon.ico" TYPE="image/ico">
+ <LINK REL="shortcut icon" HREF="/favicon.ico">
+
+</HEAD>
+
+<BODY BGCOLOR="#000000">
+
+<TABLE WIDTH="95%" ALIGN="CENTER" CELLSPACING="0" CELLPADDING="4">
+<TR>
+<TD BGCOLOR="#004444">
+
+<TABLE WIDTH="99%" ALIGN="CENTER" CELLSPACING="0" CELLPADDING="4">
+ <TR>
+ <TD CLASS="headtext" BGCOLOR="#226666" ALIGN="LEFT">
+ <TABLE>
+ <TR>
+ <TD ALIGN="center" VALIGN="middle"><IMG ALT="Binc IMAP logo" SRC="b-button64.png" BORDER="0"></TD>
+ <TD ALIGN="center" VALIGN="middle">Binc IMAP - Technical Documentation</TD>
+ </TR>
+ </TABLE>
+ </TD>
+ <TD CLASS="bodytext" BGCOLOR="#226666" ALIGN="RIGHT">
+ <A HREF="http://www.gnu.org/licenses/gpl.html">GNU General Public License</A><BR>
+ Andreas Aardal Hanssen &lt;andreas@hanssen.name&gt;
+ </TD>
+ </TR>
+ <TR>
+ <TD CLASS="bodytext" BGCOLOR="#FFFFFF" COLSPAN="2"></TD>
+ </TR>
+</TABLE>
+
+<DIV CLASS="bodytext">
+
+<P><U><B>Binc in my home area, IMAPdir and cousins</B></U></P>
+
+<BLOCKQUOTE>
+
+<P>Binc IMAP uses either <A
+HREF="http://www.inter7.com/courierimap/README.maildirquota.html">Maildir++</A>
+or a structure called <A HREF="bincimap-imapdir.html">IMAPdir</A> to
+store its set of mailboxes. <A
+HREF="bincimap-imapdir.html">IMAPdir</A> is more or less similar to <A
+HREF="http://www.inter7.com/courierimap/README.maildirquota.html">Maildir++</A>,
+but it provides more flexibility with regards to mailbox names and
+hierarchy structure.</P>
+
+<P>In a sense, <A HREF="bincimap-imapdir.html">IMAPdir</A> takes all
+the goods from <A
+HREF="http://cr.yp.to/proto/maildir.html">Maildir</A> and adds root
+level mailboxes, submailboxes both of regular root level mailboxes and
+of the special mailbox INBOX, mail in mailboxes of any level, and with
+no restrictions.</P>
+
+<P>In the root of the <A HREF="bincimap-imapdir.html">IMAPdir</A>
+structure, Binc IMAP stores the list of a user's subscribed folders in
+a file called
+<B>bincimap-subscribed</B>. This file should only be edited manually
+if you are confident with <B>Binc::Storage</B>. Normally the
+administrator and the IMAP user will leave this to Binc IMAP.</P>
+
+<P>Binc IMAP's <A
+HREF="http://cr.yp.to/proto/maildir.html">Maildir</A> backend
+(default) will temporarily create a lock file called
+<B>bincimap-scan-lock</B> inside a <A
+HREF="http://cr.yp.to/proto/maildir.html">Maildir</A> when it is
+scanning for mailbox changes and delegating unique message
+identifiers. This is to ensure that UIDs are delegated exactly once to
+every message that has been detected by any one Binc IMAP server
+instance.</P>
+
+<P>Inside each <A
+HREF="http://cr.yp.to/proto/maildir.html">Maildir</A>, Binc IMAP
+stores two files that allow multiple instances of the server to
+communicate the state and changes of the mailbox:
+<B>bincimap-uidvalidity</B> and
+<B>bincimap-cache</B>. These files are safe to delete, although that
+will trigger UIDVALIDITY to bounce and clients may have to
+resynchronize their local state.</P>
+
+</BLOCKQUOTE>
+
+<P><U><B>Object Oriented Design: Brokers, Depots, Operators.</B></U></P>
+
+<BLOCKQUOTE>
+
+<TABLE WIDTH="100%">
+ <TR>
+ <TD VALIGN="TOP">
+ <P>Binc IMAP's design is <I>simple</I> and <I>modular</I>. This
+ makes it <I>easy</I> to maintain and extend.</P>
+
+ <P>Although the IMAP protocol is relatively complex, you will
+ find that Binc IMAP's solution is surprisingly easy to
+ grasp.</P>
+
+ <P>At the heart of Binc IMAP's implementation lies the basic
+ functionality for Object Oriented Design provided by the ISO C++
+ standard and general knowledge in the area of standard Design
+ Patterns.</P>
+
+ <P>The main components are:</P>
+
+ <UL>
+ <LI>The <A HREF="#Broker">Broker</A></LI>
+ <LI>The <A HREF="#BrokerFactory">BrokerFactory</A></LI>
+ <LI>The <A HREF="#Command">Command</A></LI>
+ <LI>The <A HREF="#Depot">Depot</A></LI>
+ <LI>The <A HREF="#DepotFactory">DepotFactory</A></LI>
+ <LI>The <A HREF="#Mailbox">Mailbox</A></LI>
+ <LI>The <A HREF="#Operator">Operator</A></LI>
+ <LI>The <A HREF="#Session">Session</A></LI>
+ <LI>The <A HREF="#IO">IO</A></LI>
+ </UL>
+ </TD>
+ <TD>
+ <IMG BORDER="0" SRC="bincimap-design-tiny.png" ALT="Binc IMAP, Object Oriented Design">
+ </TD>
+ </TR>
+</TABLE>
+
+<HR>
+<A NAME="Broker"><B>Broker</B></A>
+
+ <P>One <A HREF="#Broker">Broker</A> holds a set of <A
+ HREF="#Operator">Operators</A>. For each
+ <I>state</I> Binc IMAP is in, the <A
+ HREF="#BrokerFactory">BrokerFactory</A> delegates exactly one <A
+ HREF="#Broker">Broker</A> to hold the relevant <A
+ HREF="#Operator">Operator</A> objects.</P>
+
+ <P>Typically, an <A HREF="#Operator">Operator</A> can be assigned to
+ more than one <A HREF="#Broker">Broker</A>. For example, the <A
+ HREF="#Operator">Operator</A> that serves the IMAP command "NOOP" (a
+ command that is available in all three IMAP <I>states</I>),
+ <B>NoopOperator</B>, is available in all <A
+ HREF="#Broker">Broker</A> objects.</P>
+
+ <P>The <A HREF="#Broker">Broker</A> is responsible for first passing
+ the <A HREF="#Depot">Depot</A> and the <A HREF="#IO">IO</A>
+ singleton to the appropriate <A HREF="#Operator">Operator</A>,
+ generating a <A HREF="#Command">Command</A> object.</P>
+
+ <P>The <A HREF="#Broker">Broker</A> is also responsible for passing
+ the resulting <A HREF="#Command">Command</A> object to the <A
+ HREF="#Operator">Operator</A> together with the <A
+ HREF="#Depot">Depot</A>, generating the <I>untagged responses</I>
+ that come as a result of the processing.</P>
+
+ <BR>
+ <TABLE>
+ <TR>
+ <TD BGCOLOR="#555555">
+ <PRE>
+Broker *broker = BrokerFactory.getBroker(STATE_SELECTED);
+if (broker != NULL)
+ throw CriticalException("no broker for selected state");
+
+Command command;
+
+try {
+ broker.parse(com, command);
+ broker.process(depot, command);
+} catch (...
+ </PRE>
+ </TD>
+ </TR>
+ </TABLE>
+
+<HR>
+<A NAME="BrokerFactory"><B>BrokerFactory</B></A>
+
+ <P>The <A HREF="#BrokerFactory">BrokerFactory</A> manages the <A
+ HREF="#Broker">Broker</A> objects.</P>
+
+ <P>Given a <I>state</I>, the <A
+ HREF="#BrokerFactory">BrokerFactory</A> provides a <A
+ HREF="#Broker">Broker</A> that holds all the <A
+ HREF="#Operator">Operator</A> objects available to the client.</P>
+
+ <P>This provides a modular and safe separation of the priviledges
+ available at the different <I>states</I> in the IMAP session.</P>
+
+ <P>The <I>preauthenticate stub</I> has a <A
+ HREF="#BrokerFactory">BrokerFactory</A> that can only generate <A
+ HREF="#Broker">Broker</A> objects for the <I>non-authenticated</I>
+ state.</P>
+
+<HR>
+<A NAME="Command"><B>Command</B></A>
+
+ <P>A <A HREF="#Command">Command</A> object holds all information
+ that was passed to the <A HREF="#Operator">Operator</A> that served
+ a specific IMAP command.</P>
+
+ <P><A HREF="#Command">Command</A> objects are named. Examples of
+ such names are "CHECK", "SUBSCRIBE" and "LOGOUT".</P>
+
+ <P>For the name "FETCH", the <A HREF="#Command">Command</A> object
+ is decorated with
+ <I>sequence set</I>, optionally a <I>section</I> and so on. The
+ <B>parse()</B> method in each <A HREF="#Operator">Operator</A> is
+ responsible for decorating the <A HREF="#Command">Command</A>
+ object.</P>
+
+ <P>The <A HREF="#Command">Command</A> object is
+ <I>short-lived</I>. It is created, decorated, passed on to the <A
+ HREF="#Operator">Operator</A>, then discarded.</P>
+
+<HR>
+<A NAME="Depot"><B>Depot</B></A>
+
+ <P>A <A HREF="#Depot">Depot</A> is responsible for handling the
+ different <A HREF="#Mailbox">Mailbox</A> objects, and it is the
+ mailbox structure authority.</P>
+
+ <P>Given an IMAP mailbox path as input, a <A HREF="#Depot">Depot</A>
+ can give the caller a corresponding <A HREF="#Mailbox">Mailbox</A>
+ object if it finds one that successfully identifies the type of <A
+ HREF="#Mailbox">Mailbox</A>.
+
+ <P>The <A HREF="#Depot">Depot</A> is also aware of what the
+ <I>default</I> <A HREF="#Mailbox">Mailbox</A> type object is. This
+ <A HREF="#Mailbox">Mailbox</A> object is used when creating new IMAP
+ mailboxes.</P>
+
+ <P>Finally, the <A HREF="#Depot">Depot</A> is used to translate
+ mailbox names to a representation on the file system and back. There
+ are currently two specializations of the <A HREF="#Depot">Depot</A>
+ object available: one for <A
+ HREF="http://www.inter7.com/courierimap/README.maildirquota.html">Maildir++</A>
+ and one for <A HREF="bincimap-imapdir.html">IMAPdir</A>. Each has
+ its own characteristics in how do translate the mailbox hierarchy to
+ the file system.</P>
+
+ <TABLE>
+ <TR>
+ <TD BGCOLOR="#555555">
+ <PRE>
+Mailbox *mailbox = depot.getDefaultMailbox();
+if (mailbox == NULL)
+ throw CriticalException("no default mailbox provided");
+
+try {
+ mailbox->imapCreate("work/2003/07/todo");
+} catch (...
+ </PRE>
+ </TD>
+ </TR>
+ </TABLE>
+
+<HR>
+<A NAME="DepotFactory"><B>DepotFactory</B></A>
+
+ <P>The <A NAME="DepotFactory">DepotFactory</A> manages the <A
+ HREF="#Depot">Depot</A> objects.</P>
+
+ <P>New <A HREF="#Depot">Depot</A> objects are assigned to the <A
+ NAME="DepotFactory">DepotFactory</A> in runtime. This makes it easy
+ to add new <A HREF="#Depot">Depot</A> objects using loadable
+ modules. The <A HREF="#Depot">Depot</A> objects are registered and
+ accessed via their <I>names</I>, such as "<A
+ HREF="http://www.inter7.com/courierimap/README.maildirquota.html">Maildir++</A>"
+ or "<A HREF="bincimap-imapdir.html">IMAPdir</A>".</P>
+
+ <P>The <A NAME="DepotFactory">DepotFactory</A> gives individual
+ users of Binc IMAP the option to choose the <A
+ HREF="#Depot">Depot</A> object that suits their needs the best.</P>
+
+<HR>
+<A NAME="IO"><B>IO</B></A>
+
+ <P>The <A HREF="#IO">IO</A> is a <I>global</I>. It consists of two instances -
+ <U>com</U> and <U>logger</U>.</P>
+
+ <P><U>com</U> reads and writes characters to and from the client,
+ and hides the optional SSL encryption.</P>
+
+ <P><U>logger</U> writes characters to Binc IMAP's log files. It
+ hides the method used to log data. Currently it supports logging to
+ stderr and syslog.</P>
+
+<HR>
+<A NAME="Mailbox"><B>Mailbox</B></A>
+
+ <P>The <A HREF="#Mailbox">Mailbox</A> is an abstract for Binc IMAP's different
+ <I>backends</I>. Bundled with Binc is a backend for <A
+ HREF="http://cr.yp.to/proto/maildir.html">Maildir</A>. The class
+ Maildir <I>inherits</I> <A HREF="#Mailbox">Mailbox</A>.</P>
+
+ <P>In short, a <A HREF="#Mailbox">Mailbox</A> contains all methods needed for Binc
+ IMAP to serve a specific backend. It also holds a method to identify
+ a <A HREF="#Mailbox">Mailbox</A> of its own kind.</P>
+
+ <P>All registered <A HREF="#Mailbox">Mailbox</A> objects are held by the
+ <A HREF="#Depot">Depot</A>.</P>
+
+ <BR>
+ <TABLE>
+ <TR>
+ <TD BGCOLOR="#555555">
+ <PRE>
+Mailbox *mailbox = depot.getSelectedMailbox();
+if (mailbox == NULL)
+ throw CriticalException("no selected mailbox in selected state");
+
+mailbox->imapExpunge();
+mailbox->imapClose();
+ </PRE>
+ </TD>
+ </TR>
+ </TABLE>
+
+<HR>
+<A NAME="Operator"><B>Operator</B></A>
+
+ <P>An <A HREF="#Operator">Operator</A> is associated with an IMAP command such as
+ "SEARCH" or "AUTHENTICATE". In short, the <A HREF="#Operator">Operator</A> is used to
+ perform an arbitrary operation on a <A HREF="#Mailbox">Mailbox</A>.<P>
+
+ <P>Typically, an <A HREF="#Operator">Operator</A> can be assigned to one or more
+ <A HREF="#Broker">Broker</A> objects.
+
+ <P>Operators contain, among others, the two public methods:
+ <B>parse()</B> and <B>process()</B>.</P>
+
+ <P>When given the <B>IO singleton</B> as input, the <B>parse()</B>
+ method generates a <A HREF="#Command">Command</A> object. This object can then be
+ fed to <B>process()</B> together with a <A HREF="#Depot">Depot</A>.</P>
+
+ <P>When processing its command, an <A HREF="#Operator">Operator</A> is allowed to
+ generate <I>untagged responses</I> and it can also update the
+ <I>state</I> of a <A HREF="#Mailbox">Mailbox</A>, the <A HREF="#Depot">Depot</A> or the
+ <A HREF="#Session">Session</A> singleton.</P>
+
+ <P><A HREF="#Operator">Operator</A> objects are assigned
+ <I>dynamically</I> to each <A HREF="#Broker">Broker</A>, making it
+ very easy to write
+ <I>extensions</I> that add or replace existing <A
+ HREF="#Operator">Operator</A> objects using Binc IMAP's <I>loadable
+ module support.</I></P>
+
+<HR>
+<A NAME="Session"><B>Session</B></A>
+
+ <P>The <A HREF="#Session">Session</A> is a <I>singleton</I> object that holds
+ information that is relevant to the current IMAP session.</P>
+
+ <P>Currently, the <A HREF="#Session">Session</A> contains information about:</P>
+
+ <UL>
+ <LI>Global configuration (administrator settings)</LI>
+ <LI>Local configuration (user settings)</LI>
+ <LI>Command line arguments</LI>
+ <LI>Folder subscription list</LI>
+ </UL>
+
+<HR>
+
+<P>Last updated on <B>2003-03-20</B>.</P>
+
+<P>Please direct comments on this document to the <A
+HREF="/#mailinglist">Binc IMAP mailing list</A>. Remember to <I>search
+the archives</I> first.</P>
+
+</BLOCKQUOTE>
+
+<TABLE WIDTH="99%" ALIGN="CENTER" CELLSPACING="0" CELLPADDING="4">
+ <TR>
+ <TD CLASS="bodytext" BGCOLOR="#FFFFFF"></TD>
+ </TR>
+ <TR>
+ <TD CLASS="headtext" BGCOLOR="#226666">
+ <A HREF="http://validator.w3.org/check/referer">
+ <IMG BORDER="0" SRC="http://www.w3.org/Icons/valid-html401"
+ ALT="Valid HTML 4.01!" HEIGHT="31" WIDTH="88">
+ </A>
+ <A HREF="http://cr.yp.to/djbdns.html"><IMG BORDER="0" WIDTH="88"
+ HEIGHT="31" SRC="djbdns.jpg" ALT="Powered by djbdns!"></A>
+ <IMG BORDER="0" WIDTH="88" HEIGHT="30" SRC="binclogo.gif"
+ ALT="Powered by Binc IMAP">
+ </TD>
+ </TR>
+</TABLE>
+
+</DIV>
+</TD>
+</TR>
+</TABLE>
+<BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR>
+<BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR>
+
+</BODY>
+</HTML>
+style with only LF. The MaildirMessage is an
+ implementation of Message used in Maildir. When using a Maildir
+ mailbox, Mailbox::iterator will return a reference to a
+ MaildirMessage. MaildirMessage also uses a MaildirMessageCache
+ singleton to handle cacheing of messages.</P>
+
+ <P>Although the inside of MaildirMessage both deals with files,
+ cacheing and MIME, the Operator needs not think about this.</P>
+
+</BLOCKQUOTE>
+
+<HR>
+<A NAME="Operator"><B>Operator</B></A>
+<BLOCKQUOTE>
+
+ <P>An <A HREF="#Operator">Operator</A> is associated with an IMAP command such as
+ "SEARCH" or "AUTHENTICATE". In short, the <A HREF="#Operator">Operator</A> is used to
+ perform an arbitrary operation on a <A HREF="#Mailbox">Mailbox</A>.<P>
+
+ <P>Typically, an <A HREF="#Operator">Operator</A> can be assigned to one or more
+ <A HREF="#Broker">Broker</A> objects.
+
+ <P>Operators contain, among others, the two public methods:
+ <B>parse()</B> and <B>process()</B>.</P>
+
+ <P>The <B>parse()</B> method decorates a <A
+ HREF="#Request">Request</A> object. This object can then be fed to
+ <B>process()</B> together with a <A HREF="#Depot">Depot</A>.</P>
+
+ <P>When processing its request, an <A HREF="#Operator">Operator</A>
+ is allowed to generate <I>untagged responses</I> and it can also
+ update the <I>state</I> of a <A HREF="#Mailbox">Mailbox</A>, the <A
+ HREF="#Depot">Depot</A> or the <A HREF="#Session">Session</A>
+ singleton.</P>
+
+ <P><A HREF="#Operator">Operator</A> objects are assigned
+ <I>dynamically</I> to each <A HREF="#Broker">Broker</A>, making it
+ very easy to write <I>extensions</I> that add or replace existing <A
+ HREF="#Operator">Operator</A> objects using Binc IMAP's <I>loadable
+ module support.</I></P>
+</BLOCKQUOTE>
+
+<HR>
+<A NAME="Session"><B>Session</B></A>
+<BLOCKQUOTE>
+ <P>The <A HREF="#Session">Session</A> is a <I>singleton</I> object that holds
+ information that is relevant to the current IMAP session.</P>
+
+ <P>Currently, the <A HREF="#Session">Session</A> contains information about:</P>
+
+ <UL>
+ <LI>Global configuration (administrator settings)</LI>
+ <LI>Local configuration (user settings)</LI>
+ <LI>Command line arguments</LI>
+ <LI>Folder subscription list</LI>
+ </UL>
+</BLOCKQUOTE>
+
+<HR>
+
+<P>Last updated on <B>2003-07-31</B>.</P>
+
+<P>Please direct comments on this document to the <A
+HREF="/#mailinglist">Binc IMAP mailing list</A>. Remember to <I>search
+the archives</I> first.</P>
+
+</BLOCKQUOTE>
+
+<TABLE WIDTH="99%" ALIGN="CENTER" CELLSPACING="0" CELLPADDING="4">
+ <TR>
+ <TD CLASS="bodytext" BGCOLOR="#FFFFFF"></TD>
+ </TR>
+ <TR>
+ <TD CLASS="headtext" BGCOLOR="#226666">
+ <A HREF="http://validator.w3.org/check/referer">
+ <IMG BORDER="0" SRC="http://www.w3.org/Icons/valid-html401"
+ ALT="Valid HTML 4.01!" HEIGHT="31" WIDTH="88">
+ </A>
+ <A HREF="http://cr.yp.to/djbdns.html"><IMG BORDER="0" WIDTH="88"
+ HEIGHT="31" SRC="djbdns.jpg" ALT="Powered by djbdns!"></A>
+ <IMG BORDER="0" WIDTH="88" HEIGHT="30" SRC="binclogo.gif"
+ ALT="Powered by Binc IMAP">
+ </TD>
+ </TR>
+</TABLE>
+
+</DIV>
+</TD>
+</TR>
+</TABLE>
+<BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR>
+<BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR>
+
+</BODY>
+</HTML>
diff --git a/doc/OLD/HTML/bincimap.css b/doc/OLD/HTML/bincimap.css
new file mode 100644
index 0000000..cf6c0b7
--- /dev/null
+++ b/doc/OLD/HTML/bincimap.css
@@ -0,0 +1,8 @@
+a:link { color: #fff; font-size: 12pt; font-family: Arial, Helvetica, Verdana; text-decoration: underline }
+a:active { color: #fff; font-size: 12pt; font-family: Arial, Helvetica, Verdana; text-decoration: underline }
+a { color: #fff; font-size: 12pt; font-family: Arial, Helvetica, Verdana; text-decoration: underline }
+a:vlink { color: #fff; font-size: 12pt; font-family: Arial, Helvetica, Verdana; text-decoration: underline }
+body { color: #fff; font-size: 12pt; font-family: Arial, Helvetica, Verdana }
+.bodytext { color: #fff; font-size: 12pt; font-family: Arial, Helvetica, Verdana }
+.headtext { color: #fff; font-size: 20pt; font-family: Arial, Helvetica, Verdana }
+
diff --git a/doc/OLD/README b/doc/OLD/README
new file mode 100644
index 0000000..ec630b3
--- /dev/null
+++ b/doc/OLD/README
@@ -0,0 +1,109 @@
+This documentation is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License as
+published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
+
+=========================================================================
+
+Welcome to Binc IMAP! This is the documentation for v1.3.4.
+
+The is an unstable development version, and it is not recommended for
+production systems.
+
+Here is a quick guide on how to setup IMAP on your system.
+
+You can also check out the project home page's FAQ and the Life With
+Binc IMAP community documentation site:
+
+http://www.bincimap.org/
+http://www.lifewithbincimap.org/
+
+Binc IMAP requires OpenSSL - http://www.openssl.org/, for SSL support.
+
+Installation instructions
+-------------------------
+
+Installing Binc IMAP is easy! View the options by passing --help to the
+configure script. Here's how to install the server using default options. Log
+in as root on your machine, then:
+
+# ./configure
+# make
+# make install
+
+Binc IMAP's "make install" stage tells you exactly where all files are copied.
+To uninstall, type "make uninstall".
+
+Configuring the server
+----------------------
+
+You need to figure out one thing before you start using the server. Binc IMAP
+doesn't run as a standalone TCP server. It relies on a TCP wrapper, like
+xinetd, inetd or tcpserver.
+
+ 1) I will be using xinetd.
+ - This is the recommended default. If you don't know what the other
+ options are about, then this is definitely the way to go. Just
+ make sure that xinetd is installed on your server.
+
+ 2) I will be using svscan / tcpserver
+ - Before anything, make sure that logging works with multilog.
+
+ 3) I will need to use another TCP wrapper.
+ - You should be able to figure out how to run Binc IMAP by looking
+ at the bundled xinetd and daemontools files. Otherwise, see if the
+ community pages can help you along the way. Or post a message to
+ the mailing list.
+
+Configuring Binc IMAP is easy! Simply locate your config file called
+"bincimap-config". It was installed as part of the "make install" stage. Edit
+this file. It contains reasonable defaults, but it should be easy enough to
+understand what you'd need to change.
+
+NOTE: tcpserver users, make sure LOG_TYPE is set to "multilog" if you prefer
+ using multilog.
+
+Choose your depot setting with care. The default depot, IMAPdir, is always
+best for fresh installs. If you're upgrading from a Courier-IMAP server, the
+Maildir++ depot will give you a smoother transition. You should still aim at
+moving to IMAPdir. For more on depots (or if you don't know what a depot is in
+this setting), see README.DEPOT.
+
+Check the SSL settings. See also README.SSL for more on generating an SSL
+certificate and key.
+
+Starting the server
+-------------------
+
+This assumes you used /usr/local as prefix when you installed Binc IMAP.
+
+1) xinetd users:
+
+ a) Create a symlink from /usr/local/etc/xinetd-bincimap to /etc/xinetd.d/imap.
+ b) Create a symlink from /usr/local/etc/xinetd-bincimaps to /etc/xinetd.d/imaps.
+ c) Restart xinetd.
+
+2) svscan users:
+
+ a) Create a symlink from /usr/local/share/service/bincimap to /service/imap.
+ b) Create a symlink from /usr/local/share/service/bincimaps to /service/imaps.
+
+The server should be available immediately.
+
+Happy IMAPing! With these settings your copy of Binc IMAP should be
+operational. For more information, please check out the man pages and
+FAQ.
+ Andy :-)
+
+=========================================================================
+Tell us what you think about this server! Post any problems, remarks
+or comments to:
+
+The Binc IMAP mailing list <binc@bincimap.org>
+The Binc IMAP Developers' mailing list <binc-dev@bincimap.org>
+
+Author: Andreas Aardal Hanssen <andreas-binc@bincimap.org>
diff --git a/doc/OLD/README.SSL b/doc/OLD/README.SSL
new file mode 100644
index 0000000..3048a65
--- /dev/null
+++ b/doc/OLD/README.SSL
@@ -0,0 +1,141 @@
+This documentation is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License as
+published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
+
+=========================================================================
+
+Quick guide to SSL certificates with Binc IMAP.
+
+Table of contents:
+
+0. Introduction
+1. To generate a private key and certificate request
+2. To generate a private key and self-signed certificate
+3. To generate a private key and CA signed certificate, acting as
+ one's own CA.
+
+For more information, check out the project home page's FAQ and
+the Life With Binc IMAP community documentation site:
+
+http://www.lifewithbincimap.org/
+
+=========================================================================
+
+0. Introduction
+---------------
+
+The are two ways to enable SSL on Binc IMAP. One is to use an SSL
+tunnel (http://www.stunnel.org/), the other is to use Binc IMAP's
+native SSL support. If you compiled Binc with SSL support, the latter
+is much easier to set up.
+
+To use SSL with Binc IMAP, you need a private key and a certificate.
+
+A private key is a random string of bits that is secret to your host.
+If this key is compromised, your SSL server will no longer provide
+significant security for your users.
+
+The certificate is among the first things the server sends to a
+client. The client uses this certificate to make certain that it is
+communicating with the correct host. To do this, it needs to check the
+certificate with a trusted third party certificate, known as a CA
+certificate.
+
+There are in general two types of certificates:
+
+- CA signed certificates
+- Self signed certificates
+
+CAs, or Certificate Authorities, are used by clients to verify the
+authenticity of a certificate. If you want an official CA to verify
+your certificate, you need to send a "certificate request". Usually
+for a certain price, a signed certificate is returned to you. If you
+do not wish to use an official CA, you can act as your own CA and
+create your own CA signed certificates.
+
+A certificate is not valid unless it is signed. If it is self signed,
+the clients can not verify its identity. In that sense, a self signed
+certificate is only useful in a test environment. The client can not
+identify the server if the server uses a self-signed certificate.
+
+The general idea is:
+
+* If you are testing an SSL enabled server, generate a self-signed
+test certificate.
+
+* If you want to provide an SSL enabled service on a closed network,
+create a CA certificate and a signed host certificate, then install
+the CA certificate on all clients on the network.
+
+* If you want to provide an SSL enabled service on an open network
+such as the Internet, use an official CA to sign your certificate.
+
+1. To generate a private key and certificate request
+----------------------------------------------------
+
+Quick hit: "make cert".
+
+To generate a private key and a certificate request, the following
+openssl command can be used:
+
+openssl req -newkey rsa:1024 -keyout bincimap.key -nodes -days 365 -out bincimap.crq
+
+Inside bincimap.crq is a certificate request in PEM encoding, which
+basically means the certificate is base64 encoded and enclosed in a
+start string that says "BEGIN CERTIFICATE REQUEST" and an end string
+that says "END CERTIFICATE REQUEST".
+
+Submit this request file to a CA such as Thawte (http://www.thawte.com/) or
+Verisign (http://www.verisign.com/). When you receive the signed certificate
+from them, store this in a file called bincimap.cert.
+
+The file contains the PEM encoded certificate, and it is enclosed in
+a start string that says "BEGIN CERTIFICATE" and an end string that
+says "END CERTIFICATE".
+
+Then edit bincimap-config and set the full filename and path to your
+certificate file and your private key file.
+
+You're now ready to use Binc IMAP with SSL.
+
+2. To generate a private key and self-signed certificate
+--------------------------------------------------------
+
+Quick hit: "make testcert".
+
+To generate a private key and a self-signed certificate, the following
+openssl command can be used:
+
+openssl req -newkey rsa:1024 -keyout bincimap.key -x509 -nodes -days 365 -out bincimap.cert
+
+Then edit bincimap-config and set the full filename and path to your
+certificate file and your private key file.
+
+You're now ready to test Binc IMAP with SSL.
+
+3. To generate a private key and CA signed certificate, acting as
+ one's own CA.
+------------------------------------------------------------------
+
+Look up the guides on LifeWithBincIMAP.org:
+
+http://lifewithbincimap.org/index.php/Main/DoItYourselfCertificateAuthority
+http://lifewithbincimap.org/index.php/Main/SettingUpYourOwnSSLCertificationAuthority
+
+You're now ready to use Binc IMAP with SSL.
+
+Happy IMAPing!
+ Andy :-)
+
+=========================================================================
+Tell us what you think about this server! Post any problems, remarks
+or comments to:
+
+The Binc IMAP mailing list <lists-bincimap@infeline.org>
+
+Author: Andreas Aardal Hanssen <andreas-binc at bincimap.org>
diff --git a/doc/TODO b/doc/TODO
new file mode 100644
index 0000000..c859ac4
--- /dev/null
+++ b/doc/TODO
@@ -0,0 +1,18 @@
+Version 2.0.0 and above:
+- Add CRAM-MD5 authentication - done 2.0.10.
+- Add rapid 'Authenticate PLAIN <credentials>' auth.
+- Add IMAP4rev2 capabilities.
+
+Version 1.3.4 and below:
+- Remove dependencies! Get bincimap-updatecache to be
+ _as lightweight as possible_.
+- Study protocol dump of typical activity. Look for things
+ to improve on Binc's output.
+- Fix infinite loop when accessing body of message in a
+ mailbox that has been deleted.
+- Study concurrency, find ways to improve the server.
+- Fix --without-ssl
+- Default to syslog when logging, except help and version which
+ simply use printf.
+- Fix I/O timeouts.
+- Fix expectAstring()