1 什么是邮件?
不讨论邮件以外的任何定义,从邮件本身来看只干2件事:收信和发信,细点说是找到自己的邮箱收信和注明别人的信箱地址发信。而电子邮件不过是把现实的地址映射为:
2 什么是邮件的格式?
1 | from: <username>@<domain> |
以上是邮件的最终的文本传输形式,分别是发件人地址收件、收件人地址、标题、空行、邮件正文和”.”。其中空行把邮件又划分为邮件头(空行以上)和邮件正文(空行下),又用”.”代表邮件的结束。
3 电子邮件是如何实现收发的?
3.1 邮件的发送
邮件的发送是由smtp(Simple Mail Transfer Protocol)来传输的,首先邮件服务器会跟邮件客户端建立连接并进行登录验证通过后把邮件发送到服务器上,再读取邮件的头的收件地址的域名后,再根据这个域名通过smtp把邮件发送到这域名的MX解析指向IP主机上,如果没有MX记录则用A记录的指向。
sequenceDiagram
Title: 邮件的发送时序图
clientA@host1.com客户端 ->> host1.com主机 :sent to :clientB@host2.com
host1.com主机 ->> host2.com主机: 根据邮件地址进行转发对应主机上
host2.com主机 ->> host1.com主机: 250 OK
host1.com主机 ->> clientA@host1.com客户端: 250 OK
Note right of host2.com主机: 整个流程的发送协议都是使用smtp并基于公网主机的25端口IO.
3.2 使用telnet连接smtp服务器发送邮件
1 | $ telnet smtp.163.com 25 # 连接smtp服务器 |
3.3 邮件的接收
邮件的接收是通过IMAP(Internet Mail Access Protocol)
或POP3()协议进行接收的。