计算机网络协议系列 - 如何通过 POP 及 IMAP 协议实现邮件接收

- 1 min

计算机网络协议系列(二十九)

POP

上篇分享介绍了电子邮件的起源,以及如何通过 SMTP 协议发送邮件,SMTP 的一个不利之处在于它支持的是发送端主机的行为,而不是根据接收端的请求进行发送的行为,因此无法解决用户一开机就能接收到邮件,为了解决这个问题,引入了 POP(Post Office Protocol,即邮局协议)协议,该协议是一种用于接收电子邮件的协议,现在用的是第三版,所以我们经常会看到它的简称 POP3。

发送端的邮件根据 SMTP 协议将被转发给一直处于插电状态的 POP 服务器,客户端再根据 POP 协议从 POP 服务器接收对方放过来的邮件。在这个过程中,为了防止他人盗窃邮件内容,还要做用户验证。

POP 与 SMTP 一样,也是在客户端与服务器之间通过建立一个 TCP 连接完成相应操作,POP 服务端监听端口是 110,常见的 POP 操作命令及服务端响应码如下:

img

img

同样,我们可以在 TELNET 中通过上述命令模拟邮件收取操作:

img

在邮件客户端软件中收取邮件就更简单了,只要你配置了正确的 POP 服务器与对应的用户名和密码,每次打开邮件客户端都会自动收取邮件。

IMAP

此外,我们在配置邮件客户端的时候,经常还会看到 IMAP 选项:

img

IMAP (Internet Message Access Protocol,互联网邮件访问协议)也是接收电子邮件的协议。

它与 POP 协议的区别在于:在 POP 中邮件由客户端管理,而在 IMAP 中邮件由服务器管理。因此,在使用 IMAP 时,可以不必从服务器下载所有邮件就可以阅读。因为 IMAP 是在服务器上处理 MIME 信息,所以它可以实现一封邮件中有10个附件时只下载其中7个这样的功能,这在带宽较窄的线路上非常有用。而且 IMAP 在服务器上对「已读/未读」信息和邮件进行分类管理,因此,即使在不同的计算机上打开邮箱,也能保持同步,这样一来,人们就可以通过个人电脑、手机、公司电脑连接到 IMAP 服务器后接收邮件,并且同步状态。

显然,在多种异构终端中,使用 IMAP 协议收取电子邮件更方便。

IMAP 服务端监听端口一般是 143,我们可以在 TELNET 终端中通过命令模拟通过 IMAP 收取邮件:

img

常见的 IMAP 相关指令如下:

img

rss facebook twitter github gitlab youtube mail spotify lastfm instagram linkedin google google-plus pinterest medium vimeo stackoverflow reddit quora quora