Replace POP3 with IMAP to extend the reach of users' email
Published: 08 May 2003 11:43 BST
When setting up your own email system, there can be some difficulties even after you have the server set up on your network, in terms of sending and receiving mail for local users.
At this juncture, you have to make sure that the mail is going to the appropriate user. For instance, Postfix accepts incoming mail for local users and relays mail from local users out to wherever it's going. When it receives mail, it drops it into a mailbox file for the UNIX user account. To read this mail, you need to read the mailbox file directly, with a program that is capable of reading the raw file.
However, even with the powerful multiuser capabilities of Linux, you don't want to force your users to log on to the server and use a text-based mail reader, as you may end up on the street.
Fortunately, there are several email protocols for retrieving email from a server. By far, the most common is Post Office Protocol, otherwise known as POP3. Nearly all mail clients speak POP3. With POP3, the mail client connects to the server, downloads all new email, and disconnects.
This works fine for people who use only a single computer for all of their email, but if they want to check their email from any other computer, they won't be able to get to all of their messages. They also risk having their messages scattered across multiple computers. Using Internet Message Access Protocol (IMAP) as an alternative is a good solution to this problem. In this article, I am going to add an IMAP server to my current email setup and configure virtual users using a MySQL database.
What is IMAP?
IMAP provides a compelling alternative to POP3. With IMAP, all mail stays on the server, and clients manipulate the status. When you connect with IMAP clients from different computers, you see the same set of folders and all of your mail. If you read a message on one computer, it is read when you check it from another. If you delete it on one, it's deleted everywhere. For people who work with email offline or over a dialup connection, IMAP has many solutions for managing email. Mail clients can cache messages and then update message status on the server when they reconnect. Messages can be left on the server and deleted while still being unread, without having to download first. The main downside of IMAP is that leaving mail on the server consumes a lot more disk space in one place, rather than being distributed across a bunch of clients. This makes backups much easier, but you may have to add disk space or implement quotas.
Courier-IMAP
Courier-IMAP is the IMAP server I've chosen for this email system. It provides both IMAP and POP3 servers, so your users can choose either. It can access mail for users who don't have a local UNIX account ("virtual" users), and by putting the account information in a MySQL database, it can share these accounts with Postfix.
Courier-IMAP uses a directory-based file format called Maildir instead of traditional UNIX mailboxes. By using individual files for each mail, Maildir mailboxes don't have locking issues, and opening a large mailbox is fast.
You can download the source tarball for Courier-IMAP. Courier-IMAP is one part of a complete mail suite, but most of the other parts of the suite are not as widely used as the IMAP server. It also supports SSL-encrypted connections if you compile against the OpenSSL libraries.
Full Talkback thread
2 comments






