Electronic Mail Electronic Mail • Most heavily used application on any network • Uses client-server architecture – Electronic mail client accepts mail from user and delivers to server on destination computer – Many variations and styles of delivery • Simple Mail Transfer Protocol (SMTP) – TCP/IP – Delivery of simple text messages • Multi-purpose Internet Mail Extension (MIME) – Delivery of other types of data – Voice, images, video clips SMTP Concept User Agents and Mail Transfer Agents Relay MTAs Mail Gateways The Entire E-mail System SMTP • Simple Mail Transfer Protocol is standard application protocol for delivery of mail from source to destination • Built on top of TCP: provides reliable delivery of data • SMTP does not normally use intermediate mail servers for sending mail • SMTP uses persistent connections • Other functions: – E-mail address lookup – E-mail address verification • Example protocol exchange Sample SMTP interaction C: S: C: S: C: S: C: S: C: S: C: C: C: S: C: S: c:\Telnet hamburger.edu 25 220 hamburger.edu HELO ce.sharif.edu 250 Hello ce.sharif.edu, pleased to meet you MAIL FROM: <ali@ce.sharif.edu > 250 ali@ce.sharif.edu... Sender ok RCPT TO: <bob@hamburger.edu> 250 bob@hamburger.edu ... Recipient ok DATA 354 Enter mail, end with "." on a line by itself Do you like ketchup? How about pickles? . 250 Message accepted for delivery QUIT 221 hamburger.edu closing connection SMTP • RFC 821 • Not concerned with format of messages or data – Covered in RFC 822 (see later) • SMTP uses info written on envelope of mail – Message header • Does not look at contents – Message body • Except: – Standardize message character set to 7 bit ASCII Basic Operation • Mail created by user agent program (mail client) – Message consists of: • Header containing recipient’s address and other info • Body containing user data • Messages queued and sent as input to SMTP sender program – Typically a server process (daemon on UNIX) Mail Message Contents • Each queued message has: – Message text • RFC 822 header with message envelope and list of recipients • Message body, composed by user – A list of mail destinations • • • • Derived by user agent from header May be listed in header May require expansion of mailing lists May need replacement of mnemonic names with mailbox names • If BCCs indicated, user agent needs to prepare correct message format SMTP Sender • Takes message from queue • Transmits to proper destination host – Via SMTP transaction – Over one or more TCP connections to port 25 • Host may have multiple senders active • When delivery complete, sender deletes destination from list for that message • When all destinations processed, message is deleted Optimization • If message destined for multiple users on a given host, it is sent only once – Delivery to users handled at destination host • If multiple messages ready for given host, a single TCP connection can be used – Saves overhead of setting up and dropping connection Possible Errors • • • • Host unreachable Host out of operation TCP connection fail during transfer Sender can re-queue mail – Give up after a period • Faulty destination address – – – – User error Target user changed address Redirect if possible Inform user if not SMTP Protocol - Reliability • Used to transfer messages from sender to receiver over TCP connection • Attempts to provide reliable service • No guarantee to recover lost messages • No end to end acknowledgement to originator • Error indication delivery not guaranteed • Generally considered reliable SMTP Receiver • Accepts arriving message • Places in user mailbox or copies to outgoing queue for forwarding • Receiver must: – Verify local mail destinations – Deal with errors • Transmission • Lack of disk space • Sender responsible for message until receiver confirm complete transfer – Indicates mail has arrived at host, not user SMTP Forwarding • Mostly direct transfer from sender host to receiver host • May go through intermediate machine via forwarding capability – Sender can specify route – Target user may have moved Conversation • SMTP limited to conversation between sender and receiver • Main function is to transfer messages • Rest of mail handling beyond scope of SMTP – May differ between systems Figure 3.9 SMTP Mail Flow SMTP System Overview • Commands and responses between sender and receiver • Initiative with sender – Establishes TCP connection • • • • Sender sends commands to receiver e.g. HELO<SP><domain><CRLF> Each command generates exactly one reply e.g. 250 requested mail action ok; completed SMTP Replies • Leading digit indicates category – – – – Positive completion reply (2xx) Positive intermediate reply (3xx) Transient negative completion reply (4xx) Permanent negative completion reply (5xx) Operation Phases • Connection setup • Exchange of command-response pairs • Connection termination Connection Setup • Sender opens TCP connection with receiver • Once connected, receiver identifies itself – 220 <domain> service ready • Sender identifies itself – HELO • Receiver accepts sender’s identification – 250 OK • If mail service not available, step 2 above becomes: – 421 service not available Mail Transfer • Sender may send one or more messages to receiver • MAIL command identifies originator – Gives reverse path to used for error reporting – Receiver returns 250 OK or appropriate fail/error message • One or more RCPT commands identifies recipients for the message – Separate reply for each recipient • DATA command transfers message text – End of message indicated by line containing just period (.) Closing Connection • • • • Two steps Sender sends QUIT and waits for reply Then initiate TCP close operation Receiver initiates TCP close after sending reply to QUIT Electronic Mailboxes and Addresses • E-mail users have an electronic mailbox into which mail is deposited • Usually associated with computer account; one user may have different electronic mailboxes • User accesses mail with a mail reader program • Electronic mailbox is identified by an e-mail address mailbox@computer Internet Mail Addressing • User portion or mailbox portion is site specific – Joe – Seyyed_hamid_1221 – 1234.5678 • Host portion or computer portion is domain name • Source mail client – Resolves destination name using DNS – Contacts mail delivery server at destination – Copies mail to server • Destination mail server – Interprets user name according to local mailbox addresses – Places mail in appropriate mailbox E-mail message format • Simple two-part format – Header includes delivery information – Body carries text of message • Header and body separated by blank line E-mail Headers • Lines of text in format keyword: information • keyword identifies information; information can appear in any order • Essential information: – To: list of recipients – From: sender – Cc: list of copy recipients • Useful information – Reply-to: different address than From: – Received-by: for debugging • Frivolous information: – Favorite drink: lemonade – Phase-of-the-moon: gibbous Data in E-mail • Original Internet mail carried only 7-bit ASCII data • Couldn’t contain arbitrary binary values; e.g., executable program • Techniques for encoding binary data allowed transport of binary data • Uuencode: three 8-bit binary values as four ASCII characters (6 bits each) – Also carries file name and protection information – Incurs 33% overhead – Requires manual intervention Multipurpose Internet Mail Extension (MIME) • Extension to RFC822 • SMTP can not transmit executables – Uuencode and other schemes are available • Not standardized • Can not transmit text including international characters (e.g. â, å, ä, è, é, ê, ë) – Need 8 bit ASCII • Servers may reject mail over certain size • Translation between ASCII and EBCDIC not standard • SMTP gateways to X.400 can not handle none text data in X.400 messages • Some SMTP implementations do not adhere to standard – CRLF, truncate or wrap long lines, removal of white space, etc. MIME • Multipart Internet Mail Extensions - Extends and automates encoding mechanisms • Allows inclusion of separate components – programs, pictures, audio clips – in a single mail message • Sending program identifies the components so receiving program can automatically extract and inform mail recipient – Header includes MIME-Version: 1.0 Content-Type: Multipart/Mixed; Boundary=Mime_separator – Separator line gives information about specific encoding Content-Type: text/plain MIME (cont.) • MIME is extensible – sender and receiver agree on encoding scheme • MIME is compatible with existing mail systems – Everything encoded as ASCII – Headers and separators ignored by non-MIME mail systems • MIME encapsulates binary data in ASCII mail envelope MIME Overview of MIME • Five new message header fields – – – – – MIME version Content type Content transfer encoding Content Id Content Description • Number of content formats defines • Transfer encoding defined Content Types • Text body • Multipart – Mixed, Parallel, Alternative, Digest • Message – RFC 822, Partial, External-body • Image – jpeg, gif • Video – mpeg • Audio – Basic • Application – Postscript – octet stream MIME Transfer Encodings • Reliable delivery across wide largest range of environments • Content transfer encoding field – Six values – Three (7bit, 8bit, binary) no encoding done • Provide info about nature of data • Quoted-printable – Data largely printable ASCII characters – Non-printing characters represented by hex code • Base64 – Maps arbitrary binary input onto printable output • X-token – Named nonstandard encoding Figure 3.10 Printable Encoding of Binary Data into Radix-64 Format Programs as mail recipients • Can arrange for e-mailbox to be associated with a program rather than a user’s mail reader • Incoming mail automatically processed as input to program • Example – mailing list subscription administration • Can be used to implement client-server processing – Client request in incoming mail message – Server response in returned mail reply Mailing Lists and Forwarders • E-mail addresses can be attached to programs as well as electronic mailboxes • Mail exploder or mail forwarder resends copies of message to e-mail addresses in mailing list – UNIX mail program sendmail provides mail aliases – Mailing list processor, e.g. listserv, can also interpret subscription management commands Mail Gateways • Mailing list processing may take significant resources in large organizations • May be segregated to a dedicated server computer: mail gateway – Provides single mail destination point for all incoming mail – Can use MX records in DNS to cause all mail to be delivered to gateway Mail gateways and forwarding • Users within an organization may want to read mail on local or departmental computer • Can arrange to have mail forwarded from mail gateway • Message now makes multiple hops for delivery • Hops may be recorded in header • Forwarded mail may use proprietary (non-SMTP) mail system Mail Gateways and E-mail Addresses • Organization may want to use uniform naming for external mail • Internally, may be delivered to many different systems with different naming conventions • Mail gateways can translate e-mail addresses Mailbox Access • Where should mailbox be located? • Users want to access mail from most commonly used computer • Cannot always use desktop computer as mail server – Not always running – Requires multitasking OS – Requires local disk storage • Can TELNET to remote computer with mail server Mail Access Protocols • Typically users do NOT run a server on their local PC • User agent accesses a mailbox from a shared mail server • Mail access protocol transfers mail from server to local PC • 2 popular protocols: – POP3 (Post Office Protocol v3) – IMAP (Internet Mail Access Protocol) • Can’t use SMTP because getting messages is a pull operation & SMTP is a push protocol. Mail Access Protocol • Instead of TELNEt, use protocol that accesses mail on remote computer directly • TCP/IP suite includes Post Office Protocol (POP) for remote mailbox access – Computer with mailboxes runs POP server – User runs POP client on local computer – POP client can access and retrieve messages from mailbox – Requires authentication (password) – Local computer uses SMTP for outgoing mail Email Protocols POP3 and SMTP POP3 • Three phases – Authorization – Transaction – Update • During a POP3 session, the server maintains state information • POP3 downloads mail messages to the local machine – not good for “nomadic user” Dialup Access and POP • POP useful for dialup connection – User’s computer not always connected – Can download all mail at once and read off-line – Can compose mail off-line and mail in one connection POP3 protocol authorization phase • client commands: – user: declare username – pass: password • server responses – +OK – -ERR transaction phase, client: • list: list message numbers • retr: retrieve message by number • dele: delete • quit S: C: S: C: S: +OK POP3 server ready user bob +OK pass hungry +OK user successfully logged C: S: S: S: C: S: S: C: C: S: S: C: C: S: list 1 498 2 912 . retr 1 <message 1 contents> . dele 1 retr 2 <message 1 contents> . dele 2 quit +OK POP3 server signing off on POP3 • Stands for Post Office Protocol – Version 3 • RFC in 1993 • POP3 “is intended to permit a workstation to dynamically access a maildrop on a server host in a useful fashion. Usually, this means that the POP3 protocol is used to allow a workstation to retrieve mail that the server is holding for it.“ POP3 • Doesn’t provide extensive mail operations on the server • Normally mail is downloaded, then deleted • Deletion doesn’t really occur until QUIT • Uses port 110 Minimal POP3 Commands • • • • • • • • • USER name – user’s name PASS string – user’s password QUIT – quits, and updates the mailbox STAT – status LIST [msg] – lists the mail messages (#’s only) RETR msg – retrieves a mail message DELE msg – deletes a message NOOP – No operation RSET – resets the mail to its original state Example POP3 Transaction Server Establish the Socket Primary Thread Server Socket (110) Primary Thread Client Server is OK +OK POP3 server ready Primary Thread Server Socket (110) Primary Thread Client Establish the Socket USER bob Primary Thread Server Socket (110) Primary Thread Client This user is OK +OK Primary Thread Server Socket (110) Primary Thread Client Send the Password PASS ITSD4304 Primary Thread Server Socket (110) Primary Thread Client The Password is OK +OK Primary Thread Server Socket (110) Primary Thread Client Ask how the Server is Feeling… STAT Primary Thread Server Socket (110) Primary Thread Client I’m Fine, Thanks! +OK 2 320 Primary Thread Server Socket (110) Primary Thread Client Got Any Mail? LIST Primary Thread Server Socket (110) Primary Thread Client Yup… +OK 2 messages (320 octets) Primary Thread Server Socket (110) Primary Thread Client Message One 1 120 Primary Thread Server Socket (110) Primary Thread Client Message Two 2 200 Primary Thread Server Socket (110) Primary Thread Client End . Primary Thread Server Socket (110) Primary Thread Client Get Message One RETR 1 Primary Thread Server Socket (110) Primary Thread Client Message One Coming! +OK 120 octets Primary Thread Server Socket (110) Primary Thread Client Message One Coming! <the POP3 server sends message 1> Primary Thread Server Socket (110) Primary Thread Client End of Message 1 . Primary Thread Server Socket (110) Primary Thread Client Get Message One DELE 1 Primary Thread Server Socket (110) Primary Thread Client Message 1 Gone! +OK message 1 deleted Primary Thread Socket (110) Primary Thread Client Server Note: it’s not really gone… Get Message One QUIT Primary Thread Server Socket (110) Primary Thread Client QUIT – Commits/Updates +OK bob POP3 server signing off Primary Thread Socket (110) Primary Thread Client Server Note: now it’s gone Socket Disposed Primary Thread Server Primary Thread Client IMAP • Internet Mail Access Protocol • Allows users to manipulate remote mailboxes • Must maintain info about user (e.g., folder hierarchy) even after the user quits • IMAP server is always in 1 of 4 states: – – – – Nonauthenticated Authenticated Selected Logout POP3 (more) and IMAP More about POP3 • Previous example uses “download and delete” mode. • Bob cannot re-read e-mail if he changes client • “Download-and-keep”: copies of messages on different clients • POP3 is stateless across sessions IMAP • Keep all messages in one place: the server • Allows user to organize messages in folders • IMAP keeps user state across sessions: – names of folders and mappings between message IDs and folder name Security • SMTP, POP3 and IMAP are plain text protocols • Secured version available to protect the user – SMTPS – POP3s – Need to be configured both on server and client Stunnel • Name of an application/service – Even if the mail server application does not implement secure version • What does it do? – gathers the encrypted message from client – Decrypts the data – Sends plain text data using a local connection to insecure port • Server application considers it a normal client STunneling Send decrypted data to port 25 of the server Stunnel Encrypted data (Command/mail body) (on server) Listening to port 995 Server Client Web interface • Nowadays there are many web interface user agents • They allow accessing messages from any client with only a web browser • However the interface is not as sophisticated as special mail agents • But it is very useful if you need to check your emails from different computers Summary for Email • Electronic mail allows quick, asynchronous communication across entire Internet • Can attach e-mail addresses to programs for processing – Mailing lists – Other client-server applications • Simple Mail Transfer Protocol (SMTP) is Internet standard for mail delivery • Mail gateways – Provide uniform user addressing outside organizations – Translate from Internet mail (e.g. SMTP) to proprietary systems • Post Office Protocol (POP) and Internet Mail Access Protocol (IMAP) allow remote access to electronic mailboxes.