DOC PREVIEW
CMU CS 15441 - Project

This preview shows page 1-2 out of 5 pages.

Save
View full document
View full document
Premium Document
Do you want full access? Go Premium and unlock all 5 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 5 pages.
Access to all documents
Download any document
Ad free experience
Premium Document
Do you want full access? Go Premium and unlock all 5 pages.
Access to all documents
Download any document
Ad free experience

Unformatted text preview:

BboardIntroductionCore networking : 30 pointssmtpverify functionality: 15 pointsSMTP protocol as necessary for smtpsend to send a message: 15 pointssmtpsend functionality: 15 pointssmtpsend DNS-related functionality: 15 pointsWe’ll discuss this in recitation during the week it is due. Until then, keep in mind that we’ll want your source files, makefile, and README file. Please also ensure that the executables and arguments match those discussed in this document.15-441 Project 1 : SMTP clientDates of InterestAssigned : Tuesday, Jan 23rd, 2007Due : Friday, Feb 8th, 2006, 11:59pmInteresting RFCsRFC 821: Simple Mail Transfer Protocol (SMTP)RFC 822: Standard For the Format of ARPA Internet Text MessagesRFC 976: Mail Routing and the Domain SystemYou can find any RFC here: http://www.faqs.org/rfcs/BboardAndrew: academic.cs.15-441Introduction The purpose of this project is to give you experience in developing a network applications, specifically a Simple Mail Transfer Protocol (SMTP) client. It also serves as an introduction to Requests for Comment (RFCs), the mechanism for proposing and publishing new Internet standards. SMTP is the most widely used mail transmission protocol on the Internet. As its name suggests, it is reasonable straight-forward. None-the-less, there is subtlety involved in transferring mail. So, although it should be reasonably quick to implement a client that can send mail in the simplest cases, additional time will be spent on some of the subtlety. Logistics You are to work in groups of two (2) on this project. You are free to discuss the project and references with your classmates, but your solution must be your own, or that of you and a single partner. You must code your server in C (not C++). While other languages may provide features to make network programming easier, most kernel-level networking code is written in C and future assignments will require implementing such code in a simulated environment. You may develop & test your code on any operating system you wish, however, we will grade your code on Andrew Linux machines, so please make sure your code compiles and runs as expected on them.Your Assignment We'd like you to write, in C, two different SMTP clients: smtpverify and smtpsend.smtpverifysmptverify is the more straight-forward of the two. It should accept a single argument and an option server flag, for testing. This argument should use SMTP’s EXPN (RFC 821) to verify the correctness of the mailbox or mailing list provided. In the case of a mailbox, it should print, one per line, each fully-specified mailbox in the list. It should treat the case of a mailbox as a mailinglist containing only one mailbox: In other words, it should print the fully-qualified mailbox on itsown line. If the mailbox or mailing list is unknown, “Unknown user” should be printed. smptverify should return 0 if, and only if, it successfully queries the server and gets a response, regardless of the response, and non-0 otherwise. smtpverify [-server=blah.blah.bla] emailaddress@hostspecsmtpsendsmtpsend which, as its name suggests, is used to send mail via an SMTP server, is a bit more sophisticated than smtpverify. It is invoked as below:smtpsend [-server=blah.blah.bla] some.domain local-part-1 [local-part-2...] < messagefile  some.domain is the domain part of an e-mail address, e.g., andrew.cmu.edu,  one or more local-part parameters indicate users inside that domain (e.g., "gkesden”  messagefile is an e-mail message formatted according to RFC 822.  The –server flag can be used to force the client to talk to a specific SMTP server for testing. Since courseweb relays for andrew, this might be helpful to send yourself mail without having to talk to an andrew server. If the program can successfully submit the mail for all recipients, it should exit with status zero; if not, it should exit with a non-zero status and print on standard error one line indicatingthe first recipient for which there was a problem and one line indicating the nature of the problem. If a "-v" (verbose) flag is provided before the domain parameter, the program shouldprint each SMTP command (one line) and the corresponding response from the SMTP server (which may not be exactly one line, see RFC 821).For full credit you should handle the case where the mail domain does not designate a machine running an SMTP server, as explained in RFC 974. For example, while there is a machine called“andrew.cmu.edu”, it is not running an SMTP server and e-mail for the “andrew.cmu.edu”domain must be submitted to other machines. You do not need to do WKS queries as described in the "Interpreting the List of MX RRs" section of RFC 974; you may assume that every designated mail exchanger does support the SMTP protocol. We expect you to use the socket API as discussed in class. A complete solution will probably need to use the DNS resolver library as documented in the resolver(3) manual page.The RFC leaves several details up to the implementation. You should justify the significant choices you make in your README file.TestingThe SMTP server on courseweb.sp.cs.cmu.edu has been configured to relay for the andrew.cmu.edu domain, but not any other. It has some user mailboxes that can receive mail, andsome mailing lists that you can expand. We’ll provide more details in a couple of days or so, once you’ve had some time to digest the RFCs. Please do not test using any other SMTP server which is not your own or any mailboxes which are not yours. Time LineWe strongly recommend you start early. To help "guide" you through this lab, we have provided you some key milestones! M T W R F S S23 24 25 26 27 2829 30 31 1 2 3 45 6 7 8 9 10- Jan 23rd - Assignment is released. Start reading, and planning out your server - Jan 24th - Discussion of the project in recitation, please complete what is listed under 1/23 by then. - Jan 29th – smtpverify should be functioning- Feb 2nd – smtpsend should be functioning, except for the DNS stuff- Feb 6th - Your server should be complete. This allows you two days to relax, test, document, clean-up, and make it a project “That you’re proud of”- Feb 8th 11:59pm - Your code should be handed in. -Evaluation This section, at present, is purely tentative. We’ll let you know promptly if anything firms up differently. - Core networking : 30 pointsThis grade is intended to reflect your ability to write the "core" networking code that deals with creating sockets,


View Full Document

CMU CS 15441 - Project

Documents in this Course
lecture

lecture

34 pages

lecture

lecture

38 pages

lecture

lecture

18 pages

lecture

lecture

28 pages

lecture

lecture

11 pages

Lecture

Lecture

64 pages

lecture

lecture

10 pages

lecture

lecture

19 pages

Lecture 6

Lecture 6

43 pages

Exam

Exam

14 pages

lecture

lecture

38 pages

Debugging

Debugging

23 pages

lecture

lecture

60 pages

review

review

27 pages

lecture

lecture

12 pages

The Web

The Web

28 pages

Lecture

Lecture

40 pages

lecture

lecture

42 pages

lecture

lecture

9 pages

lecture

lecture

10 pages

lecture

lecture

49 pages

lecture

lecture

26 pages

lecture

lecture

40 pages

lecture

lecture

9 pages

lecture

lecture

41 pages

lecture

lecture

32 pages

lecture

lecture

36 pages

lecture

lecture

34 pages

lecture

lecture

45 pages

lecture

lecture

26 pages

lecture

lecture

6 pages

lecture

lecture

51 pages

Project

Project

16 pages

lecture

lecture

44 pages

lecture

lecture

13 pages

lecture

lecture

42 pages

lecture

lecture

36 pages

Project

Project

13 pages

Project

Project

33 pages

lecture

lecture

43 pages

lecture

lecture

49 pages

Load more
Download Project
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view Project and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view Project 2 2 and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?