There are a large number of IMAP servers available, but this discussion is limited to those which fall under some sort of open-source license. IMAP offers a number of extensions to the basic protocol, and different servers implement different subsets of this functionality.
As of this writing, the IMAP capabilities defined are:-ACL [RFC2086] IDLE [RFC2177] LITERAL+ [RFC2088] LOGIN-REFERRALS [RFC2221] MAILBOX-REFERRALS [RFC2193] NAMESPACE [RFC2342] QUOTA [RFC2087] UIDPLUS [RFC2359] STARTTLS [RFC2595] LOGINDISABLED [RFC2595] ID [RFC2971]
Detailed information about any of these can be gleaned from the appropriate RFC, but those likely to be of most interest are ACL (access control list) support, which offers fine grained control over user access to mailboxes, QUOTA support, which permits mailbox level quotas independent of any disk quota scheme in use, and STARTTLS, which allows IMAP over SSL secured connections.
The three main open-source IMAP servers in use are:-These server all offer slightly different feature sets, and which is best will depend entirely on the demands of the userbase it is expected to serve.
The choice of IMAP server may well be dictated by the MTA (Mail Transfer Agent) in use, as both the MTA and the IMAP server must understand a common mailbox format. The UW server offers no support for maildir, and has no plans to do so at the time of writing. The Courier server was specifically written to allow IMAP access to maildir format mailboxes, and so users of Qmail (which uses maildir) will find Courier to be their only choice of IMAP server at this time. The Cyrus server supports only its own format, but provides with the distribution a local delivery agent that can understand this format, so integrating it into most MTA's should be possible. The UW server is supports several mailbox formats, so if access to mail via Elm or any other mail client that reads the mailbox directly is required, then UW will be the server of choice.
If the choice of server has not already been made by the above paragraph, other features may be important. The Cyrus server allows you to run it as a black-box system - Cyrus users need neither shell access to the IMAP server, nor an account in /etc/passwd. Users of UW or Courier servers need accounts in /etc/passwd to receive mail. Cyrus implements the IMAP ACL and QUOTA extensions, UW relies on OS level disk quotas, and thus can generate hard bounces for over-quota situations.
For my purposes, I chose to use the Cyrus server. Cyrus is a feature rich server, and supports several features which I considered important. It implements the IMAP ACL and QUOTA extensions, which give it great administrative flexibility. It has full support for several encrypted authentication methods, via the Cyrus-SASL library (see below), and it supports IMAP over SSL.