另外,对于有数以万计的用户的邮件服务器来说,使用文件来存储如匹配用户发 出邮件地址(例如bob发出的信的发信人修改为
sales@example.org)。对于大量用 户来讲,该文件就会变的很巨大,从而影响系统的运行效率。而Postfix则可以 和一个数据库后台集成起来(当前只支持MySQL)来存放其配置信息,数据库方式 要比文件方式在可扩展性方面强大很多。
遵从IBM的开放源代码版权许可证 ,用户可以自由地分发该软件,进行二次开发。其唯一的限制就是必须将对 Postfix做的修改返回给IBM公司。因为IBM资助了Wietse的开发。
6.与Qmail的比较
Qmail的缺点就是配置方式和 Sendmail不一致,不容易维护。而且Qmail的版权许可证含义非常模糊,甚至没 有和软件一起发布。应用作者的话:若你希望分发自己修改版本的Qmail,你必 须得到我的许可。
二、Qmail
Qmail是有Dan Bernstein开发的可以自由 下载的MTA,其第一个beta版本0.70.7发布于1996年1月24日,1997年2月发布了 1.0版,当前版本是1.03。
1.Qmail的特点
安全性:为了验证Qmail的安全性,Qmail的支持者甚至出资$1000悬赏寻找 Qmail的安全漏洞,一年以后,该奖金没有被领取,而被捐献给自由软件基金会 。目前,Qmail的作者也出资$500来寻求Qmail的安全漏洞。
速度:Qmail在一个中等规模的系统可以投递大约百万封邮件,甚至在一 台486一天上能处理超过10万封邮件,起支持并行投递。Qmail支持邮件的并行投 递,同时可以投递大约20封邮件。目前邮件投递的瓶颈在于SMTP协议,通过STMP 向另外一台互联网主机投递一封电子邮件大约需要花费10多秒钟。Qmail的作者 提出了QMTP(Quick Mail Transfer Protocol)来加速邮件的投递,并且在Qmail中得到支持。 Qmail的设计目标是在一台16M的机器上最终达到每天可以投递大约百万级数目的 邮件。
可靠性:为了保证可靠性,Qmail只有在邮件被正确地写入到磁盘才返回 处理成功的结果,这样即使在磁盘写入中发生系统崩溃或断电等情况,也可以保 证邮件不被丢失,而是重新投递。
特别简单的虚拟域管理:甚至有一个第三方开发的称为vchkpw的add-on来支持虚 拟POP域。使用这个软件包,POP3用户不需要具有系统的正式帐户。使用ezmlm支持用户自控制的邮件列表功能。
邮件用户和系统帐户隔离,为用户提供邮件帐户不需要为其设置系统帐户 ,从而增加了安全性。
2.Sendmail VS Qmail
首先:sendmail是 发展历史悠久的MTA,当前的版本是8.10.2。当然,Sendmail在可移植性、稳定 性及确保没有bug方面有一定的保证。但是Internet上有很多帖子都是关于如果 攻击Sendmail,这对于管理员来说是一个噩梦。Sendmail在发展过程中产生了一批经验丰富的Sendmail管理员,并且 Sendmail有大量完整的文档资料,除了 Sendmail的宝典: OReillys sendmail book written by Bryan Costales with Eric Allman以外,网络上有大量的tutorial、FAQ和其他的资源。这些大量的文档对于很好的利用 Sendmail的各种特色功能是非常重 要的。但是Sendmai当前来说是一个成熟的MTA。
当然,Sendmail具有一些缺点,其特色功 能过多而导致配置文件的复杂性。当然,通过使用m4宏使配置文件的生成变的容 易很多。但是,要掌握所有的配置选项是一个很不容易的事情。Sendmail在过去 的版本中出现过很多安全漏洞,所以使管理员不得不赶快升级版本。而且 Sendmail的流行性也使其成为攻击的目标,这有好处也有坏处:这意味着安全漏 洞可以很快地被发现,但是同样使Sendmail更加稳定和安全。另外一个问题是 Sendmail一般缺省配置都是具有最小的安全特性,从而使Sendmail往往容易被攻 击。如果使用Sendmail,应该确保明白每个打开的选项的含义和影响。一旦你理 解了Sendmail的工作原理,就Sendmail的安装和维护就变的非常容易了。通过 Sendmail的配置文件,用户实现完成一切可以想象得到的需求。
Qmail是一个选择, 其在设计实现中特别考虑了安全问题。如果你需要一个快速的解决方案如,一个 安全的邮件网关,则Qmail是一个很好的选择。Qmail和Sendmail的配置文件完全 不同。而对于Qmail,其有自己的配置文件,配置目录中包含了5-30个不同的文 件,各个文件实现对不同部分的配置(如虚拟域或虚拟主机等)。这些配置说明都 在man中有很好的文档,但是Qmail的代码结构不是很好。
Qmail要比Sendmail小很多,其缺 乏一些现今邮件服务器所具有的特色功能。如不象Sendmail,qmail不对邮件信 封的发送者的域名进行验证,以确保域名的正确性。自身不提供对RBL的支持, 而需要add-on来实现。,而Sendmail支持RBL。同样Qmail不能拒绝接收目的接收 人不存在信件,而是先将邮件接收下来,然后返回查无此用户的的邮件。Qmail 最大的问题就出在发送邮件给多个接收者的处理上。若发送一个很大的邮件给同 一个域中的多个用户,Sendmail将只向目的邮件服务器发送一个邮件拷贝。而 Qmail将并行地连接多次,每次都发送一个拷贝给一个用户。若用户日常要发送 大邮件给多个用户,使用Qmail将浪费很多带宽。可以这么认为:Sendmail优化 节省带宽资源,Qmail优化节省时间。若用户系统有很好的带宽,Qmail将具有更 好的性能,而如果用户系统的带宽资源有限,并且要发送很多邮件列表信息,则 Sendmail效率更高一些。Qmail不支持.forward(.forward在很多情况下对用户很 有用处);不使用/var/spool/mail,而是将邮件存放在用户home目录。下面是一 些使用Qmail不容易完成的工作,要使用Qmail完成这些工作,可能需要用户自己 动手实现或者使用第三方提供的不够可靠的模块。
Qmail的源代码相对于Sendmail来说要更加容易理解,这对于希望深入到内 部了解MTA机制的人员来说是一个优点。Qmail在安全性方面也要稳定一些。 Qmail 有很好的技术支持,但是没有象Sendmail那样被广泛地应用和大量 的管理员用户群。Qmail的安装不象Sendmail那样自动化,需要手工步骤。而且 Qmail的文档不如Sendmail那样完整和丰富。