电子邮件
因特网电子邮箱系统
用户代理user agent:邮件客户端。发送邮件到自己邮箱所在的邮件服务器。
邮件服务器mail server:发送和存储邮件。
简单邮件传输协议SMTP,Simple Mail Transmission Protocol,基于TCP协议。
流程
邮件发送协议:SMTP
Simple Mail Transmission Protocol,应该翻译成简单邮件发送协议,而不应该简单邮件传输协议。
RFC 5321定义。
负责发送方的邮件服务器发送报文到接受方的邮件服务器。
是持续连接,发送给同一个接受邮件服务器的邮件可以通过一个TCP连接完成。
SMTP比较HTTP
区别一:“推协议”和“拉协议”
区别二:报文是7bitASCII码格式
SMTP的报文格式是7bitASCII码格式,如果有非的,必须按照7bitASCII码进行编码,HTTP没有限制。
区别三:报文对象封装
HTTP每个web object在单独的报文中。
SMTP是一个富文档的所有对象都在一个报文中。
邮件报文格式和MIME
RFC 5322定义。
From: //必须
To: //必须
Subject: //可选
报文实体
邮件访问协议:POP3
SMTP定义的是从发送方服务器发送邮件到接收方邮件服务器。注意!!!不是两个服务器之间的报文传送,和HTTP是不一样的,它是单向的,即只定义了发送。
Alice通过自己PC发送邮件给Bob的过程:
SMTP协议:AlicePC代理程序发送邮件给Alice邮箱所在邮件服务器。
SMTP协议:邮件服务器发送邮件到邮件服务器。
邮件访问协议:BobPC代理程序访问Bob邮箱所在邮件服务器的邮件。
所以邮件访问协议是定义了如何请求邮件报文。
常见的邮件访问协议有:
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,即成功或者失败。
## telnet 登录mailServer主机的邮箱账号:bob:hungry
telnet mailServer 110
OK POP3 server ready
#特许阶段:登录
user bob
+OK
pass hungry
+OK user successfully bogged on
-ERR ...
#事务处理阶段:事务命令在RFC 1939定义。
list #列出所有存储报文长度,
1 498 #邮件1
2 912 #邮件2
.
retr 1 #返回邮件1内容
(... ... ...) #邮件1内容
dele 1 #删除邮件1
retr 2 #返回邮件2内容
(... ... ...) #邮件2内容
.
dele 2 #删除邮件2
#更新阶段:退出
quit
+OK POP3 server signing off
测试体验POP3:Telnet 登录到POP3服务器的110端口,然后发送user和pass命令。Telnet程序可以建立到目标主机的TCP连接,然后发送各种基于TCP的应用层协议,就可以测试体验这些应用层协议的机制,所以Telnet非常有用!!!
用户代理可以配置“下载并删除”和“下载并保留”2中方式。第一种就是说代理从服务器下载邮件后,服务器将删除邮件,第二种是相反的。
IMAP
IMAP协议可以在有邮件服务器操作邮件目录,POP3无法做到。所有IMAP要比POP3复杂的多,也方便的多。