Tech Support

Internet Exchange Frequently Asked Questions

Internet Exchange Messaging Server
IMAP4 Server FAQ

Introduction
The Internet Exchange Message Store (both Enterprise and Workgroup versions) provides a IMAP4 server so that remote clients may access the Message Store using the Internet Mail Access Protocol Version 4 (IMAP4) protocol.   Most modern email clients, such as Outlook Express, Eudora, Netscape Communicator, and many more support this standard.

IMAP4 offers users added flexibility in managing their mail over other post office access protocols, such as POP3.  With IMAP4 support, users can manipulate their mailboxes/folders on the server without having to download them to a local hard disk.  End users can also create multilevel mailboxes on the server that can be easily renamed or deleted by them (with the proper authorization from the system administrator), as well as shared mailboxes which can be viewed concurrently in real time from multiple platforms.  Another advantage is that users have the option to search for messages on the server based on various attributes such as message size, headers, and message sender, and to separate attached files from the text and header portions of a message, with the searches being performed by the back-end Message Store.

Technical Overview
While the IMAP4 Server is running, it listens on port 143 for a connection request from an IMAP4 client, which is usually initiated by the user selecting a mailbox to access from the client screen.  Once such a connection request is received, the IMAP4 Server creates a thread that will handle further client transactions.  Upon start-up, this server thread sends out an initial greeting to the client, signifying that a connection between the client and server has been established.

After a connection has been established, the IMAP4 Server and its client communicate by a sequence of command responses exchanges.  Specifically, the client sends IMAP4 commands to the server uppon instigation of the user, that is, each user action on the client screen corresponds to a sequence of one or more IMAP4 commands that are sent to the server.  The server then executes the action corresponding to each command it receives and responds accordingly (see RFC-2060 for IMAP4 command response specifications).  Based on the server response to a command, the client is able to deduce the result of a user operation and informs the user via the client screen.

The read his/her messages, the user must first identify itself to the IMAP4 Server through his IMAP4 client account.  Thus, one of the first commands an IMAP4 client issues is the LOGIN command, which sends the user name and password to the IMAP4 Server for validation.  Once the LOGIN command is received, the server verifies the given user account information by checking with the Users Database.   In the process, both the personal and shared mailboxes that a user can rightfully access are also determined.  Consequently, when the client requests for a complete listing of the user's mailboses, the server returns the names of both personal and shared mailboxes to which the user has access.

Because the IMAP4 Server supports multi-accessed mailboxes, any changes made by a user on a particular mailbox or the messages contained therein are seen by other users who are simultaneously viewing themailbox.  Thus an IMAP4 Server thread periodically checks for time stamp changes in the underlying message databases in order to determine whether any message in the currently selected mailbox has been read, deleted, expunged, etc. by another user.  It also periodically checks for the existence of new messages in the selected mailbox by comparing the unique identifier value of the last message it has accessed with the unique identifier value of the most recent message in the mailbox.  When any of these mailbox or message changes occurs, a server thread notifies its client of the event at the soonest time possible.  The client, in turn, notifies the user by displaying appropriate markings on the client screen.

Additional background information on IMAP4 can be found in the IMA Whitepaper Internet Mail Access Protocol Version 4 (IMAP4) and Internet Electronic Mail.

Incoming Mailbox As Subdirectory of The MsgStore Directory
In the Message Store, mailboxes are implemented as subdirectories of the MsgStore directory containing message databases and actual message files.  Because message structure information, as well as mailbox status information, are stored in relational databases, retrieval of this information is relatively fast.   Furthermore, because each message is assigned its own file, as opposed to a scheme wherein all messages are stored in a single file, message text is obtained without having to determine and seek for its position within a file.  Deletion of a message is likewise more straightforward as there is no need to move message text in order to overwirte the message that is to be deleted.

Support For Nested Mailboxes
The IMAP4 Server supports nesting of mailboxes without the user having to explicitly specify that he/she intends to create subfolders under a particular mailbox.  In fact, the IMAP4 Server even allows a user's primary mailbox, the INBOX, to have subfolders.  Because of this, users havve greater flexibility in managing their messages.  They can easily strucutre their mailboxes in such as way that groups and subgroups of messages are created.  In addition, they do not have to know beforehand whether they will be having subfolders under a mailbox that the are intending to create.  Because all mailboxes can be nestetd, there is no need to specify at creation time whether a mailbox will contain subfolders.

Support For Shared Mailboxes
The IMAP4 Server allows users to have both personal and shared mailboxes, all of which can be accessed using a single account.  This does away with the need to use different account names in order to view either a personal or shared mailbox.  Thus, with shared mailboxes, e-mail for a group of people can easily be managed without having to creat a group login name and without having to distribute several copies of a single message to different people.

Shared mailboxes are created and assigned to users through an administrative utility.  This administrative utility adds a mailbox to the shared mailboxes database and updates the profile of users to which the shared mailbox is assigned in the Users Database.  By accessing the appropriate users and shared mailboxes database entries, the IMAP4 Server is then able to determine and locate the shared mailboxes a particular user has access to.  In order for the IMAP4 Server to distinguish between personal and shared mailbox references, shared mailbox names have to be prefixed by "shared\".  Consequently, this precludes a personal mailbox from being named "shared."

Unsolicited Mailbox Updates
Because the IMAP4 Server supports the IMAP IDLE command, it is able to give out unsolicited mailbox updates to the client.  Thus, the client need not poll the server for changes (i.e. new mail, deletions) to the selected mailbox.  Instead, the server transmits updates to the client in real-time while the IDLE command is in effect.  This permits the user to have a consistent and current view of his mailbox.

Auto-Logout Timer
The IMAP4 Server has an inactivity logout timer that causes the severance of a client connection once no command is received from the client within a period of 30 minutes.  The presence of this timer ensures that the resources are not wasted on idle clients or on clients that have enountered problems and are not able to communicate with the server anymore.  It also prevents users from having an incorrect view of their mailbox, the contents of which may have already been changed by another user.

 

Additional Documentation
Further information related to the Internet Exchange IMAP feature can be found in the following documents: