邮箱开发(1)之基础协议认知

初识邮箱

前言
  • 邮箱对我们来说是再熟悉不过了,它与我们的生活、工作紧密联系在一起:登录、注册、往来沟通…无处不在;
  • 邮箱的使用很便捷,可是邮箱是如何传输、投递信息呢?电子邮件协议
  • 电子邮件协议主要包括IMAPPOP3SMTP协议;
  • 这篇文章将给大家介绍一下邮件所用的协议、协议格式标准以及不同协议之间的区别与联系;
SMTP
  • SMTP的全称是Simple Mail Transfer Protocol简单邮件传输协议,在1982年正式提出。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP 协议属于 TCP/IP协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。SMTP 服务器就是遵循 SMTP 协议的发送邮件服务器。
  • SMTP认证,简单地说就是要求必须在提供了账户名和密码之后才可以登录 SMTP 服务器,这就使得那些垃圾邮件的散播者无可乘之机。增加SMTP 认证的目的是为了使用户避免受到垃圾邮件的侵扰。
  • SMTP是一种应用层、基于文本格式的协议,主要用于邮件服务器间的连接、数据传输等。
POP
  • POPPost Office Protocol的简称,即邮局协议。现在主要使用是POP3邮局协议的第3个版本;
  • 它规定怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的电子协议, 是TCP/IP协议族中的一员(默认端口是110);
  • 它是因特网电子邮件的第一个离线协议标准,POP3允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时删除保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的。
POP与POP3区别
  • POP协议支持离线邮件存储转发处理即客户端程序连接服务器,下载所有未阅读的电子邮件;一旦将邮件从邮件服务器端送到客户端上,邮件服务器上的邮件将会被删除;
  • 目前的POP3邮件服务器大都可以只下载邮件,服务器端并不删除,也就是改进后的POP协议;
  • POP3协议允许电子邮件客户端下载服务器上的邮件,但是在客户端的操作(如移动邮件、标记已读等),不会反馈到服务器上。比如通过客户端收取了邮箱中的3封邮件并移动到其他文件夹,邮箱服务器上的这些邮件是没有同时被移动的,本地化的操作不会同步到邮箱服务器。
IMAP
  • IMAP全称是Internet Mail Access Protocol,即交互式邮件访问协议,是一个应用层协议(端口是143)。用来从本地邮件客户端(Outlook Express、Foxmail、Mozilla Thunderbird等)访问远程服务器上的邮件。
IMAP和POP3的区别
  • IMAPPOP3那样提供了方便的邮件下载服务,让用户能进行离线阅读。IMAPPOP3是邮件访问最为普遍的Internet标准协议。不同点如下所示:
  • IMAP提供Webmail与电子邮件客户端之间的双向通信,客户端收取的邮件仍然保留在服务器上,同时在客户端上的操作都会反馈到服务器上(如:删除邮件标记已读等,服务器上的邮件也会做相应的动作。所以无论从浏览器登录邮箱或者客户端软件登录邮箱,看到的邮件以及状态都是一致的)。而POP3在客户端的操作不会同步到服务器上;
  • IMAP更好地支持了从多个不同设备中随时访问新邮件;
  • IMAP提供的摘要浏览功能可以让你在阅读完所有的邮件到达时间、主题、发件人、大小等信息后才作出是否下载的决定;
  • POP3需要下载未阅读的邮件,IMAP可以不用把所有的邮件全部下载,而是通过客户端直接对服务器上的邮件进行操作。所有通过IMAP传输的数据都会被加密,从而保证通信的安全性;
  • IMAP 整体上为用户带来更为便捷和可靠的体验。POP3 更易丢失邮件或多次下载相同的邮件。
RFC822标准
  • RFC 822是电子邮件的标准格式,电子邮件除了是由一个Internet用户传递给另一个用户的信息之外,还必须包含附加的服务信息,这两个部分加在一起叫做电子邮件的标准格式,外文简称RFC 822(摘录于百度百科);
  • 该标准主要定义邮件结构和数据格式,为邮箱服务器的数据解析和数据重组提供统一的处理方式,比如:一些处理邮件代收发的第三方库都必须按照该标准处理数据。
SSL
  • SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLSSSL在传输层对网络连接进行加密;
  • SSL协议提供的服务主要有:
1
2
3
1、认证用户和服务器,确保数据发送到正确的客户机和服务器;
2、加密数据以防止数据中途被窃取;
3、维护数据的完整性,确保数据在传输过程中不被改变。
  • 基于数据的安全性,笔者建议使用邮箱是设置SSL协议。
邮件发送的基本原理

截图来自谢希仁《计算机网络》

  • 1.发信人在用户代理上编辑邮件,并写清楚收件人的邮箱地址;
  • 2.用户代理根据发信人编辑的信息,生成一封符合邮件格式的邮件;
  • 3.用户代理把邮件发送到发信人的的邮件服务器上,邮件服务器上面有一个缓冲队列,发送到邮件服务器上面的邮件都会加入到缓冲队列中,等待邮件服务器上的SMTP客户端进行发送;
  • 4.发信人的邮件服务器使用SMTP协议把这封邮件发送到收件人的邮件服务器上(它会自动根据收件人的邮箱来分析出收件人的邮箱服务器);
  • 5.收件人的邮件服务器收到邮件后,把这封邮件放到收件人在这个服务器上的信箱中;
  • 6.收件人使用用户代理来收取邮件。首先用户代理使用POP3协议来连接收件人所在的邮件服务器,身份验证成功后,用户代理就可以把邮件服务器上面的收件人邮箱里面的邮件读取出来,并展示给收件人。
小结
  • 本文总结邮箱相关传输协议,以及不同协议之间的区别。熟悉了这些之后,就可以为后续的邮件开发提供基本的理论支持了。
参考文献

扫一扫下面的二维码,欢迎关注我的个人微信公众号攻城狮的动态(ID:iOSDevSkills),可在微信公众号进行留言,更多精彩技术文章,期待您的加入!一起讨论,一起成长!一起攻城狮!

公众号

Jack_lin wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!
坚持原创技术分享,您的支持将鼓励我继续创作!