理论教育 计算机网络技术:SMTP实体的简单交互模式与常用命令

计算机网络技术:SMTP实体的简单交互模式与常用命令

时间:2023-11-22 理论教育 版权反馈
【摘要】:SMTP实体之间采用简单的命令与响应交互模式,即客户端发送一个命令,随后服务器端针对命令返回一个响应。SMTP常用命令如下。HELO是SMTP的第一个交互命令,用于向邮件服务器标识用户身份,确认发送邮件服务器和接收邮件服务器都处于初始状态。通过SMTP命令来指定:2)首部。

计算机网络技术:SMTP实体的简单交互模式与常用命令

SMTP用于电子邮件从客户端到服务器、从一个邮件服务器传输到另外一个邮件服务器的传输。如常用的客户端软件Outlook与邮箱服务器之间的交互。

SMTP实体之间采用简单的命令与响应交互模式,即客户端发送一个命令(部分命令带有参数),随后服务器端针对命令返回一个响应。

1.SMTP命令

SMTP命令是字符串形式,由4字符的命令码和参数构成,以<CRLF>结束。命令码不区分大小写,可以在Windows的命令行窗口或Linux系统下直接用键盘输入。如发送命令的格式为:SEND<SP>FROM:<reverse-path><CRLF>。SEND为命令码,<SP>表示空格符,FROM:<reverse-path>表示参数,<CRLF>表示回车符和换行符,即回车键。SMTP常用命令如下。

1)HELO:即HELLO。HELO是SMTP的第一个交互命令,用于向邮件服务器标识用户身份,确认发送邮件服务器和接收邮件服务器都处于初始状态。

2)MAIL:用于初始化邮件事务。这个命令可以带有参数,参数主要是反向路径。反向路径是一个类似源路由的邮件服务器列表,当接收邮件服务器接收到数据或者其他命令之后,其响应将沿着反向路径送回去。每一个中继邮件服务器必须把自己的地址加到这个列表的前面,例如,MAILFROM:<@163.com:userA@gmail.com>,其中userA@gmail.com是邮件发送者,发送邮件服务器为@gmail.com,@163.com是中继邮件服务器。

3)RCPT:即RECIPIENT(接收者),主要用于标志邮件的接收者,参数即为接收者的邮箱地址,也可以有前向路径。前向路径是指邮件的传输必须沿着预先指定的邮件服务器列表进行中继和转发,否则接收端服务器会返回550错误(未知的本地用户)。邮件进行前向转发和传输的过程中,中继邮件服务器会把自己从前向路径列表中删除,并把自己加到反向路径列表的前面。例如,RCPTTO:<@163.com,@yahoo.com:userA@gmail.com>,其中userA@gmail.com是邮件接收者,而@163.com、@yahoo.com是前向路径的一部分。发送到userA@gmail.com的邮件必须用指定的前向路径传输,否则userA@gmail.com在接收到邮件之后,会检查前向路径,若不一致,则会返回错误。

4)DATA:DATA命令用于提示邮件接收者该命令以后传输的都是数据,因此,接收邮件服务器在接收DATA命令以后的数据时,都会存放到邮件数据缓冲区。邮件数据结束的标志是<CRLF>.<CRLF>。

5)QUIT:QUIT命令用于结束会话。邮件发送者在发送QUIT命令之后,邮件接收者必须返回一个OK响应作为回答,若成功,则结束会话。结束会话的过程就是TCP连接终止的过程。

2.SMTP响应

SMTP的响应由3位数字响应码和一些文本说明构成,其语法格式如下:

响应码<空格>文本<回车换行符>

3位的数字响应码是方便程序进行处理,文本是为了人工识别时使用。对于不同的邮件服务器软件,数字响应码必须一样,但是文本字段可能略有不同。通常响应只有一行代码,但是对于某些命令的响应可能有多行代码,例如,对EXPN和HELP的响应代码就有多行,以下是常遇到的响应。

3.SMTP交互实例(www.daowen.com)

Windows操作系统带有SMTP邮件服务器组件,默认没有安装,用户可以通过控制面板的添加/删除Windows组件来安装。安装完SMTP邮件服务器组件之后,计算机就相当于一台SMTP邮件服务器了,用户就可以进入Wndows的命令行模式(也可以用Windows操作系统提供的系统调用函数来操作)进行邮件的发送。

下面在该平台下演示基本的邮件交互过程。其中C:表示客户端的命令,S:表示邮件服务器的响应。

演示的交互过程没有使用前向路径。输入0410593是这个域的一个邮箱用户,因为已经设置域为dz110,dz110类似于163.com,只不过163.com是域名,而dz110是主机名,域名本身就是标识一台主机。还假设dz110域还有一用户0410591@dz110,把邮件发送给该用户。而事实上在该域下并没有这两个用户,因为没有验证用户的存在性。服务器的应答“Queued mail for delivery”表示邮件服务器已经接受了邮件,开始排队准备发送了,从这也可以看出邮件传输是非实时的。

4.SMTP报文

一封正确、完整的电子邮件(SMTP报文)由信封、首部和正文3部分组成。在上面的SMTP命令与响应交互实例中,SMTP服务器产生了一封SMTP报文,其内容如下:

通过这封SMTP报文实例,分析一下报文的3个组成部分。

1)信封。通过SMTP命令来指定:

2)首部。首部由邮件用户代理MUA使用,在实例SMTP报文中,X-sender、X-receiver、Message-ID、From、Bcc、Received等都是由MUA产生,格式是字段名,然后是冒号,最后是字段值。其中以X开头的首部字段都是用户定义的字段,其他的都是由RFC0822定义,RFC0822指定正文为NVTASCII(网络虚拟终端ASCII码)文字行。

3)正文。正文就是DATA命令之后的内容。当用DATA命令发送时,先发送首部,然后紧跟一个空行,然后是正文。

MTA接收到电子邮件之后,会根据情况加上一些首部字段,或者传送到下一个邮件服务器。MTA也会根据情况修改一些首部字段,例如,前向路径和反向路径的字段值等。

5.ESMTP

ESMTP(扩展的SMTP)在SMTP的基础上加了认证要求,目的是为了限制非本邮箱系统的正式用户利用邮箱系统服务散发垃圾邮件或其他不当行为,最主要体现在登录邮箱或者使用客户端时都需要输入邮箱的用户名和密码。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈