|





| |
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:
 | Your 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. |
 | Your client must prompt the user for his or her username and password, and
authenticate with the server. |
 | Your 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. |
 | Your client must all the user to view the contents of any message in their
INBOX. |
 | Your client must allow the user to delete one or more messages on the
server. |
 | Your 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:
 | The names of the members of the team. |
 | A list of files and a 1-line description of the contents of each file.
|
 | References to any borrowed code (the source code must also include this
information). |
 | A 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! |
 | Anything 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
Notes, Hints and Links
 | You 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.
|
 | I 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). |
|