发送邮件的原理
主要是两个协议,SMTP和POP3
SMTP:Simple Mail Transfer Protocol,即简单邮件传输协议,发送邮件的协议,默认端口,25
POP3:Post Office Protocol 3,即邮局协议,接收邮件的协议,默认端口,110
知道了这两个协议,下面来说说邮件发送和接收的原理图,分两种,相同邮件(QQ邮箱给QQ邮箱)和不同邮件(QQ邮箱给163邮箱)是不一样的。
解释:
为了方便起见,将新浪邮箱,[email protected]称为用户A,将搜狐邮箱,[email protected] 称为用户B
用户A(新浪邮箱,[email protected])给用户B(搜狐邮箱,[email protected])发送一封邮件,那么整个过程就为图中的实线部分,用户A通过OutLook(浏览器或者客户端)登录自己的邮箱帐号,编写邮件,使用Smtp协议发送给Sina的邮件服务器中的Smtp服务器(专门用来发送的服务器),然后在通过SMTP协议,传输给Sohu的邮件服务器中的Smtp服务器,然后通过Sohu的Smtp服务器将邮件发送给用户B的存储设备进行存储(每个用户都会有一个存储空间用来存储邮件的),到这里,用户A就相当于发送成功了,因为已经到达了目的地,如果B用户需要查看邮件内容,必须通过POP3服务器将从自己的存储设备中拿到,然后返回到浏览器或者客户端中显示。
用户B给用户A发送一封邮件,那么整个过程就为图中的虚线部分,是和A给B发一样的步骤
用户A给一个同样使用新浪邮箱的用户C发送一封邮件,那么其过程就简单的多了,先通过Smtp服务器,然后smtp服务器会将其发送到用户C的存储设备上,A发送邮件就成功了,用户C要显示自己邮箱中的邮件,那么就通过POP3服务器从自己存储设备中拿取所有邮件进行查看
SMTP, POP3, IMAP 都是mail server上的service
简单地说,SMTP管‘发’, POP3/IMAP管‘收’。
举个例子,你坐在电脑边用mail client写完邮件,点击‘发送’。这时你的mail client会发消息给邮件服务器上的SMTP service。这时有两种情况:- 如果邮件的收信人也是处于同一个domain,比如从http://163.com发送给163的邮箱,SMTP
service只需要转给local的POP3 Service即可
- 如果邮件收信人是另外的domain,比如http://163.com发送给http://sina.com, SMTP service需要通过询问DNS, 找到属于sina的SMTP service的host
SMTP service收到邮件后转给负责接收邮件的POP3 service
POP3 service和IMAP的区别主要是:- POP3是比较老的protocol,主要为了解决本地机器和远程邮件服务器链接的问题,每次邮件会download到本地机器,然后从远程邮件服务器上删掉(当然特殊config除外),然后进行本地编辑。这样的问题是如果从多个终端链接服务器,只有第一个下载的能看到,现在pop4正在讨论中
- IMAP是比较新的(好吧,好像也是80年代的产物)protocol,可以将邮件分文件夹整理,然后这些信息也存在远程的邮件服务器上,读取邮件后,服务器上不删除。原理上IMAP应该是相当于oneline编辑,但现在的mail client基本都有在本地存copy的功能