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那样完整和丰富。
Qmail的add-ons比Sendmail要少一些。一般来说对于经验稍微少一些的管理员,选择Qmail相对要好一些。Qmail要简单一些,而且其特色功能能满足一般用户的需求。Sendmail类似于office套件,80%的功能往往都不被使用。这就使Qmail在一些场合可能被更受欢迎一些,其具有一些Sendmail所没有的更流行和实用的特色功能,如:Qmail具有内置的pop3支持。Qmail同样支持如主机或用户的伪装、虚拟域等等。Qmail的简单性也使配置相对容易一些。
Qmail被认为相对于Sendmail更加安全和高效,运行Qmail的一台pentium机器一天可以处理大约200,0000条消息。
Qmail相对于其他的MTA要简单很多,主要体现在:(1)其他的MTA的邮件转发、邮件别名和邮件列表都是采用相互独立的机制,而qmail采用一种简单的转发(forwarding)机制来允许用户处理自己的邮件列表(2)其他的MTA都提供快速而不安全的方式及慢的队列方式的邮件投递机制;而qmail发送是由新邮件的出现而触发的,所以其投递只有一种模式:快速的队列方式(3)其他的MTA实际上包括一个特定版本的inetd来监控MTA的平均负载,而qmail设计了内部机制来限制系统负载,所以qmail-smtpd能安全地从系统的inet来运行
Sendmail有很多的商业支持,而且由于大量的用户群,在互联网上有大量的潜在技术支持。而Qmail只有很有限的技术支持。有家公司inter7.com提供对Qmail的支持,该公司同样提供了免费的add-ons,包括一个基于web的管理工具-QmailAdmin及一个通过vpopmail的对虚拟域的支持,甚至具有一个基于web的客户借接口—SqWebMail。
Qmail还具有一些其他的缺憾。如它不是完全遵从标准,它不支持DSN,作者认为DSN是一个即将消亡的技术,而Qmail的VERP可以完成同样的工作,而又不象DSN依赖于其他主机的支持。Qmail另外一个问题是其不遵从支持7bit系统标准,而每次都发送8bit。若邮件接收一方不能处理这种情况,就会出现邮件乱码的情况。
从安全性来讲,Sendmail要比Qmail差一些,Sendmail在发展中出现过很多很著名的安全漏洞;而Qmail相对要短小精悍,但是仍然提供了基本的STMP功能。而Qmail的代码注释要少一些。Qmail的一个很好的特色是其支持一种可选的基于目录的邮件存储格式,而不是使用一个很大的文件来存储用户所有的邮件。若用户的邮件服务器进行很多的POP3服务,则这种邮件存储格式可以提高效率。但是遗憾的是Pine自身并不支持这种存储格式,如果需要可以使用一些补丁来达到这个目的。
Qmail的优点是:每个用户都可以创建邮件列表而无须具有根用户的权限,如用户foo可以创建名为foo-slashdot, foo-linux,foo-chickens 的邮件列表,为了提供更好的功能,有一个叫ezmlm(EZ Mailing List Maker)的工具可以支持自动注册和注销、索引等Majordomo所具有的各种功能,但是都是CLI驱动的,只需要编辑很少的文件。Qmail非常适合在小型系统下工作,一般只支持较少的用户或用来管理邮件列表。Qmail速度快并且简单:Qmail是当你希望安全切容易配置的最佳的选择;Qmail可以在2个小时内搞定配置,而Sendmail可能在两天内都搞不定。
rocketmail internic 等都使用qmail来构建。
三、ZMailer
ZMailer是一个高性能、多进程的Unix系统邮件程序,其可以从下面的服务器 自由下载。其也是按照单块模式设计的。如Hotmail等邮件系统就是用Zmailer构建的。
四、Exim
Exim是由Cambridge 大学开发的遵从GPL的MTA,其风格上类似与Smail 3,但是比Smail 3更加完善。当前最新版本是3.15。其主站点为。其最大的特点就是配置简单性,但是其安全性不如Qmail及Postfix。
当然除了这里介绍的几种MTA以外,还有 Smail, Post.Office,the Sun Internet Mail Server (SIMS), MMDF, CommuniGate,PMDF, Netscape Messaging Server,Obtuse smtpd/smtpfwdd,Intermail,MD Switch等其他商业或者免费的MTA可以选择。
相关链接资源
Postfix:http://www.postfix.org/
Zmailer:http://www.zmailer.org/
Qmail:http://www.qmail.org/
Sendmail:http://www.sendmail.org/