diff options
-rw-r--r-- | doc/ChangeLog | 23 | ||||
-rw-r--r-- | doc/LICENSE | 24 | ||||
-rw-r--r-- | doc/OLD/AUTHORS | 45 | ||||
-rwxr-xr-x | doc/OLD/ChangeLog.1.2 | 1237 | ||||
-rw-r--r-- | doc/OLD/ChangeLog.1.3 | 76 | ||||
-rw-r--r-- | doc/OLD/HTML/bincimap-faq.html | 926 | ||||
-rw-r--r-- | doc/OLD/HTML/bincimap-goals.html | 160 | ||||
-rw-r--r-- | doc/OLD/HTML/bincimap-imapdir.html | 257 | ||||
-rw-r--r-- | doc/OLD/HTML/bincimap-tech.html | 503 | ||||
-rw-r--r-- | doc/OLD/HTML/bincimap.css | 8 | ||||
-rw-r--r-- | doc/OLD/README | 109 | ||||
-rw-r--r-- | doc/OLD/README.SSL | 141 | ||||
-rw-r--r-- | doc/TODO | 18 |
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 <andreas@hanssen.name> + </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" +<zip> + </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 <andreas@hanssen.name> + </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 <andreas@hanssen.name> + </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/<username>.</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 <andreas@hanssen.name> + </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() |