IMAP, the
Internet Message Access Protocol, was designed to transfer
email over the
internet. In particular, it allows a remote client to manipulate messages and mailboxes on a server. It doesn't, however, provide a method of
posting new messages, a function usually handled by the complementary
SMTP protocol; IMAP is for reading and managing mail only.
IMAP improves upon the other major email reading protocol, POP3. POP3 servers generally hold mail only until it is read by a client. It is then up to the mail client to store the messages on the client machine. POP3 was designed with short-lived dialup connections in mind, and so it only requires a short connection to the mail server to download the mail, after which the mail can be read offline. But after the transfer, the received mail is only available on the client computer. IMAP was designed with continuous online connections in mind. It permits the mail to reside on the server, and the client can download messages on demand. Usually, the messages are retained on the server, but there is no reason why an IMAP client can't download all the mail just like with POP3.
IMAP also knows about the structure of email messages. Server side searches of messages are possible, and if a message is MIME encoded, attachments can be downloaded separately from the message body.
An IMAP server will listen on TCP/IP port 143. The following RFCs define the IMAP protocol and it's extensions:
- 1730 - The original IMAP4 RFC
- 1731 - IMAP4 authentication mechanisms
- 2060 - IMAP4rev1 updates
- 2086 - Access control list extension
- 2087 - Quota extension
- 2088 - Literal+ extension (requires fewer transactions when reading mail)
- 2177 - Idle extension (allows client to receive asynchronous change notifications, rather than polling)
- 2192 - IMAP URL Scheme
- 2193 - Mailbox referrals (allows servers to reference remote mailboxes via URL)
- 2195 - CRAM-MD5 authentication (allows authentication with simple, cryptographically secure, challenge response protocol)
- 2221 - Login referrals (allows servers to proxy)
- 2342 - Namespace extension
- 2359 - UID+ extension
- 2595 - TLS (SSL) extension (IMAP over Secure Sockets Layer)
IMAP was originally implemented in the University of Washington IMAP server, but many other common mail servers support the IMAP protocol, including Microsoft Exchange Server, Cyrus IMAP, and Courier. The PINE email program, also developed at the University of Washington, was the first of many IMAP clients, like Netscape Messenger, Eudora, and Outlook.