上面的架构图中包含两组邮件系统、两个客户端和一个DNS服务器,其中的邮件系统是企业中比较经典的架构形式,下面我将依据此图来简述邮件服务器的工作流程。
名词解释:
- MUA 接收邮件所使用的邮件客户端,使用IMAP或POP3协议与服务器通信,常见的有:outlook、foxmail;
- MTA 通过SMTP协议发送、转发邮件,常见的有:sendmail、postfix、qmail;
- MDA 将MTA接收到的邮件保存到磁盘或指定地方,通常会进行垃圾邮件及病毒扫描;
- MRA 负责实现IMAP与POP3协议,与MUA进行交互;
- SMTP 传输发送邮件所使用的标准协议;
- IMAP 接收邮件使用的标准协议之一;
- POP3 接收邮件使用的标准协议之一;
- MailBox 用户邮箱;
- cyrus-SASL及courier-authlib 提供用户认证相关的支持。
- SQL 数据库,用于存储用户身份信息
前面的架构图中,MUA想发送邮件,就要将邮件通过SMTP协议送到MTA上,MTA通常会要求用户认证身份(也可不认证),认证通常使用SASL,认证源可以是像上面的架构图中那样使用SQL数据库也可以使用其他方式。MTA收到邮件后会检查邮件目的地址的邮件域,此时会产生两种情况。
情况一,目的邮件域是本服务器:
如果发现是本服务器的邮件域则将邮件送到MDA,由MDA将其投递到用户的邮箱(MailBox)中。最后用户在MUA上使用POP3/IMAP协议链接MRA,MRA通常也会要求用户认证身份,其认证源同MTA一样可以是SQL也可以是其他方式,若认证通过,则允许MUA读取邮件信息。
情况二,目的邮件域非本服务器:
若是邮件域是其他邮件服务器的,则MTA会发送UDP报文向DNS服务器查询邮件域对应的邮件主机,并最终解析出其IP地址,随后MTA会查询本服务器的转发控制策略,若允许转发,则将邮件转发到该域对应的服务器上,最终会重复情况一中MTA收到邮件后的处理方式。