一、电子邮件系统由五部分组成:

MUA(Mail User Agent)邮件用户代理

MUA是一个邮件系统的客户端程序,它提供了阅读、发送和接收电子邮件的用户接口。

常用工具:foxmail、outlook、webmail、mail命令等。发送邮件使用协议:smtp

MTA(Mail Transfer Agent)邮件传送代理

MTA负责邮件的存储和转发(store and forward)。MTA监视用户代理的请求,根据电子邮件的目标地址找出对应的邮件服务器,将信件在服务器之间传输并且将接受到的邮件进行缓冲。

常用工具:Windows下:Exchange、Linux下:sendmail、Postfix、Qmail等。

MSA(Mail Submition Agent)邮件提交代理

MSA负责消息由MTA发送之前必须完成的所有准备工作和错误检测,MSA就像在MUA和MTA之间插入了一个头脑清醒的检测员对所有的主机名、从MUA得到的信息头等信息进行检测。当服务器同事接收太多的发送请求时将其排成队列,然后按照一定的速度将其提交给MTA。通常在大型网站中使用,也可以在这里做邮件的检索、过滤垃圾邮件等。

MDA(Mail Delivery Agent)邮件投递代理

MDA从MTA接收邮件并进行适当的本地投递,可以投递到一个本地用户、一个邮件列表、一个文件或是一个程序。常用工具:procmail、maildrop等。可以实现垃圾邮件过滤、病毒邮件过滤等。

MRA/MAA(Mail Retrieval/Access Agent)邮件访问代理

MAA用于将用户连接到系统邮件库,使用POP或IMAP协议收取邮件。

常用工具:UW-IMAP、Cyrus-IMAP、Courier-IMAP等。

二、邮件收发过程:

    开始,用邮件用户代理(MUA)创建了一封电子邮件,邮件创建后被送到了该用户的邮件传输代理(MTA)——传送过程使用的是SMTP协议。然后MTA检查该邮件的收信人,向DNS服务器查询接收方MTA对应的域名,然后将邮件发送至接收方MTA——使用的仍然是SMTP协议。这时,邮件已经从远程的用户工作站发送到了他的ISP的邮件服务器,并且转发到了您的域中。

    然而,邮件在传输过程中很有可能被转移到另外一个MTA,但最终会有某个MTA接管这封邮件,并且负责投递。这时,MTA会将邮件传递给某个邮件投递代理(MDA),MDA的主要作用就是将邮件保存到本地磁盘,有些MDA也可以完成其他功能,比如邮件过滤或将邮件直接投递到子文件夹。需要注意的是,完成将邮件存放在服务器上这个功能的是MDA。

    最后,查收邮件。运行MUA,您可以使用IMAP协议或POP3协议来向邮件服务器查询您的邮件。邮件服务器会先确认您的身份,然后从邮件存储区检索邮件列表,并将列表返回给MUA。现在您就可以阅读邮件了。

三、说明:

1、MUA (Mail User Agent)

从MTA获取邮件和通过MTA发送邮件的工具,它一般支持smtp和pop协议。如:outlook,foxmail

2、MTA (Mail Transport Agent)

装有MTA的服务器就可以称之为邮件服务器。MTA的主要功能有三个:

通过pop协议与MUA通信,把MTA邮件箱中的邮件传递给MUA(也就是MUA在MTA上取邮件的过程);[个人感觉这里把MAA合并MTA了]

通过smtp协议,接收用户通过MUA起草的新邮件,并准备发送邮件;

通过smtp协议,在网络上的不同MTA间,选择合适路由,并最终将邮件送达目标邮件服务器(也就是邮件在源服务器到目标服务器的传递过程)。

3、MDA (Mail Delivery Agent)

可以看做是MTA的一个子模块,实现邮件传递、分析、过滤、自动回复等功能

4、WEB邮件

    现在很多人不使用MUA,大部分的邮件编写和收发都是通过网页的方式,所以在服务器上又增加了一个web服务器,在web服务器中通常使用CGI的程序,通过验证用户的身份然后提供web页面让其收发邮件的。其过程就是只省去了从服务器下载和发送的过程。

    由于早期的网络不可靠,为了尽量的使邮件能够发送到对方的主机,都开启了开放式中继,即不是到本机的将帮忙转发。但这样可能被利用,所以后来又增加了 SASL,这是一种协议,Simple Authentication Security Layer简单认证安全层。功能:当客户端发送邮件到服务器,先查看原账号和密码是否是本服务器上的,如果是则将其转发。SASL是个软件,有saslauthd提供的,默认是没有启动的。为保证过滤垃圾邮件,还要对已经认证过的用户的邮件进行过滤,还有有病毒邮件过滤器,以过滤附件中的病毒。

5、下面说明创建一个linux的mail服务器:

创建DNS的MX记录

创建SMTP

部署SASL认证用户

部署WEB服务器、数据库服务器

安装呼叫器、垃圾邮件过滤器等