Maclean Imap

Maclean IMAP Specification

Organization

Click on the thumbnail on the right to see a simplified diagram that shows the major components of an IMAP server built using the Engine.

IMAP clients send connection requests that are handled by the Listener. The Listener initializes TCP sessions and hands them off to the Engine to be run as IMAP sessions. The Mailbase Manager provides the Engine with a standardized view of the underlying Mailstore.

While parts of it have been ported to other operating systems, the Engine as a whole currently runs only on Win32. Ports of the Engine to other platforms will be performed as time allows and demand dictates.

Supported Standards
RFC Title Description
3501 IMAP Version 4rev1 Base spec for the current version of IMAP.
2177 IDLE command Extension that facilitates notifications of new mail arriving and other changes to the current mailbox.
2221 Login Referrals Advises client when a user’s account has moved to a different server.
2359 UIDPLUS extension Enhancements for better synchronization.
2791 ID extension Allows client and server to identify each other.
3516 BINARY extension Allows client to send and receive MIME parts in binary.
3691 UNSELECT command Extension for better control over mailboxes.
Special Provisions

In addition to conventional hierarchical mailstores, the Engine supports:

  • Read-only message stores. (Yes, you can serve from CD-ROM or DVD.)
  • "Flat" (non-hierarchical) mailstores.
  • Inbox-only stores.
Thread Pooling

The engine can be built to use threads in either of two ways.

The first threading model uses one thread per IMAP session. This is the simpler organization and is appropriate for servers that support modest loads. It will be required in situations where an IMAP session owns resources related to the mailstore that, in the Windows context, must belong to threads.

The second model uses thread pooling. A small number of worker threads are created and dispatched internally to handle events. With this sophisticated organization, a server should easily support thousands of concurrent sessions with minimal system overhead.

Features

The Maclean IMAP Server Engine boasts the following features:

  • Complete implementation of the base IMAP spec (RFC 3501) including such little-used elements as PREAUTH.
  • Support for selected obsolete IMAP elements (pre-4rev1) that are still used by some clients (such as FETCH BODY[0]).
  • Optional thread pooling (see below).
  • Support (optional) for Unicode mailbox names.v
  • Optional caching for IMAP ENVELOPE and BODYSTRUCTURE data.
  • Optional caching for full message texts.
  • Optional session transcription.
  • Optional internal logging system or hooks for an external logger.
  • SSL/TLS using OpenSSL.
  • NTLM authentication (used by Microsoft Outlook and Outlook Express).
  • Support for "backdoor" commands. (See our Developer Guide for details.)
  • Can coexist with other programs that use the mailstore simultaneously, for example WebMail clients (subject to Mailbase Manager provisions).
  • Code is optimized using sophisticated profilers.
Statistics

We have customers easily supporting over 1,000 concurrent users on a Windows server.

We provide over 850KB of IMAP-specific source code, over 340KB of message-parsing code and about 300KB of logging and other support code.

History

Work started in 1999. The first product built using the Engine was released in February 2001. The Engine was offered as an OEM product starting in 2002. Thus it has had well over five years in which to become a truly mature piece of software. We continue to find bugs but, except for some in new additions, they are very minor.

Limitations
The Engine currently lacks the following:

  • Support for IMAP SEARCH with alternate charsets.
  • Support for the ACL extension.
  • Capability to operate as an IMAP proxy.
In the Works

We are in the process of adding: Support for the NAMESPACE extensions.

Pricing

Our standard licensing terms are US$15,000. This buys you full source code, manuals, samples and developer support for one year. You get unlimited rights to use the Engine in any number of products and/or services. We may be prepared to offer other terms to educational and non-profit entities.

Customization

We can provide all forms of customization including ports to non-Windows platforms, embeddable versions and versions localized for non-English users.

Notes

This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. (www.openssl.org)

This product includes cryptographic software written by Eric Young (nospam.eay@cryptsoft.com).