2009-02-10 10:00:12 来源:CIO时代网
本文通过剖析邮件系统组成、各部分选型、系统架构分析及系统安全设置,比较完整地覆盖了一个邮件系统设计的全部过程,是企业选择或开发邮件系统的参考。包括邮件系统的选型和安全分析,邮件系统的具体设置和测试方法。
电子邮件英文名称为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仍有机会被侵入,仍然存在安全问题;加上它被设计成每隔一段时间才去查看一次邮件队列,因此收发邮件的性能较低。
(2)Qmail
Qmail是另一个Unix系统下的MTA程序,它被专门设计用来替换现有的、安全性和性能都不太令人满意的Sendmail。它的主要特点是安全、可靠和高效。Qmail设置简单、速度很快,经过互联网的长久检验,至今尚未发现任何安全漏洞,被公认为是安全的MTA程序,推荐使用。Qmail具有以下安全和可靠特性:
◆ Qmail采用标准的Unix模块化设计方法重建整个系统构架。它由若干个模块化的小程序组成,并由若干个独立账户执行,每项功能都由一个独立的程序运行,每个独立程序由一个独立账户运行,而且不需要任何Shell支持。
◆ Qmail完全没有使用特权用户账号,只使用多个普通低级用户账号(无Shell)将邮件处理过程分为多个进程分别执行,避免了直接以root用户身份运行后台程序,同时还禁止对特权用户(包括root、deamon等)直接发信。Qmail可以使用虚拟邮件用户收发信件,避免了系统用户的越权隐患。 Qmail系统中只有必要的程序才是setuid程序,以减少安全隐患。迄今为止,拥有setuid的程序未发现任何代码漏洞。
◆ Qmail的SMTP会话实时过滤技术(RBL实时处理机制)和SASL认证机制,在与SMTP客户机或服务器交互时,实时地检测发信主机IP及过滤邮件内容,查杀病毒。一旦发现有问题马上拒收,将病毒或垃圾邮件直接丢弃在进行队列之前,极大地保护了用户的邮箱安全,降低了垃圾邮件的数量,同时有效地缩短了邮件服务器的响应时间,更大程度提高性能和安全防御能力。
◆ Qmail使用先进、快速的信息队列及子目录循环来存储邮件消息。并且,它使用了比Mailbox更安全可靠的Maildir目录结构,以及经典的管道投递机制(快速的”|“管道处理),使Qmail具有极强的抗邮件风暴、抗DDoS攻击的能力,即使遭遇攻击也仅仅是降低邮件处理速度,而不会瘫痪甚至崩溃。即使在突然断电的状态下,仍能保存用户的信息不丢失,并能保证系统稳定运行。
◆ Qmail使用详细的信息递送日志,提供更多信息供管理员分析。它可以对同一个客户单位时间内连续发送的邮件数目或并发连接数目进行统计,一旦超出阀限,则应用防火墙规则拒绝为该客户提供服务或暂停正常响应,极大地降低了被DDoS攻击或由于客户大量发送垃圾邮件导致系统变慢或停止服务的可能性,有效杜绝了成为垃圾邮件攻击者或垃圾邮件被攻击对象。利用邮件服务器上已经存在的日志文件进行分析,可以自动智能化地将这些IP添加在”短时间内发送大量垃圾包的主机IP“中,从IP链路上杜绝传输。
◆ 模块化的设计使Qmail可以方便地与各种杀毒软件、过滤系统、识别系统、反垃圾邮件模块等紧密结合,协同工作,进行高级邮件过滤,包括过滤邮件信头、邮件内容、判断垃圾等级,以及配合系统级和用户级的黑、白名单过滤等,具有较高的灵活性和可升级性。
◆ Qmail配置简单。它使用了多个小的配置文件,每种特性都有一个对应的配置文件。这种设置方式不仅避免了配置文件过大的问题,而且不需要管理员过多地配置工作就可以保证一个安全的邮件服务器环境。其缺点是不熟练的管理员需要花些时间去熟悉配置文件与特性的对应关系。
◆ Qmail本身支持虚拟邮件域,也可以通过vpopmail使虚拟域更易于使用和维护。同时,由于vpopmail支持Oracle、Sybase、MySQL及LDAP方式的用户信息存储,使得建立和维护大型分布式系统成为可能。
Qmail并不是遵循GPL版权发布,但是仍然与其它开源软件一样可以被自由下载、修改和使用。注意,为了保证Qmail的纯洁性,如果要公开发布自行修改的Qmail,必须经过作者同意。
(3)Postfix
Postfix 是近来出现的另一个优秀的MTA软件。由于它的设计吸取了前辈们的优点,如Sendmail的丰富功能特点、Qmail的快速队列机制、Maildir的存储结构和独立的模块设计等。从这些先进的体系设计结构上不难看出Postfix的优势,但是它的起步时间较短,随着其在互联网的广泛应用和检验正在不断成熟。
Postfix的主要特点是快速、安全、易于管理,同时尽量保持与Sendmail良好的兼容性。Postfix同样采用模块化的设计,只需要一个真实用户来运行所有的模块。Postfix在系统安全方面考虑得很多,它的所有模块都以较低的权限运行,彼此分离,不需要setuid程序,甚至可以运行在安全程度很高的chroot环境中。
即使被入侵破坏了某一个Postfix模块,也不能完全控制邮件服务器。Postfix最大的优点是配置上的简便性,它既不使用一个庞大复杂的配置文件,也不使用多个小的配置文件。
Postfix 的配置主要使用main.cf和master.cf两个文本文件,使用中心化的配置文件和容易理解的配置指令。Postfix和Sendmail的兼容性非常好,甚至可以直接使用Sendmail的配置文件,这为想从Sendmail转换到Postfix的用户提供了便利。
需要注意的是,Postfix是IBM资助下的开源软件,它遵循IBM的开放源代码许可证,用户可以自由地分发该软件进行二次开发。它惟一的限制是必须将修改反馈给 IBM公司。IBM的版权声明中表示,它可以随时取消用户使用和发布Postfix的权力,对于想要实现商业应用的企业则需要密切关注相应的信息。
3.邮件分发代理MDA
Unix 下常用的MDA软件包括binmail、Procmail和Maildrop。它们除了具有本地投递的功能外,还增加了邮件过滤、黑白名单、自动分类和处理等功能,能够根据用户要求对邮件头和邮件体的内容进行过滤,防止通过电子邮件传播病毒,或者帮助用户阻挡广告和宣传品类的垃圾邮件,防止通过邮件对系统的恶意攻击,并帮助管理用户接收到的邮件。
binmail的系统命令为/bin/mail,该MDA程序简单,不需要进行配置,因而不能完全满足用户的需要。相对而言,Procmail使用了类似于”处方“的用户配置文件,通过定制正则表达式实现邮件的分发。
它的缺点是不支持Maildir邮箱格式,且编程语法太复杂,不易被人掌握和使用。与Procmail相比,Maildrop更新一些,除了支持传统邮箱格式,还支持Qmail的Maildir邮件存储格式,并且它的编程语言简单易懂,容易上手。因此,推荐使用Maildrop来实现邮件的分发功能。
免责声明:本网站(http://www.ciotimes.com/)内容主要来自原创、合作媒体供稿和第三方投稿,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,读者在使用前请进一步核实,并对任何自主决定的行为负责。本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。