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.
The Engine currently runs on Windows and Linux (both 32- and 64-bit). 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. |
2342 | NAMESPACE | Namespace extensions. (Allows access to alternate mailstores.) |
2359 | UIDPLUS extension | Enhancements for better synchronization. |
2595 | LOGINDISABLED capability | Disables LOGIN when STARTTLS supported. |
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. |
4731 | ESEARCH command | Search extensions. |
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]).
- Support for 32- and 64-bit servers.
- Optional thread pooling (see below).
- Support (optional) for Unicode mailbox names.
- 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).
- Handles messages up to 4GB in size -- easily.
- 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 950KB 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 over 15 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 the ACL extension.
- Capability to operate as an IMAP proxy.
In the Works
Extensions for internationalization (RFC 5255).
Pricing
Our standard licensing terms are US$25,000. This buys you full source code, manuals, code samples and developer support for one year. You get unlimited rights to use the Engine in any number of products and/or services on a single platform (Windows or Linux). Rights to a second platform cost an additional 50% of the original license fee. 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 other platforms, embeddable versions and versions localized for non-English users.