电子邮件协议

当前常用的电子邮件协议有SMTP、POP3、IMAP4,它们都隶属于TCP/IP协议簇,默认状态下,分别通过TCP端口25、110和143建立连接。

本文将对SMTP与POP3进行介绍。


1 SMTP协议

SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP 协议属于TCP/IP协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。SMTP 服务器就是遵循SMTP协议的发送邮件服务器。SMTP认证,简单地说就是要求必须在提供了账户名和密码之后才可以登录 SMTP 服务器,这就使得那些垃圾邮件的散播者无可乘之机。增加 SMTP 认证的目的是为了使用户避免受到垃圾邮件的侵扰。

SMTP目前已是事实上的E-Mail传输的标准。

1.1 SMTP工作机制

SMTP通常有两种工作模式:发送SMTP和接收SMTP。具体工作方式为:发送SMTP在接到用户的邮件请求后,判断此邮件是否为本地邮件,若是直接投送到用户的邮箱,否则向dns查询远端邮件服务器的MX纪录,并建立与远端接收SMTP之间的一个双向传送通道,此后SMTP命令由发送SMTP发出,由接收SMTP接收,而应答则反方面传送。一旦传送通道建立,SMTP发送者发送MAIL命令指明邮件发送者。如果SMTP接收者可以接收邮件则返回OK应答。SMTP发送者再发出RCPT命令确认邮件是否接收到。如果SMTP接收者接收,则返回OK应答;如果不能接收到,则发出拒绝接收应答(但不中止整个邮件操作),双方将如此重复多次。当接收者收到全部邮件后会接收到特别的序列,如果接收者成功处理了邮件,则返回OK应答即可。

1.2 SMTP工作过程

简单邮件传输协议(SMTP)是一种基于文本的电子邮件传输协议,是在因特网中用于在邮件服务器之间交换邮件的协议。SMTP是应用层的服务,可以适应于各种网络系统。

SMTP的命令和响应都是基于文本,以命令行为单位,换行符为CR/LF。响应信息一般只有一行,由一个3位数的代码开始,后面可附上很简短的文字说明。

SMTP要经过建立连接、传送邮件和释放连接3个阶段。具体为:

1) 建立TCP连接。

2) 客户端向服务器发送HELO命令以标识发件人自己的身份,然后客户端发送MAIL命令。

3) 服务器端以OK作为响应,表示准备接收。

4) 客户端发送RCPT命令。

5) 服务器端表示是否愿意为收件人接收邮件。

6) 协商结束,发送邮件,用命令DATA发送输入内容。

7) 结束此次发送,用QUIT命令退出。

SMTP服务器基于DNS中的邮件交换(MX)记录路由电子邮件。电子邮件系统发邮件时是根据收信人的地址后缀来定位邮件服务器的。SMTP通过用户代理程序(UA)完成邮件的编辑、收取和阅读等功能;通过邮件传输代理程序(MTA)将邮件传送到目的地。

1.3 通讯模型

MTP协议是TCP/IP协议族中的一员,主要对如何将电子邮件从发送方地址传送到接收方地址,也即是对传输的规则做了规定。SMTP协议的通信模型并不复杂,主要工作集中在发送SMTP和接收SMTP上:首先针对用户发出的邮件请求,由发送SMTP建立一条连接到接收SMTP的双工通讯链路,这里的接收SMTP是相对于发送SMTP而言的,实际上它既可以是最终的接收者也可以是中间传送者。发送SMTP负责向接收SMTP发送SMTP命令,而接收SMTP则负责接收并反馈应答。

从前面的通讯模型可以看出SMTP协议在发送SMTP和接收SMTP之间的会话是靠发送SMTP的SMTP命令和接收SMTP反馈的应答来完成的。在通讯链路建立后,发送SMTP发送MAIL命令指令邮件发送者,若接收SMTP此时可以接收邮件则作出OK的应答,然后发送SMTP继续发出RCPT命令以确认邮件是否收到,如果接收到就作出OK的应答,否则就发出拒绝接收应答,但这并不会对整个邮件操作造成影响。双方如此反复多次,直至邮件处理完毕。SMTP协议共包含10个SMTP命令,列表如下:

1) HELO;识别发送方到接收SMTP的一个HELO命令

2) MAIL FROM:;为发送者地址。此命令告诉接收方一个新邮件发送的开始,并对所有的状态和缓冲区进行初始化。此命令开始一个邮件传输处理,最终完成将邮件数据传送到一个或多个邮箱中。

3) RCPT TO:;标识各个邮件接收者的地址

4) DATA;接收SMTP将把其后的行为看作邮件数据去处理,以.;标识数据的结尾。

5) REST;退出/复位当前的邮件传输

6) NOOP;要求接收SMTP仅做OK应答。(用于测试)

7) QUIT;要求接收SMTP返回一个OK应答并关闭传输。

8) VRFY;验证指定的邮箱是否存在,由于安全因素,服务器多禁止此命令。

9) EXPN;验证给定的邮箱列表是否存在,扩充邮箱列表,也常禁止使用。

10) HELP;查询服务器支持什么命令


2 POP协议

POP邮局协议负责从邮件服务器中检索电子邮件。它要求邮件服务器完成下面几种任务之一:从邮件服务器中检索邮件并从服务器中删除这个邮件;从邮件服务器中检索邮件但不删除它;不检索邮件,只是询问是否有新邮件到达。POP协议支持多用户互联网邮件扩展,后者允许用户在电子邮件上附带二进制文件,如文字处理文件和电子表格文件等,实际上这样就可以传输任何格式的文件了,包括图片和声音文件等。在用户阅读邮件时,POP命令所有的邮件信息立即下载到用户的计算机上,不在服务器上保留。

POP3(Post Office Protocol 3)即邮局协议的第3个版本,是因特网电子邮件的第一个离线协议标准。

2.1 协议特性

POP3协议默认端口:110

POP3协议默认传输协议:TCP

POP3协议适用的构架结构:C/S

POP3协议的访问模式:离线访问

2.2 原理简介

适用范围

POP适用于C/S结构的脱机模型的电子邮件协议,目前已发展到第三版,称POP3。脱机模型即不能在线操作,POP不支持对服务器邮件进行扩展操作,此过程需要更高级的IMAP4协议来完成。支持POP协议使用ASCII码来传输数据消息,这些数据消息可以是指令,也可以是应答。

POP协议

协议支持离线邮件处理,当邮件发送到服务器后,电子邮件客户端会调用邮件客户端程序,下载所有未阅读的电子邮件(这种离线访问模式是一种存储转发服务).当邮件从邮件服务器发送到个人计算机上,同时邮件服务器会删除该邮件(但是目前很多POP3服务器都支持“下载邮件,服务器并不删除邮件”,也就是说在POP3中改进了POP协议).

命令响应

POP3客户向POP3服务器发送命令并等待响应,POP3命令采用命令行形式,用ASCII码表示。服务器响应是由一个单独的命令行组成或多个命令行组成,响应第一行以ASCII文本+OK或-ERR(OK指成功,-ERR指失败)指出相应的操作状态是成功还是失败。

三种状态

认证状态,处理状态和更新状态。当客户机与服务器建立连接时,客户机向服务器发送自己身份(这里指的是账户和密码)并由服务器成功确认,即客户端由认可状态转入处理状态,在完成列出未读邮件等相应的操作后客户端发出quit命令,退出处理状态进入更新状态,开始下载未阅读过的邮件到计算机本地之后最后重返认证状态确认身份后断开与服务器的连接。

POP3命令码

命令描述

USER [username]:处理用户名

PASS [password]:处理用户密码

APOP [Name,Digest]:认可Digest是MD5消息摘要

STAT:处理请求服务器发回关于邮箱的统计资料,如邮件总数和总字节数

UIDL [Msg#]:处理返回邮件的唯一标识符,POP3会话的每个标识符都将是唯一的

LIST [Msg#]:处理返回邮件数量和每个邮件的大小

RETR [Msg#]:处理返回由参数标识的邮件的全部文本

DELE [Msg#]:处理服务器将由参数标识的邮件标记为删除,由quit命令执行

RSET:处理服务器将重置所有标记为删除的邮件,用于撤消DELE命令

TOP [Msg# n]:处理服务器将返回由参数标识的邮件前n行内容,n必须是正整数

NOOP:处理服务器返回一个肯定的响应

QUIT:终止会话

中断

考虑这种情况,若客户在收取邮件时,假定为15封信等待接收,但由于线路问题,收到第10封时断线了,为什么下次收时仍然从第一封开始,也即为什么前10封没有被从服务器上删除掉?

任何邮件的删除都必须在quit命令发出后对已标记为删除的邮件执行删除操作,由于中途断线,仍处于处理状态,没有机会执行quit命令以进行状态转换。


2014-06-07 11:49
邮件服务器DBMail
邮件服务器DBMail V5.0 (更新2018.05.23)
Download
DBMail产品改良计划
完美的产品体验,需要有您的参与。
在线填写,立即参与
界面/演示
界面美观大方、简单易用。
界面预览
邮件服务器DBMail  |  购买DBMail  |  软件更新  |  网站更新  |  联系遥志  |  站点地图  |  邮件服务器相关  |  代理合作
遥志软件 版权所有(C)2000-2022 湘ICP备13011306号-3 湘公网安备 43010202000264号
Copyright(C) 2000-2022 Youngzsoft Inc. All Rights Reserved.