SMTP协议详解及工作过程

2017-06-21 08:36:42 27765

1、SMTP协议简介


SMTP称为简单邮件传输协议(Simple Mail Transfer Protocal),目标是向用户提供高效、可靠的邮件传输。它的一个重要特点是它能够在传送中接力传送邮件,即邮件可以通过不同网络上的主机接力式传送。通常它工作在两种情况下:一是邮件从客户机传输到服务器;二是从某一个服务器传输到另一个服务器。SMTP是一个请求/响应协议,它监听25号端口,用于接收用户的Mail请求,并与远端Mail服务器建立SMTP连接。


2、SMTP协议工作机制


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


3、SMTP的连接和发送过程


(a)建立TCP连接


(b)客户端发送HELO命令以标识发件人自己的身份,然后客户端发送MAIL命令;


         服务器端正希望以OK作为响应,表明准备接收


(c)客户端发送RCPT命令,以标识该电子邮件的计划接收人,可以有多个RCPT行;


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


(d)协商结束,发送邮件,用命令DATA发送


(e)以.表示结束输入内容一起发送出去


(f)结束此次发送,用QUIT命令退出


其他命令:


VRFY——用于验证给定用户邮箱是否存在,以及接收关于该用户的详细信息;


EXPN——用于扩充邮件列表


4、邮件的路由过程


SMTP服务器是基于“域名服务DNS中计划收件人的域名来路由电子邮件”。SMTP服务器基于DNS中的MX记录来路由电子邮件,MX记录注册了域名和相关的SMTP中的主机,属于该域的电子邮件都应向该主机发送。


若SMTP服务器mail.abc.com收到一封信要发送到shuser@sh.abc.com:


a: SendMail请求DNS给出主机sh.abc.com的CNAME记录,如有,假若CNAME到shmail.abc.com,则再次请求shmail.abc.com的CNAME记录,直到没有为止;


b: 假定被CNAME到shmail.abc.com,然后SendMail请求@abc.com域的DNS给出shmail.abc.com的MX记录,


    shmail MX 5 shmail.abc.com


    10 shmail2.abc.com


c: SendMail做好请求DNS给出shmail.abc.com的A记录,即IP地址,若返回值为1.2.3.4


d: SwndMail与1.2.3.4连接,传送这封信给shuser@sh.abc.com的信到1.2.3.4这台服务器的SMTP后台程序。


5、SMTP常用的命令


SMTP命令不区分大小写,但参数区分大小写。常用命令如下:


HELO ——向服务器标识用户身份发送者能欺骗、说谎,但一般情况下服务器都能检测到


RCPT TO: ——用来标志邮件接收者的地址,常用在MAIL FROM后,可以有多个RCPT TO


DATA ——将之后的数据作为数据发送,以.标志数据的结尾


REST ——重置会话,当前传输被取消


NOOP ——要求服务器返回OK应答,一般用作测试


QUIT ——结束会话


VRFY ——验证指定的邮箱是否存在,由于安全方面的原因,服务器大多禁止此命令


EXPN ——验证给定的邮箱列表是否存在,由于安全方面的原因,服务器大多禁止此命令


HELP ——查询服务器支持什么命令


6、SMTP常用的响应


501——参数格式错误


502——命令不可实现


503——错误的命令序列


504——命令参数不可实现


211——系统状态或系统帮助响应


214——帮助信息


220——服务器就绪


221——服务关闭


421——服务器未就绪,关闭传输信道


250——要求的邮件操作完成


251——用户非本地,将转发向


450——要求的邮件操作未完成,邮箱不可用


550——要求的邮件操作未完成,邮箱不可用


451——放弃要求的操作,处理过程中出错


551——用户非本地,请尝试


452——系统存储不足,要求的操作未执行


552——过量的存储分配,要求的操作未执行


553——邮箱名不可用,要求的操作未执行


354——开始邮件输入,以“.”结束


554——操作失败


7、使用SMTP的必要性


一般的PC资源不够,处理能力不够,不可能全天候地连接在因特网上来收发邮件。所以使用SMTP服务器,可以让多个用户共用服务器,有效地降低了成本。


8、SMTP和邮件格式的关系


可以用一个比较形象的例子来说明:甲与乙书信来往,甲通过邮局向乙发送信件,邮局见转交邮件可看成使用了SMTP协议,至于书信的格式则会因为地区习惯等的不同而不同,这个书信格式可看成是邮件格式的标准。


提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题:
XML 地图