邮件服务器2---postfix的收发过程

一、邮件服务器

在开源邮件服务器上有三个比较常见的MTA,分别是Sendmail、Qmail、Postfix。
Sendmail于1983年诞生,在Centos6之前,默认安装的是sendmail。由于一些历史遗留问题,比如配置文件复杂,阻碍了sendmail的发展。虽然有这样那样的问题,但是如果你的技术够强大或者经验够丰富,调教的好sendmail,效率以及性能也是非常可观的。
qmail,体积较小是最明显的特点,初衷是为了替代Sendmail。相对于sendmail来说,它的配置更加简单,补丁和插件也是非常的多。在版本上,社区已经很多年没有更新qmail了。换句话说,你得忍受qmail版本停滞不前的问题,对于一些新的技术,qmail可能支持的不太好。如果你技术能力够强,懂编程,可以对它进行更新和补丁修复,那qmail还是一个不错的邮件服务器。
Postfix,于1990年诞生,是一名任职于IBM的荷兰籍研究员Wietse Venema为了改良sendmail邮件服务器而产生的。最初,Postfix是作为Sendmail的一个组件存在的,后来因为Sendmail本身的问题,postfix本身被独立出来。也就是说,Postfix自诞生的那一刻起,就肩负了解决sendmail历史遗留问题的重任。postfix兼顾了效率、功能、性能、扩展、灵活配置等等特点,使得配置postfix相对来说更加的简单。Centos6和Centos7默认安装的是Postfix。

商业的邮件服务器有微软的Exchange、Coremail等等,这里不展开。

二、邮件的详细运行过程

1、首先是客户端的发邮件过程,如下图所示:
邮件服务器2---postfix的收发过程
通过客户端发送邮件,到达Postfix,Postfix会检查是发往本域的还是外域的。如果是本域的,则存储到本域的Mail box(邮箱),如果不是则转发给其他的MTA,但是转发之前需要从数据库中验证用户的身份。如果通过验证,则转发给其他MTA,如果验证不通过,则拒绝转发。验证机制采用的是SASL(Simple Authentication and Security Layer,中译“简单身份验证和安全层”)一个函数库,函数库没办法直接访问数据库,需要加入一个中间层才可以,也就是这里的Courier-authlib。

2、客户端接收邮件的过程
邮件服务器2---postfix的收发过程
当另外一个MUA需要接收邮件的时候,需要有MRA。前面说过,MRA主要负责实现IMAP或POP3协议,与MUA进行交互,将邮件通过IMAP或POP3协议传送给邮件客户端。在Linux当中,用的最多的MRA是dovecot。同样的,需要验证身份才能正确的收取邮件。

3、WEB的收发邮件过程
邮件服务器2---postfix的收发过程
Extmail是一个基于浏览器搭建的邮件服务器,它的底层是Postfix,且加入了额外的补充功能。发送的时候,首先需要web登录验证,发往本域的存储到本域Mail box中,发往外域的则交给其他MTA。收信时,验证通过才能浏览,由Mail box传递给Extmail,最后在用户的浏览器中显示。

在Extmail中,还有一个Extman后台管理邮箱的界面,它是给我们运维人员来使用的。可以添加、删除、管理邮箱的部分功能以及用户,类似于免费企业邮箱那样的管理。

邮件服务器2---postfix的收发过程

上一篇:快速排序


下一篇:Node.JS 入门 --- SendMail