Simple Mail Transfer
Protocol
Ezra Kissel
CISC 856 TCP/IP and Upper Layer
Protocols
11/1/2005
(some/most slides provided by M. Lacroce and J. Watson)
Overview
Introduction
Message Breakdown
Sending Messages
Extensions
Retrieving mail (Mailbox Protocols)
Examples
Email Statistics
Email Statistics (2004):
31 billion emails sent
daily, expected to double
by 2006
Email generates about
one billion Gigabytes of
new information per
year
Spam accounts for about
40% of all email traffic
http://www.spamfilterreview.com
SMTP
Protocol originated in 1982 (RFC821, Jon Postel)
Standard message format (RFC822,2822, D.
Crocker)
Goal: To transfer mail reliably and efficiently
SMTP
SMTP clients and
servers have two main
components
User Agents Prepares
the message, encloses
it in an envelope. (ex.
Thunderbird, Eudora)
Mail Transfer Agent
Transfers the mail
across the internet (ex.
Sendmail, Exim)
Analogous to the postal
system in many ways
SMTP
SMTP also allows
the use of Relays
allowing other
MTAs to relay the
mail
Mail Gateways are
used to relay mail
prepared by a
protocol other than
SMTP and convert
it to SMTP
Format of an email
Mail is a text file
Envelope
sender address
receiver address
other information
Message
Mail Header defines
the sender, the
receiver, the subject
of the message, and
other information
Mail Body Contains
the actual
information in the
message
Post Office
Mailbox
Post office
and mail route
Receivers
Mailbox
Return-Path: <
[email protected]>
X-Original-To:
[email protected]Delivered-To:
[email protected]Received: by mail.eecis.udel.edu (Postfix, from userid 62)
id 8EC8D18D; Tue, 25 Oct 2005 20:27:21 -0400 (EDT)
Received: from mail.acad.ece.udel.edu (devil-rays.acad.ece.udel.edu
[128.4.60.10])
by mail.eecis.udel.edu (Postfix) with ESMTP id 59888C9
for <
[email protected]>; Tue, 25 Oct 2005 20:27:20 -0400 (EDT)
Received: by mail.acad.ece.udel.edu (Postfix, from userid 62)
id 344482045; Tue, 25 Oct 2005 20:27:20 -0400 (EDT)
Received: from nimbus.acad.ece.udel.edu (nimbus.acad.ece.udel.edu [128.4.63.34])
by mail.acad.ece.udel.edu (Postfix) with ESMTP id 3932E1ECA
for <
[email protected]>; Tue, 25 Oct 2005 20:27:19 -0400 (EDT)
Date: Tue, 25 Oct 2005 20:27:19 -0400 (EDT)
From: Ezra Kissel <
[email protected]>
X-X-Sender:
[email protected]To:
[email protected]Subject: email test
Message-ID: <
[email protected]>
X-Sanitizer: This message has been sanitized!
X-Sanitizer-URL: http://mailtools.anomy.net/
X-Sanitizer-Rev: UDEL-ECECIS: Sanitizer.pm,v 1.64 2002/10/22 MIME-Version: 1.0
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on louie.udel.edu
X-Spam-Level:
X-Spam-Status: No, score=-3.8 required=4.1 tests=ALL_TRUSTED,BAYES_00
autolearn=ham version=3.0.4
X-Sanitizer: This message has been sanitized!
X-Sanitizer-URL: http://mailtools.anomy.net/
X-Sanitizer-Rev: UDEL-ECECIS: Sanitizer.pm,v 1.64 2002/10/22 MIME-Version: 1.0
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset="US-ASCII"; format=flowed
Status: RO
X-Status:
X-Keywords:
X-UID: 50
This is a test message.
How SMTP works (A-PDUs)
The Basics
Keyword
Arguments
HELO
Senders Host Domain
Name
MAIL
FROM:
Email Address of sender
RCPT TO:
Email of Intended
recipient
DATA
Body of the message
QUIT
How SMTP works (A-PDUs)
The Extras
Keyword
Arguments
RSET
VRFY
Name to be verified
NOOP
TURN
EXPN
Mailing list to expand
HELP
Command Name
Status Codes
The Server responds with a 3 digit
code that may be followed by text info
2## - Success
3## - Command can be accepted with
more information
4## - Command was rejected, but error
condition is temporary
5## - Command rejected, Bad User!
Connection Establishment
TCP Connection
Establishment
Message
Progress
Connection
Termination
TCP Connection Termination
Limitations in SMTP
Only uses NVT 7 bit ASCII format
How to represent other data types?
No authentication mechanisms
Messages are sent un-encrypted
Susceptible to misuse (Spamming,
faking sender address)
Solution: SMTP extensions
MIME Multipurpose Internet Mail
Extensions
Transforms non-ASCII data to NVT (Network Virtual
Terminal) ASCII data
Text
Application
Image
Audio
Video
RFC 1425, 1426, 1521
MIME Headers
Located between the Email Header and
Body
MIME-Version: 1.1
Content-Type: type/subtype
Content-Transfer-Encoding: encoding type
Content-Id: message id
Content-Description: textual explanation of
non-textual contents
MIME Headers (contd)
Content-Type Type of data used in the Body
Text: plain, unformatted text; HTML
Multipart: Body contains different data types
Message: Body contains a whole, part, or pointer to a message
Image: Message contains a static image (JPEG, GIF)
Video: Message contains an animated image (MPEG)
Audio: Message contains a basic sound sample (8kHz)
Application: Message is of data type not previously defined
Content-Transfer-Encoding How to encode the
message
7 bit no encoding needed
8 bit Non-ASCII, short lines
Binary Non-ASCII, unlimited length lines
Base64 6 bit blocks encoded into 8-bit ASCII
Quoted-printable send non-ASCII characters as 3 ASCII characters,
=##, ## is the hex representation of the byte
Base64 Encoding
Divides binary data into 24 bit blocks
Each block is then divided into 6 bit chunks
Each 6-bit section is interpreted as one
character, 25% overhead
11001100 10000001 00111001
110011 001000 000100 111001
(51)
(z)
01111010
(8)
(I)
01001001
(4)
(57)
(E)
01000101
(5)
00110101
Quoted-Printable Encoding
Used when the data has a small non-ASCII
portion
Non-ASCII characters are sent as 3 characters
First is =, second and third are the hex
representation of the byte
01001100 10011101 00111001
(=)
00111101
(9)
00111001
(D)
01000100
Multipart, Encoded MIME Message
From: Ezra Kissel <
[email protected]>
To:
[email protected]Subject: attachment test
MIME-Version: 1.0
Content-Type: MULTIPART/MIXED; boundary="MIMEStream=_0+92061_793033260215529_597673089"
--MIMEStream=_0+92061_793033260215529_597673089
Content-Type: TEXT/PLAIN; charset="US-ASCII"; format=flowed
There is an image attached...
--MIMEStream=_0+92061_793033260215529_597673089
Content-Type: IMAGE/jpeg; name="test.jpg"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="test.jpg"
/9j/4AAQSkZJRgABAgEASABIAAD/4QNxRXhpZgAATU0AKgAAAAgABwESAAMA
AAABAAEAAAEaAAUAAAABAAAAYgEbAAUAAAABAAAAagEoAAMAAAABAAIAAAEx
osv/0I5nPvr7sVdirsVf/9GO5z76+6hxQ1il2Kv/0o5nPvr7eKtYq7FX/9k=
--MIMEStream=_0+92061_793033260215529_597673089--
SMTP AUTH
Allows the server to provide
features only to known users and
limit others.
Various authentication methods
may be used (PLAIN, LOGIN,
CRAM-MD5, etc.)
Encryption is highly recommended
if not enforced by MTA.
Ex. AUTH PLAIN
Simple
Usage: AUTH PLAIN
<id>\0<user>\0<password>
Authentication string is Base64
encoded
MTA
Client
TCP Connection
Establishment
MTA
Server
220 Service Ready
EHLO stimpy.cis.udel.edu
250 Hello stimpy.cis.udel.edu
Negotiate Encryption
(STARTTLS)
AUTH PLAIN AGV6cmEAYg==
235 Authentication Succeeded
MAIL FROM:
[email protected]250 OK
RCPT TO:
[email protected]250 OK
RFC 1869, 2554, 2595
Email can be faked
HELO stimpy.eecis.udel.edu
MAIL FROM:
[email protected]RCPT TO:
[email protected]Solutions
DATA
From: Department Chair
Email signatures (PGP)
To: Dr. Paul Amer
Sender Policy Framework (SPF)
Subject: CISC856
Dr. Amer,
By department decree all students in your CISC856
TCP/IP class are hereby to be given automatic As.
Thank you,
Department Chair
.
QUIT
MTAs and Mail Access
Protocols
The MTA delivers email to the users
mailbox
Can be complex with numerous delivery
methods, routers, and ACLs
Exim, Postfix, Sendmail
The Mail Access Protocols are used by the
users to retrieve the email from the mailbox
POP3
IMAP4
POP vs. IMAP
POP3:
All Messages
Internet
Whole
m
IMAP:
Dr.Amer
Friends
Internet
rs
heade
essage
Post Office Protocol v3
Simple
Allows the user to obtain a list of
their Emails
Users can retrieve their emails
Users can either delete or keep the
email on their system
Minimizes server resources
Internet Mail Access Protocol
v4
Has more features than POP3
User can check the email header before
downloading
Emails can be accessed from any location
Can search the email for a specific string
of characters before downloading
User can download parts of an email
User can create, delete, or rename
mailboxes on a server