邮件基础之 -- SMTP协议

SMTP协议

1. 概念

​ SMTP是采用C/S模式,专用于电子邮件的发送,规定了发信人把邮件发送到收信人的电子邮箱的全过程,SMTP客户与SMTP服务器之间是如何交换信息的,规定了SMTP会话的过程。用户直接使用的是用于编写和发送的客户端软件,一般情况下SMTP服务器运行在远程站点上。客户/服务器之间的通信是通过TCP/IP协议进行的。

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

2. 基本流程

1)建立TCP连接

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

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

4)协商结束,发送邮件,用命令DATA发送;

5)以表示结束输入内容一起发送出去;

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

举列子

C: telent SMTP.163.com 25  //以telenet方式连接163邮件服务器  
S: 220 163.com Anti-spam GT for Coremail System //220为响应数字,其后的为欢迎信息  
C: HELO SMTP.163.com //除了HELO所具有的功能外,EHLO主要用来查询服务器支持的扩充功能   
S: 250-mail  
S: 250-AUTH LOGIN PLAIN  
S: 250-AUTH=LOGIN PLAIN  
S: 250 8BITMIME //最后一个响应数字应答码之后跟的是一个空格,而不是'-'   
C: AUTH LOGIN   //请求认证  
S: 334 dxNlcm5hbWU6  //服务器的响应——经过base64编码了的“Username”=  
C: Y29zdGFAYW1heGl0Lm5ldA==  //发送经过BASE64编码了的用户名  
S: 334 UGFzc3dvcmQ6  //经过BASE64编码了的"Password:"=  
C: MTk4MjIxNA==  //客户端发送的经过BASE64编码了的密码  
S: 235 auth successfully  //认证成功   
C: MAIL FROM: bripengandre@163.com  //发送者邮箱  
S: 250 … .  //“…”代表省略了一些可读信息  
C: RCPT TO: bripengandre@smail.hust.edu.cn //接收者邮箱  
S: 250 … .    // “…”代表省略了一些可读信息  
C: DATA //请求发送数据  
S: 354 Enter mail, end with "." on a line by itself  
C: Enjoy Protocol Studing  
C: .  
S: 250 Message sent  
C: QUIT //退出连接   
S: 221 Bye  

流程:

这里写图片描述

3. 邮件路由的过程

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

​ 若SMTP服务器mail.@qq.com收到信件要发送到mail.@126.com

1)Sendmail请求DNS给出主机sh.abc.com的CNAME记录,如有,假若CNAME到shmail.abc.com,则再次,请求shmail.abc.com的CNAME记录,直到没有为止;
2)假定被CNAME到shmail.abc.com,然后sendmail请求@abc.com域的DNS给出shmail.abc.com的MX记录;
   shmail    MX   5   shmail.abc.com
              10    shmail2.abc.com
3)Sendmail最后请求DNS给出shmail.abc.com的A记录,即IP地址,若返回值为1.2.3.4 ;
4)Sendmail与1.2.3.4连接,传送这封给shuser@sh.abc.com的信到1.2.3.4这台服务器的SMTP后台程序 。

4. SMTP常用的命令

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

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

2)RCPT TO ---- 用来标志邮件接收者的地址,常用在MAIL FROM后,可以后多个RCPY TO接收地址;

3)DATA ---- 将之后的数据作为数据发送,以标志数据的结尾;

4)REAT ---- 重置会话,当前传输被取消;

5)NOOP ---- 要求服务器返回OK应答,一般用作测试;

6)QUIT ---- 结束会话;

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

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

8)HELP ---- 查询服务器支持什么命令。

5. SMTP常用的响应

501——参数格式错误
502——命令不可实现
503——错误的命令序列
504——命令参数不可实现
211——系统状态或系统帮助响应
214——帮助信息
220——服务器就绪
221——服务关闭
421——服务器未就绪,关闭传输信道
250——要求的邮件操作完成
251——用户非本地,将转发向
450——要求的邮件操作未完成,邮箱不可用
550——要求的邮件操作未完成,邮箱不可用
451——放弃要求的操作,处理过程中出错
551——用户非本地,请尝试
452——系统存储不足,要求的操作未执行
552——过量的存储分配,要求的操作未执行
553——邮箱名不可用,要求的操作未执行
354——开始邮件输入,以“.”结束
554——操作失败

6. 使用SMTP的必要性

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

7. SMTP和邮件格式的关系

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

8. 浏览器发送邮件使用的协议

浏览器发送邮件的过程:
例如:bripengandre@126.com可通过登陆www.126.com来收发邮件 。
bripengandre@126.com在www.126.com提供的邮件页面上填写的相应信息(如发信人邮箱、收信人邮箱等),通过http协议被提交给126服务器;126服务器根据这些信息组装一封符合邮件规范的邮件(就像用户代理一样);然后smtp.126.com通过SMTP协议将这封邮件发送到接收端邮件服务器。
由此可知,浏览器发送邮件只是用户代理的功能直接放到邮件服务器上去做了,至于邮件服务器见发送邮件仍然采用的是SMTP协议。

范的邮件(就像用户代理一样);然后smtp.126.com通过SMTP协议将这封邮件发送到接收端邮件服务器。
由此可知,浏览器发送邮件只是用户代理的功能直接放到邮件服务器上去做了,至于邮件服务器见发送邮件仍然采用的是SMTP协议。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
该压缩包包含三个文档,分别是SMTP协议详解,POP3协议详解,MIME规范详解,文档中详细介绍了一个邮件发送和接收的过程分析,协议本身的包含的命令和工作过程,为开发邮件代理的客户端提供技术基础。如下是部分SMTP协议部分内容: 1.1 SMTP邮件通信中的位置 SMTP,即简单邮件传送协议,所对应RFC文档为RFC821。同http等多数应用层协议一样,它工作在C/S模式下,用来实现因特网上的邮件传送。SMTP在整个电子邮件通信中所处的位置。可以看出,SMTP是用来将客户机上的邮件传送到服务器上。这里的客户机是指某次连接中的发送方,服务器是指相应的接收方。在讲解发送邮件的整个通信过程前,先解释一下面几个术语。 1.2几个术语 1.2.1.邮件 邮件是一种消息的格式,由信封、首部和正文组成。 信封上最重要的是收信人的地址。邮件服务器用这个地址将邮件发送到收信人所在的邮件服务器上。 首部是由用户代理或邮件服务器添加的一些信息。包括Received、Message-ID、From、Data、Reply-To、X-Phone、X-Mailer、To和Subject等字段。 正文是是发送用户发给接收用户报文的内容。RFC 822 规定正文为NVT ASCII文字行。 更为详细的说明,请参考RFC821和RFC822等协议。 1.2.2.用户代理 用户代理UA(User Agent)是用户与电子邮件系统的交互接口,一般来说它就是我们PC机上的一个程序。Windows上常见的用户代理是Foxmail和Outlook Express。 用户代理提供一个好的用户界面,它提取用户在其界面填写的各项信息,生成一封符合SMTP邮件标准的邮件,然后采用SMTP协议邮件发送到发送端邮件服务器。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

峰宝宝守护。

乐已忘忧,心旷神愉

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值