Simple Mail Transfer Protocol (SMTP) Kanika Thapar CISC 856 TCP/IP and Upper Layer Protocols 11/8/2007 (Some slides provided by Ezra Kissel, some figures taken from.

Download Report

Transcript Simple Mail Transfer Protocol (SMTP) Kanika Thapar CISC 856 TCP/IP and Upper Layer Protocols 11/8/2007 (Some slides provided by Ezra Kissel, some figures taken from.

Simple Mail Transfer Protocol
(SMTP)
Kanika Thapar
CISC 856 TCP/IP and Upper Layer Protocols
11/8/2007
(Some slides provided by Ezra Kissel, some figures taken from Forouzan’s book)
Overview
•
•
•
•
•
•
•
Introduction
Sendmail
How SMTP works?
SMTP data transfer
Examples
Limitations & extensions
Retrieving mail (Mailbox protocols)
2
Introduction
3
Introduction…
Transfers mails
from one host to
another
Collects mail
and delivers to
user agent
Transfers mails
from one host to
another
Composes, reads,
replies to
,forwards and
handles mailboxes
Collects mail
and delivers to
user agent
4
Message transfer…
SMTP is a push
protocol
5
Sendmail
Mail Transfer Agent [MTA] : is a computer program or software agent that
transfers electronic mail messages from one computer to another.
• Sendmail is a MTA
• Supports several mail transfers including SMTP
• Pro’s
• Can perform header rewriting, mail routing
• Extensive support available
• Con’s
• Not secure
• Code is bulky [compared to other MTA’s such as qmail]
6
Relays and Gateways
• SMTP server can
also assume the
role of a “relay”
• SMTP mail
gateways are used
to transport mail
prepared by a
protocol other than
SMTP
Non-SMTP
supported
SMTP supported
7
How SMTP works?
Command format:
Keyword: argument(s)
Response format:
3-digit status code [textual information]
Link Layer PCI IP-PCI
TCP-PCI
SMTP command/response
8
SMTP A-PDU’s
The Basics
Keyword
HELO
MAIL FROM:
The Extras
Arguments
Sender’s host
domain name
Email address of
sender
RCPT TO:
Email of intended
recipient
DATA
Body of the
message
QUIT
Keyword
Arguments
RSET
VRFY
Name to be verified
NOOP
TURN
EXPN
Mailing list to expand
HELP
Command name
9
How SMTP works : 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!
10
Traditional mail vs email
E-mail envelope
Traditional
mail
and body
envelope and body
11
Connection Establishment
Ephemeral port
SYN+ACK
SYN
SYN
Port 25
12




Ephemeral port
Port 25
13
Connection Termination
Ephemeral port
Port 25
FIN
ACK
RESET
14
Simulating MTA client using telnet
% telnet mail.adelphia.net 25
Trying 68.168.78.100...
Connected to mail.adelphia.net (68.168.78.100).
================== ConnectionEstablishment================
220 mta13.adelphia.net SMTP server ready Thur, 8 Nov 2007 ..
HELO mail.adelphia.net
250 mta13.adelphia.net
=====================Envelope==========================
MAIL FROM: [email protected]
250 Sender <[email protected]> Ok
RCPT TO: [email protected]
250 Recipient <[email protected]> Ok
15
Simulating MTA client using telnet
=================== Header and Body ===================
DATA
354 Ok Send data ending with <CRLF>.<CRLF>
From: Forouzan
TO: Thapar
This is a test message
to show SMTP in action.
.
250 Message received: [email protected]
============= Connection Termination====================
QUIT
221 mta13.adelphia.net SMTP server closing connection
Connection closed by foreign host.
16
Limitations in SMTP
• Only uses NVT 7 bit ASCII format
– How to represent other data types?
• Susceptible to misuse (Spamming,
faking sender address)
17
Solution: SMTP extensions
• MIME – Multipurpose Internet Mail Extensions
Transforms non-ASCII data to NVT (Network Virtual Terminal) ASCII data
18
MIME headers
19
MIME headers (cont’d)
• 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
20
Quoted-printable – send non-ASCII characters as 3 ASCII characters
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
11001100 10000001 00111001
110011 001000 000100 111001
(51)
(z)
01111010
(8)
(I)
01001001
(4)
(57)
(E)
01000101
(5)
00110101
21
Base64 Encoding table
22
Multipart, Encoded MIME Message
From: Kanika Thapar <[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--
23
Mail Access Protocols
POP3 & IMAP4
SMTP
SMTP
POP3
IMAP4
24
POP3
25
Post Office Protocol v3
• 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
26
Internet Mail Access Protocol v4
• User can check the email header before
downloading
• 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
27
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
• =##, ## is the hex representation of the byte
01001100 10011101 00111001
(=)
00111101
(9)
00111001
(D)
01000100
28
ASCII table
29