邮件系统的选型与架构专题(1)

12/3/2006来源:Qmail人气:6739

本文通过剖析邮件系统组成、各部分选型、系统架构分析及系统安全设置,比较完整地覆盖了一个邮件系统设计的全部过程,是企业选择或开发邮件系统的参考。全文分为两部分,上篇包括邮件系统的选型和安全分析,下篇则是邮件系统的具体设置和测试方法。

电子邮件英文名称为E-mail,诞生于上世纪70年代初。它随着互联网应用的发展逐步成熟,演变成为一个除文字信息外,还可以传送声音、图片、图像、文档等多媒体信息的复杂而丰富的系统。时至今日,电子邮件已成为人们喜爱的通信方式,并逐渐成为企、事业单位加强信息交流和客户关系管理的重要手段。

电子邮件更为我国的网民们带来了前所未有的便利。在我国,电子邮件的应用迅速发展,免费邮箱注册的人数大幅飙升。同时,早期邮件系统所暴露的缺陷日益突出。

随着用户数目的增加,系统性能急剧下降,系统不能方便地扩充,百万级的容量无法实现;在复杂的环境中,邮件队列不够健壮,导致系统不稳定,甚至丢失邮件;系统没有足够强的反垃圾邮件能力,导致垃圾邮件横行;系统结构不能适应当今的需求,安全性不高导致商业机密泄露;系统缺乏本地化,界面不友好,安装使用不方便,处理多字节(如中文)时经常出现问题,各种编码之间的转换比较困难等,都是邮件系统存在的问题。

打造一个适合的内外信息交换平台,便于实现自主管理、员工和客户间便捷的沟通、交流与协作。因此,如何选择一个好的邮件系统,如何建立一个功能强大、性能稳定的邮件系统值得企业关注。特别是前期的分析、选型工作,更是其中非常重要和必要的步骤。

邮件系统组成部分的分析与选型

首先,一个完整的邮件系统除了底层操作系统以外,还包括邮件传输代理(Mail Transfer Agent,MTA)、邮件分发代理(Mail Delivery Agent,MDA)和邮件用户代理(Mail User Agent,MUA)三个功能部分(如图1)。



图1 邮件系统功能结构图


其次,在分析和架构过程中要紧密把握邮件系统中最重要的三个特性,体系结构、安全性和处理性能。只有牢牢把握上述几个特点,将其作为系统选型的参考准则,才能成功建立一个令人满意的邮件系统。

邮件系统的投递和分发是一个比较复杂的过程,下面就从邮件系统的几个功能模块入手,剖析整个邮件系统的构架。
1.操作系统

操作系统作为整个邮件系统服务器的底层支持,安全性至关重要。在这一方面,Unix类操作系统先天就足够安全、足够健壮。至于具体应用中是选择Unix、BSD或linux操作系统,可以根据具体情况来选择合适的系统。

2.邮件传输代理MTA

MTA是负责处理所有接收和发送邮件的程序。对于每一个外发的邮件,MTA决定接收方的目的地。如果目的地是本地主机,那么MTA将把邮件直接发送到本地邮箱,或者交给本地的MDA进行投递。如果目的地是远程主机,则MTA必须先和远程主机通信,得到远程主机的许可后建立通信链路,使用简单邮件传输协议(Simple Mail Transfer PRotocol,SMTP)传递邮件。

从上面的描述看,MTA好像并不是一个复杂的程序,其实不然。一个好的MTA程序必须具备上文提到的三个特征。Unix环境下可供选择的MTA程序很多,通过互联网的检验并被广泛使用的有Sendmail、Qmail和Postfix三种。下面分别分析这三种MTA程序。

(1)Sendmail

Sendmail MTA是使用最广泛的MTA程序之一。它是Eric Allman于1979年在伯克利大学时所写,它的成长一直伴随着Unix的发展,是目前最古老的MTA程序。Sendmail的流行来源于其通用性,它的很多标准特性现在已经成为邮件系统的标配,例如虚拟域、转发、用户别名、邮件列表及伪装等。

然而,Sendmail也存在一些明显的不足。由于当初互联网刚刚起步,黑客也相对稀罕,因而,Sendmail的设计对安全性考虑很少,在大多数系统中都是以root权限运行,而且程序设计本身Bug较多,很容易被黑客利用,对系统安全造成严重影响。

此外,由于早期用户数量和邮件数量都相对要小,Sendmail的系统结构并不适合较大的负载,需要进行复杂的调整。另外,Sendmail的配置保存在单一文件中,并且使用了自定义的宏和正则表达式,使得文件冗长晦涩、不易理解,被认为是对系统管理员的一大挑战。

由于这些缺陷,Sendmail一直被后门问题和安全漏洞所困扰。很明显,老的Sendmail已经不能适应新的应用环境。在经过多次程序修补后,Eric Allman决定重新改写Sendmail。新版本的Sendmail不仅去除了绝大部分的漏洞,还增加了很多新功能,如垃圾邮件控制等。

为简化Sendmail配置文件的创建,Sendmail使用了m4宏预处理器,通过使用宏代换简化配置。为了保证Sendmail的安全,Eric Allman在配置文件权限、执行角色权限和受信应用控制等方面做了大量的工作。

但遗憾的是,由于Sendmail先天设计存在的问题,改版后的MTA仍有机会被侵入,仍然存在安全问题;加上它被设计成每隔一段时间才去查看一次邮件队列,因此收发邮件的性能较低。