`

SMTP服务协议(转)

阅读更多
SMTP服务概述
鉴于本课程的默认读者群是那些对Internet的使用已经比较熟悉的老用户,所以我们在此并不打算花很多时间介绍e_mail的使用常识,如果读者对于收发e_mail的操作碰巧还存在不明确的地方,请参阅其他关于Internet基本操作的课程。本节我们着重讨论e_mail通信的原理及其在较低网络层次上的实现机制,我们将试图在读者头脑中建立有关e_mail在Internet中传送原理的最基本认识。
我们知道e_mail用户的唯一性标识是邮件地址,形如uesrname@domain.com,即名为uesrname的用户使用域名为domain.com的邮件服务器进行邮件的发送和接收。用户通常使用客户端邮件软件(例如foxmail、Outlook Express等)联系服务器进行邮件收发。客户将邮件提交给邮件服务器之后,还需要由服务器进行一系列复杂的传递操作,这才能将邮件传送到目的地址所在的邮件服务器主机。这一传的过程的实现就依赖于SMTP服务,SMTP定义了一套有效的邮件传递规则,它以协议的方式规定了网络中全部邮件服务器共同遵守的准则。
    这里我们要指出,我们所熟悉的电子邮件服务除了依赖于SMTP协议之外,还需要POP协议的支持,而POP协议是IIS所不能支持的,所以使用IIS服务器并不能实现完整的邮件服务,这需要大家明确。笼统的说,SMTP负责邮件的传递,例如从客户机到邮件服务器,以及服务器之间的传递工作。而POP协议能够让客户检索到由SMTP发送来的邮件,并将新的邮件下载的用户本地。
右图显示了SMTP和POP协议在电子邮件传递过程中的作用。SMTP以文件夹的方式存储邮件,用户只要将需要发送的邮件投入SMTP服务器上指的文件夹中即可实现邮件的发送,但是,用户不得不自行检索相应的文件夹得到自己的新邮件(实践中并不用这种方法)。
    现在我们来看POP,POP的含义是邮局协议(Post office Protocol),一般的,人们习惯于使用POP协议的版本号称呼POP服务器,目前在Internet上的大多数POP服务器为POP3服务器。如右图,SMTP服务器将邮件发送给POP3服务器。用户使用客户端邮件软件联系POP3服器,使用账号和密码进行身份验证之后,用户将待发邮件从本地发送到服务器,POP3服务器将用户邮件发送到用户本地。这一过程中,POP3服务器本身也是一台SMTP服务器,但它能够

为每一用户指定一个单独的文件夹,这是纯粹的SMTP服务器所不能做到的。
上述内容并非大多数电子邮件服务提供商所实际使用的方式,作为补充,我们再次简要介绍一下公用邮件服务提供商通常(例如freemail.263.net、hotmail.com)使用的工作方式。它们通常同时使用两个邮件服务器地址,如freemail.263.net:它的POP3服务器为263.net ,SMTP服务器为smtp.263.net。用户通过客户端邮件软件(需要配置SMTP及POP3服务器地址)连接到263免费邮件服务器之后,先要通过账号身份验证,然后进行邮件收发。这里涉及两个过程:SMTP和POP3。用户使用SMTP,通过TCP端口25发送邮件;而POP3检索用户的新邮件并使用TCP端口110将新邮件发送到用户本地。由此可见,完善的邮件服务需要SMTP和POP3的共同作用。但是鉴于IIS并不支持POP3,所以我们将不介绍很多POP3的内容。说到这里,读者应该清楚的了解IIS在邮件服务方面的限制,不过在某些场合,SMTP还是有它存在的价值。

使用协议分析软件详解Email电子邮件通讯
使用协议分析软件详解Email电子邮件通讯
一、邮件传输协议简介
1.邮件传输概念
邮件服务是Internet上最常用的服务之一,它提供了与操作系统平台无关的通信服务,使用邮件服务,用户可通过电子邮件在网络之间交换数据信息。邮件传输包括将邮件从发送者客户端发往邮件服务器,以及接收者从邮件服务器将邮件取回到接收者客户端。
2.SMTP和POP3
在TCP/IP协议簇中,一般使用SMTP协议发送邮件,POP3协议接收邮件。
SMTP,全称Simple Message Transfer Protocol,中文名为简单邮件传输协议,工作在TCP/IP层次的应用层。SMTP采用Client/Server工作模式,默认使用TCP 25端口,提供可靠的邮件发送服务。
POP3,全称Post Office Protocol 3,中文名为第三版邮局协议,工作在TCP/IP层次的应用层。POP3采用Client/Server工作模式,默认使用TCP 110端口,提供可靠的邮件接收服务。
3.SMTP和POP3的工作原理
发送和接收邮件都需要以下两个组件:用户代理(UA,常用的是Foxmail或Outlook)和SMTP/POP3服务器。
SMTP工作原理:
1)客户端使用TCP协议连接SMTP服务器的25端口;
2)客户端发送HELO报文将自己的域地址告诉给SMTP服务器;
3)SMTP服务器接受连接请求,向客户端发送请求账号密码的报文;
4)客户端向SMTP服务器传送账号和密码,如果验证成功,向客户端发送一个OK命令,表示可以开始报文传输;
5)客户端使用MAIL命令将邮件发送者的名称发送给SMTP服务器;
6)SMTP服务器发送OK命令做出响应;
7)客户端使用RCPT命令发送邮件接收者地址,如果SMTP服务器能识别这个地址,就向客户端发送OK命令,否则拒绝这个请求;
8)收到SMTP服务器的OK命令后,客户端使用DATA命令发送邮件的数据。
9)客户端发送QUIT命令终止连接。
POP3工作原理:
1)客户端使用TCP协议连接邮件服务器的110端口;
2)客户端使用USER命令将邮箱的账号传给POP3服务器;
3)客户端使用PASS命令将邮箱的账号传给POP3服务器;
4)完成用户认证后,客户端使用STAT命令请求服务器返回邮箱的统计资料;
5)客户端使用LIST命令列出服务器里邮件数量;
6)客户端使用RETR命令接收邮件,接收一封后便使用DELE命令将邮件服务器中的邮件置为删除状态;
7)客户端发送QUIT命令,邮件服务器将将置为删除标志的邮件删除,连接结束。
(注:客户端UA可以设定将邮件在邮件服务器上保留备份,而不将其删除。)
二、跟踪分析Email电子邮件通讯过程
1.分析Email的具体流程
1)发送邮件
我们使用科来网络分析系统5.0捕获并分析一个使用SMTP协议的发送邮件过程,客户端主机名为“wangym”,客户端用户代理使用Foxmail 5.0 beta2,邮件发送者test1@colasoft.com,邮件接收者test2@colasoft.com。
在客户端主机上打开科来网络分析系统5.0。为避免数据干扰,设定一个过滤器,只捕获本机的数据通讯。
打开客户端主机上的Foxmail 5.0 beta2,新建两个邮件账户,test1@colasoft.com和test2@colasoft.com,设置好账户的SMTP/POP3服务器地址、用户名、密码等信息并测试成功。
在科来网络分析系统5.0中开始数据捕获,在Foxmail中使用test1@colasoft.com向test2@colasoft.com发送一封邮件,邮件原始信息如图1所示。发送完成后即可在科来网络分析系统5.0对刚才的邮件发送操作进行分析(为避免数据包干扰,分析时可停止捕获。)。
注意:此文里提到的发送邮件均指使用TCP 25端口的标准SMTP通信,对于非25端口的邮件发送,用户可在“工程->高级分析模块->邮件分析模块->SMTP设置->SMTP端口”处进行更改,系统默认为25,当SMTP服务器有多个端口时,多个端口之间用分号分隔,如25;125。
[attach]489[/attach]
(图1 发送邮件的原始信息)
[attach]490[/attach]
(图2 使用SMTP协议发送邮件的原始数据包)
图2所示的是科来网络分析系统5.0对上面发送邮件操作的报文跟踪,详细信息如下:
A.第1、2、3个数据包是TCP连接的三次握手数据包,连接的双方是本机与域名ns1.colasoft.com对应的IP地址;
B.从第4个数据包开始,客户端开始通过TCP协议连接SMTP服务器,并与SMTP服务器进行命令的交互,及邮件的发送,具体的交互过程详见图3以及对图3的分析。 
[attach]491[/attach]  
(图3 使用SMTP协议发送邮件的原始数据流)
图3所示的是科来网络分析系统5.0对上面发送邮件操作的TCP原始数据流重组信息。具体分析数据流重组信息,可以得到上面发送邮件操作的详细过程如下:
A.客户端使用EHLO(或HELO)命令向SMTP服务器发送HELO报文,启动邮件传输过程,并同时将客户端地址发送SMTP服务器端,此处为wangym;
B.SMTP服务器接受了客户端的连接请求,并请求输入账号和密码进行认证;
C.客户端向服务器端传送账号和密码;
D.SMTP服务器通过验证,客户端使用MAIL命令将邮件发送者的名称传送给SMTP服务器;
E.客户端使用RCPT命令将邮件接收者的名称传送给SMTP服务器;
F.客户端使用DATA命令传送邮件数据给SMTP服务器;
G.数据传送完毕后,客户端发送QUIT命令关闭连接。
注意:SMTP传输使用的是base64编码,图4中AUTH LOGIN下的“dGVzdDFAY29sYXNvZnQuY29t”是当前使用账号对应的base64编码;
图3所示的SMTP数据流中,客户端向SMTP服务器传送了两次发件人名称和收件人名称,可能的原因有两种:
a.网络的延迟较大,客户端在规定时间内未收到SMTP服务器的响应,认为传送发件人名称和收件人名称的数据包丢失而进行的重传;
b.客户端主机上的防病毒软件在邮件发送前对邮件进行的检测,如Norton Antivirus就会进行这种检测,禁用此检测功能即可避免此种情况的发生。
2)接收邮件
我们再使用科来网络分析系统5.0捕获并分析一个使用POP3协议的接收邮件过程,客户端主机名为“wangym”,客户端用户代理使用Foxmail 5.0 beta2,邮件接收者test2@colasoft.com。
在客户端主机上打开科来网络分析系统5.0。与上面相同,设定一个过滤器,只捕获本机的数据通讯,选择高级分析模块,在邮件分析模块的常规设置中,将保存邮件选择为“是”,并选择好邮件的保存位置,如图1所示。
在科来网络分析系统5.0中开始数据捕获,同时在Foxmail中选中test2@colasoft.com,并收取邮件。接收完成后即可在科来网络分析系统5.0对刚才的邮件接收操作进行分析(为避免数据包干扰,分析时可停止捕获。)。
注意:此文里提到的接收邮件均指使用TCP 110端口的标准POP3通信,对于非110端口的邮件发送,用户可在“工程->高级分析模块->邮件分析模块->SMTP设置->POP3端口”处进行更改,系统默认为110,当SMTP服务器有多个端口时,多个端口之间用分号分隔,如110;1110。
图4所示的是科来网络分析系统5.0对上面接收邮件操作的报文跟踪。 
A.1、2、3数据包是TCP连接的三次握手数据包,连接的双方是本机与域名ns1.colasoft.com对应的IP地址;
B.从第4个数据包开始,客户端开始通过TCP协议连接POP3服务器,并与POP3服务器进行命令的交互,及邮件的接收,具体的交互过程详见图4以及对图4的分析。
[attach]494[/attach] 
(图4 使用POP3协议接收邮件的原始数据包)
图5所示的是科来网络分析系统5.0对上面接收邮件操作的TCP原始数据流重组信息。具体分析其数据流重组信息,可以得到上面接收邮件操作的详细过程:
A.客户端使用USER命令向POP3服务器传送用户账号test2@colasoft.com;
B.客户端使用PASS命令向POP3服务器传送用户密码1234567890;
C.POP3服务器通过验证,向客户端发送一个OK报文;
D.客户端使用STAT命令请求POP3服务器返回邮箱的统计资料信息,POP3服务器返回当前有一封邮件;
E.客户端使用LIST命令列出POP3服务器里的邮件数量,当前为1封邮件;
F.客户端使用RETR命令接收邮件,接收后使用DELE命令将邮件POP3服务器中的邮件置为删除状态;
G.客户端发送QUIT命令,邮件服务器将将置为删除标志的邮件删除,连接结束。
注意:POP3直接使用明文传输;
图5中最后部分(由于篇幅,图5中未列出),直接重组出了接收到的邮件内容,此信息不经过任何编码或加密处理,直接为明文方式,与图1所示的邮件原始信息一致。
  [attach]495[/attach] 
(图5 使用POP3协议接收邮件的原始数据流)
3)SMTP/POP3命令码
通过SMTP/POP3协议进行邮件收发操作时,均通过不同的命令码进行不同的操作,现将其命令码总结如下:
SMTP命令如表1所示:
命令        作用
HELO        客户端发送此命令与SMTP服务器建立连接,将发送者邮件地址发送给SMTP服务器
MAIL        客户端将邮件发送者的名称传送给SMTP服务器
RCPT        客户端将邮件接收者的名称传送给SMTP服务器
DATA        客户端将邮件报文内容传送给SMTP服务器
SEND        用于向指定用户传送邮件
SAML/SOML        用于发送邮件
RSET        取消客户端与SMTP服务器间的当前事务,释放与当前事务相关的内存
EXPN        标识邮件接收者列表
QUIT        终止客户端与SMTP服务器间的连接
(表1 SMTP协议命令)
POP3命令如表2所示:
命令        作用
USER        客户端向POP3服务器传送账号
PASS        客户端向POP3服务器传送密码
STAT        客户端请求POP3服务器返回邮箱的统计信息
UIDL        客户端请求POP3服务器返回邮件的唯一标识符
LIST        客户端请求POP3服务器返回邮件数量和每封邮件的大小
RETR        客户端请求POP3服务器返回由参数标识的邮件的全部文本
DELE        POP3服务器将由参数标识的邮件标记为删除
RSET        POP3服务器重置所有标记为删除的邮件,用于撤消DELE命令
NOOP        POP3服务器返回一个肯定的响应
QUIT        终止客户端POP3服务器间的连接
分享到:
评论

相关推荐

    Go-smtp-SMTP服务器协议状态机

    "Go-smtp-SMTP服务器协议状态机"是Go语言实现的一个SMTP(Simple Mail Transfer Protocol)服务器的核心组件,它详细描述了SMTP协议在处理邮件传输时的状态转换过程。SMTP是互联网上用于发送电子邮件的标准协议,而...

    易语言简单SMTP协议

    SMTP协议是互联网上电子邮件系统的核心,它定义了邮件服务器之间交换邮件的规则。通过SMTP,用户可以将邮件从一个服务器发送到另一个服务器,最终到达收件人的邮箱。易语言实现SMTP协议主要涉及以下几个关键概念: ...

    SMTP邮件协议

    - 客户机到服务器:当用户在本地邮件客户端撰写邮件后,SMTP协议被用来将邮件从客户的计算机发送到他们的邮件服务器。 - 服务器到服务器:当邮件需要从一个邮件服务器传递到另一个邮件服务器时,SMTP同样起作用,...

    smtp协议中文PDF

    ### SMTP协议核心知识点详解 #### 1. 引言 简单邮件传输协议(Simple Mail Transfer Protocol,简称...随着网络安全技术的不断发展,未来的SMTP协议将会更加安全、可靠,更好地服务于全球范围内的电子邮件通信需求。

    smtp.tar.gz_C 邮件发送_SMTP服务器_smtp_smtp c_smtp协议

    在这个“smtp.tar.gz”压缩包中,我们可能找到了一个C语言实现的SMTP客户端库或示例代码,帮助开发者理解和实现通过SMTP协议发送邮件的功能。 首先,让我们深入了解SMTP协议的工作原理。SMTP基于TCP/IP协议族,使用...

    SMTP协议电子邮件传送剖析

    ### SMTP协议电子邮件传送剖析 #### 摘要与引言 本文主要介绍了一种通过遵循SMTP(简单邮件传输协议)规范,在程序中实现电子邮件发送的方法。SMTP作为一种关键的互联网协议,用于邮件的发送过程。文章重点阐述了...

    使用java简单实现基于smtp协议的邮件收发

    Java 实现基于 SMTP 协议的邮件收发是一项常见的任务,尤其在开发自动化通知系统或者服务端消息传递时。SMTP(Simple Mail Transfer Protocol)是一种互联网标准,用于在邮件服务器之间发送电子邮件。以下将详细介绍...

    SMTP协议工作原理及服务.docx

    SMTP协议在电子邮件系统中扮演着至关重要的角色,它使得邮件能从一个地方可靠地传送到另一个地方,是互联网通信的重要基础设施。虽然现代邮件系统可能包含额外的安全层(如TLS加密)和身份验证机制,但SMTP仍然是...

    SMTP协议分析.doc

    ### SMTP协议分析 #### 1. SMTP概述 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,是互联网中用于电子邮件发送的基本协议之一。它的工作原理基于客户端/服务器模型(C/S模式),主要用于从发件人的...

    smtp协议分析 实验报告

    ### SMTP协议分析实验知识点 #### 一、SMTP协议概述 简单邮件传输协议(Simple Mail Transfer Protocol, SMTP)是用于在互联网上发送电子邮件的标准协议之一。SMTP最初由Jon Postel和Raymond L. Moon在1982年定义,并...

    SMTP服务器配置!

    SMTP(Simple Mail Transfer Protocol)是互联网上用于发送电子邮件的标准协议。在Windows 2000系统中设置SMTP服务器,主要用于构建内部邮件系统或者为网站提供邮件发送服务。这个过程也适用于Windows XP,因为两者...

    smtp协议代码示例集合

    在C++编程环境中,实现SMTP协议通常涉及到以下几个关键知识点: 1. **SMTP连接**:首先,你需要建立一个TCP连接到SMTP服务器。这通常通过`socket`编程实现,使用`connect()`函数连接到服务器的特定端口(通常是25或...

    易语言简单SMTP协议源码

    在这个场景下,"易语言简单SMTP协议源码"应该是指使用易语言编写的实现SMTP协议的程序代码。 SMTP协议的基本工作流程包括以下几个步骤: 1. **连接**:客户端首先与SMTP服务器建立TCP连接。 2. **HELO/EHLO**:...

    用Telnet命令收发邮件(SMTP和POP3协议)实验报告.docx

    本实验报告介绍了使用Telnet命令收发邮件的实验过程,包括使用SMTP协议发送邮件和使用POP3协议收邮件的实验步骤。 SMTP协议发送邮件 SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)定义了邮件客户端...

    Wireshark抓包分析POP3和SMTP协议.doc

    Wireshark 抓包分析 POP3 和 SMTP 协议 Wireshark 是一个功能强大且免费的网络协议 analyzer,能够抓包并分析各种网络协议。在这个实验中,我们将使用 Wireshark 抓包分析 POP3 和 SMTP 协议。 一、POP3 协议...

    利用Winsock实现SMTP协议

    【SMTP协议基础】 SMTP(Simple Mail Transfer Protocol)是互联网上用于传输电子邮件的标准协议。它定义了邮件服务器之间如何交换邮件的格式和过程。SMTP的工作基于客户端/服务器模型,其中发送方客户端通过SMTP与...

    smtp服务器

    SMTP服务器的运作方式是这样的:当你在电子邮件客户端(如Outlook或Webmail服务)撰写邮件后,SMTP服务器会接收这些邮件,并按照收件人的地址将它们发送到目的地。SMTP服务器通常有以下主要功能: 1. **身份验证**...

    基于SMTP协议的邮件发送客户端程序设计说明书

    核心代码中,关键类`SmtpMail`用于实现SMTP协议的邮件发送,它可能包含多个子类或成员,如委托和事件来处理邮件发送过程的监控,确保邮件发送的正确性和可靠性。 在程序设计中,`SmtpMail`类会封装SMTP连接、认证、...

    SMTP网络协议邮件服务器MFC编程实验

    SMTP网络协议邮件服务器MFC编程实验,本地邮件服务器,只支持单用户,支持密码,支持图片传输

Global site tag (gtag.js) - Google Analytics