这段时间公司需要使用自己的域名来构建一个邮箱,于是想了解下邮箱系统,发现里面的水很深,本文将记录下这些新知识。

邮箱系统组成(宏观)

 ------------------------                ------------------------
|         client         |              |         client         |
 ------------------------                ------------------------
    ↑               |                       |               ↑
    |               |                       |               |
    |               ↓                       ↓               |
 --------        --------                --------        --------
|        |      |        | -----------> |        |      |        | 
|POP/IMAP|      |  SMTP  |              |  SMTP  |      |POP/IMAP|
|        |      |        | <----------- |        |      |        |
 --------        --------                --------        -------- 
    ↑               |                       |               ↑
    |               |                       |               |
    |               ↓                       ↓               |
 ------------------------                ------------------------
|         mailbox        |              |         mailbox        |
 ------------------------                ------------------------
 
 
  • client - 邮件客户端,包含本地客户端(foxmail、outlook、Mail等)和web客户端
  • POP/IMAP - 接收服务器,主要用于客户端读取存在store中的邮件
  • SMTP - 发送服务器,用于收发邮件及存储
  • mailbox - 存储邮件

PS: 通过上图,大家应该比较容易理解为何客户端需要配置发送服务器及接收服务器

邮箱系统组成(微观)

从微观上讲,一个邮箱系统包含MTA、MDA、mailbox、POP/IMAP、MUA、MSA六个部分组成

 ------------------------                ------------------------
|  MUA             MSA   |              |  MSA             MUA   |
 ------------------------                ------------------------
    ↑                  |                  |                 ↑
    |                  |                  |                 |
    |                  ↓                  ↓                 |
 --------        --------                --------        --------
|        |      |        | -----------> |        |      |        | 
|POP/IMAP|      |MDA  MTA|              |MTA  MDA|      |POP/IMAP|
|        |      |        | <----------- |        |      |        |
 --------        --------                --------        -------- 
    ↑             |                            |            ↑
    |             |                            |            |
    |             ↓                            ↓            |
 ------------------------                ------------------------
|         mailbox        |              |         mailbox        |
 ------------------------                ------------------------
 
  • MTA - Mail Transfer Agent,向其他MTA发送邮件,接收或拒收其他MTA发来的邮件,属于SMTP
  • MDA - Mail Delivery Agent,把本地MTA从远程发件人MTA接收到的邮件投递到用户的邮箱(mailbox),属于SMTP
  • mailbox - 存储用户的邮件
  • POP/IMAP - 福州把mailbox的邮件传递给MUA,供用户查看
  • MUA - Mail User Agent,即对应上方的client
  • MSA - 用于客户端发邮件

MX记录

在邮件系统中,有一个非常重要的东西,那就是MX记录,什么是MX记录? 先提个问题,比如我要给12345678@qq.com 发送邮件,按照流程:客户端发送邮件到我们的SMTP,之后我们SMTP发到对方的SMTP,可是这里有个问题,我们的SMTP怎么知道往哪个SMTP呢? SMTP仅仅只知道12345678@qq.com,其他一无所知.是谁完成这里面的红娘角色呢,当然就是MX记录.

MX即Mail Exchanger,指邮件交换记录,用于电子邮件系统发邮件时根据 收信人的地址后缀来定位邮件服务器,即每一种邮箱后缀都会对应至少一个MX记录,这条MX记录将包含STMP服务器地址及优先级,我们来测试几个常见邮箱后缀

StarnetdeMacBook-Pro:Desktop starnet$ dig qq.com mx +short
30 mx1.qq.com.
20 mx2.qq.com.
10 mx3.qq.com.
You have new mail in /var/mail/starnet
StarnetdeMacBook-Pro:Desktop starnet$ dig 126.com mx +short
10 126mx03.mxmail.netease.com.
10 126mx02.mxmail.netease.com.
10 126mx01.mxmail.netease.com.
50 126mx00.mxmail.netease.com.
StarnetdeMacBook-Pro:Desktop starnet$ dig 163.com mx +short
10 163mx02.mxmail.netease.com.
10 163mx03.mxmail.netease.com.
10 163mx01.mxmail.netease.com.
50 163mx00.mxmail.netease.com.
StarnetdeMacBook-Pro:Desktop starnet$ dig gmail.com mx +short
20 alt2.gmail-smtp-in.l.google.com.
5 gmail-smtp-in.l.google.com.
30 alt3.gmail-smtp-in.l.google.com.
10 alt1.gmail-smtp-in.l.google.com.
40 alt4.gmail-smtp-in.l.google.com.

PS: 前一个数字表示优先级,后一个表示SMTP域名

协议

  • SMTP协议 - MTA之间通信协议及MUA与MSA之间通信协议,一般位于TCP 25端口
  • POP3协议 - 邮箱查看协议
  • IMAP协议 - 邮箱查看协议,是POP3改进版,可以实现邮件同步,如在一台客户端删除,则其他客户端也会相应删除

常用服务端软件

  • Sendmail - SMTP角色
  • Postfix - Sendmail改进版,主要解决Sendmail效率低问题
  • Dovecot - POP3/IMAP服务端