电子邮件

因特网电子邮箱系统

微信图片_20200820031533.jpg
用户代理user agent:邮件客户端。发送邮件到自己邮箱所在的邮件服务器。
邮件服务器mail server:发送和存储邮件。
简单邮件传输协议SMTP,Simple Mail Transmission Protocol,基于TCP协议。

流程

点击查看【processon】

邮件发送协议:SMTP

Simple Mail Transmission Protocol,应该翻译成简单邮件发送协议,而不应该简单邮件传输协议。
RFC 5321定义。
负责发送方的邮件服务器发送报文到接受方的邮件服务器。
是持续连接,发送给同一个接受邮件服务器的邮件可以通过一个TCP连接完成。
image.png
image.png

SMTP比较HTTP

区别一:“推协议”和“拉协议”

HTTP,TCP连接是由想接受文件服务器的机器发起。

区别二:报文是7bitASCII码格式

SMTP的报文格式是7bitASCII码格式,如果有非的,必须按照7bitASCII码进行编码,HTTP没有限制。

区别三:报文对象封装

HTTP每个web object在单独的报文中。
SMTP是一个富文档的所有对象都在一个报文中。

邮件报文格式和MIME

RFC 5322定义。

  1. From //必须
  2. To //必须
  3. Subject //可选
  4. 报文实体

邮件访问协议:POP3

SMTP定义的是从发送方服务器发送邮件到接收方邮件服务器。注意!!!不是两个服务器之间的报文传送,和HTTP是不一样的,它是单向的,即只定义了发送。

Alice通过自己PC发送邮件给Bob的过程:
SMTP协议:AlicePC代理程序发送邮件给Alice邮箱所在邮件服务器。
SMTP协议:邮件服务器发送邮件到邮件服务器。
邮件访问协议:BobPC代理程序访问Bob邮箱所在邮件服务器的邮件。
image.png
所以邮件访问协议是定义了如何请求邮件报文。
常见的邮件访问协议有:
POP3:Post Office Protocol-Version 3,第三版邮局协议。
IMAP:Internet Mail Access Protocol,因特网邮件访问协议。

POP3

RFC 1939定义,协议非常简单。
流程
1、端口110,建立TCP连接。
2、特许阶段:发送用户名和口令(明文)
user
pass
3、事务处理阶段:取回报文,对报文做删除标记或取消,获取邮件统计信息。
4、更新:发送quit命令之后即结束POP3会话,3阶段的事务生效。
服务器响应
只有两种:OK和ERR,即成功或者失败。

  1. ## telnet 登录mailServer主机的邮箱账号:bob:hungry
  2. telnet mailServer 110
  3. OK POP3 server ready
  4. #特许阶段:登录
  5. user bob
  6. +OK
  7. pass hungry
  8. +OK user successfully bogged on
  9. -ERR ...
  10. #事务处理阶段:事务命令在RFC 1939定义。
  11. list #列出所有存储报文长度,
  12. 1 498 #邮件1
  13. 2 912 #邮件2
  14. .
  15. retr 1 #返回邮件1内容
  16. (... ... ...) #邮件1内容
  17. dele 1 #删除邮件1
  18. retr 2 #返回邮件2内容
  19. (... ... ...) #邮件2内容
  20. .
  21. dele 2 #删除邮件2
  22. #更新阶段:退出
  23. quit
  24. +OK POP3 server signing off

测试体验POP3:Telnet 登录到POP3服务器的110端口,然后发送user和pass命令。Telnet程序可以建立到目标主机的TCP连接,然后发送各种基于TCP的应用层协议,就可以测试体验这些应用层协议的机制,所以Telnet非常有用!!!
用户代理可以配置“下载并删除”和“下载并保留”2中方式。第一种就是说代理从服务器下载邮件后,服务器将删除邮件,第二种是相反的。

IMAP

IMAP协议可以在有邮件服务器操作邮件目录,POP3无法做到。所有IMAP要比POP3复杂的多,也方便的多。

基于Web的电子邮件

image.png