Project 5b

CS-375: Spring 2003

Home
Syllabus
Schedule
Projects & Homeworks
Contact Information
CIDR Exam Points

IMAP Email Client

Your assignment is to implement an IMAP Email client.  The IMAP protocol is used to access electronic mail messages stored on a remote mail server.  Communication between an IMAP client and an IMAP server is accomplished over TCP/IP.   The client side interface to the user and specific functionality is left to you, but you must support the initial authentication exchange, a display of the set of messages in the user's Inbox, viewing of any individual message in the Inbox, and deletion of messages.

You are again allowed to work in teams of size two on this assignment.  Both members must pull their weight, and at the time of project submission, I will request both a self- and partner- evaluation of contribution.  Both members of the team must fully understand the required parts of the IMAP protocol.

What is and is not required:

bulletYour imap client must connect to an imap server specified by host name (not dotted quad) and optional port number as command line parameters (from argv[1] and argv[2]). If a port is not specified, your client should use the well-known port of 143.
bulletYour client must prompt the user for his or her username and password, and authenticate with the server.
bulletYour client must use some GUI based approach (perhaps ncurses or Qt or some other API) to display one-line headers for each message in a user's INBOX.  Be sure and consider the case when there are more messages than can be displayed in the window allocated for this purpose.
bulletYour client must all the user to view the contents of any message in their INBOX.
bulletYour client must allow the user to delete one or more messages on the server.
bulletYour client must allow the user to quit, cleanly disconnecting from the server and leaving the program.

Client Output

To keep track of all IMAP interactions, your client should print one line (to an output file) for each IMAP command issued. The line should include the IMAP command, the completion result, and any other brief information you wish to include.

Deliverables

You should submit all source code files necessary to build your server. If you use a Makefile please include it, if not, you need to include instructions on how to build your server. Your submission must also include a file named README that includes the following:

bulletThe names of the members of the team.
bulletA list of files and a 1-line description of the contents of each file.
bulletReferences to any borrowed code (the source code must also include this information).
bulletA description of any known problems. If you think you know how to solve the problem(s) and simply didn't have time to do so - let me know how you would plan to do it!
bulletAnything else you think might be useful, such as what you learned, what you had trouble with, if the project was too hard or too easy, etc.

Grading

Style/readability 25%

Notes, Hints and Links

bulletYou need to have a basic understanding of IMAP! The best place to look for information is  RFC 2060.

For a deeper understanding of Message Access paradigms and protocols, you can get some useful information at the www.imap.org web site: Message Access Paradigms.

 

bulletI am not worried about whether your client can support every nitty-gritty detail of IMAP ... it just needs to support the above operations.  However, it should be designed to be usable, robust, and the code should be something that could be extended to support all the nitty-gritty details of IMAP (I expect code that has no memory leaks, handles errors well, etc).

Home | Syllabus | Schedule | Projects & Homeworks | Contact Information | CIDR Exam Points

 All rights reserved, Thomas C. Bressoud and Denison University.
For problems or questions regarding this web contact bressoud@denison.edu.
Last updated: 04/21/03.