邮箱开发(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、维护数据的完整性,确保数据在传输过程中不被改变。
  • 基于数据的安全性,笔者建议使用邮箱是设置SSL协议。
邮件发送的基本原理

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

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏晓晨的专栏

IdentityServer4实战 - AccessToken 生命周期分析

1572
来自专栏IT杂记

Git挽救丢失的代码

    昨天晚上头脑一发热,丢失了之前忘记提交的代码,情况如下:     有两个分支master,develop,使用develop作为开发分支,前段时间开发了...

1865
来自专栏月牙寂

k8s源码分析-----kubelet(1)主要流程

第一时间获取文章,可以关注本人公众号 月牙寂道长 yueyajidaozhang

4695
来自专栏张戈的专栏

解决dos2unix/unix2dos报错,并在家目录下生成u2dtmp*文件问题

最近接到一个 case:大数据分析那边反馈我们这边推送的数据同比去年同期少了很多。这是很不正常的,因为业务一直在增长。 ? 于是,我开始顺藤摸瓜的跟进。一开始就...

5476
来自专栏卡少编程之旅

接触到的git的三个重要知识点

34210
来自专栏小樱的经验随笔

BugkuCTF 文件上传测试

前言 写了这么久的web题,算是把它基础部分都刷完了一遍,以下的几天将持续更新BugkuCTF WEB部分的题解,为了不影响阅读,所以每道题的题解都以单独一篇文...

3578
来自专栏程序猿DD

八幅漫画理解使用 JWT 设计的单点登录系统

上次在《JSON Web Token - 在Web应用间安全地传递信息》中我提到了JSON Web Token可以用来设计单点登录系统。我尝试用八幅漫画先让大家...

1123
来自专栏FreeBuf

XDB缓冲区溢出漏洞竟然可以颠覆整个数据库?

本文将向大家展示一种黑客入侵数据库的方法,希望能引起大家的警惕。想知道黑客入侵数据库的方法首先要深究黑客入侵数据库的目的。 经过调查发现黑客入侵者入侵数据库的最...

2076
来自专栏容器化

k8s实战之从私有仓库拉取镜像 - kubernetes

7861
来自专栏FreeBuf

如何对iOS App进行打补丁和重新签名

有没有想过在非越狱设备上运行修改后的iOS二进制文件?比如,你可以使用该技术插装app,以进行动态分析。又或者你需要进行GPS欺骗,从而可以在锁区玩Pokemo...

2628

扫码关注云+社区

领取腾讯云代金券