概括的比较
以下的分析主要基于我在CASA上发的一个小文章,对sendmail/qmail/postfix做了一个概括性的比较。
sendmail
sendmai功能非常强大,很多先进功能在sendmail上都最先有实现。sendmail里的Milter技术是一个非常好的框架,目前postfix及qmail仍然没有官方发布的方案比milter要好。
但sendmail也有典型的历史问题,只有一个binary程序,需要sid权限,m4配置文件复杂难懂。这些是是阻碍sendmail更好发展
的一些客观问题。客观来说,调教得好的sendmail,其性能也是相当不俗的,据一个国外的Unix杂志称,在solaris+内存文件系统+带电池的
raid系统下,sendmail能达到惊人的287封/秒的注入速度!
目前sendmail比较适合那些老用户,因为他们习惯了sendmail的应用环境和配置。
qmail
qmail体积非常小巧,source的gz包大概只有260多K,是三大MTA中最小的!模块化设计,避免了sid问题,基本功能齐全。配置相对
sendmail而言,简单了很多,而且用户非常广泛。而且补丁和插件非常多,例如著名的vpopmail,netqmail,以及qmail-ldap
等。
但qmail有几个问题,一是djb已经5,6年没有继续开发了,补丁的良莠不齐及版本依赖是非常麻烦的事,这对初学者极为不利。二是功能扩充需要补丁来完成,扩展能力不足。
总体上qmail依然是个非常不错的选择。对于希望了解mta原理,或希望修改mta代码的爱好者,qmail是值得推荐的。对于需要建立中小型邮
件系统的用户也同样适合。而对于需要丰富功能却不想面对补丁困难,或者需要建立大型的系统,qmail不太合适,需要更丰富的经验和技术。
postfix
postfix如今已经独树一帜,流水线、模块化的设计,兼顾了效率和功能。灵活的配置和扩展,使得配置postfix变得富有趣味。其主要的特点是速度
快、稳定,而且配置/功能非常强大,并和sendmail类似,提供了与外部程序对接的API/protocol。尤其是配置部分,可以说是一扫
qmail和sendmail的各自缺点。
但postfix管理及配置的入门依然需要一定的工夫,必须仔细阅读官方文档。postfix另一个优势是至今依然保持活跃的开发工作,而且稳步发展,适合高流量大负载的系统,扩充能力较强。
大规模应用例子
国内若干个大型email ISP
(如163.net/tom.com/163.com及sohu等)过去都使用qmail,后来全部更换成postfix。
新浪使用qmail,yahoo使用qmail。但这些已经不是普通的qmail了。
技术层面的分析
这里仅探讨一些典型的技术特点,从这些特点可以看出每个MTA设计的异同,主要讨论的焦点是qmail和postfix。
磁盘I/O
从队列文件的读写来看,qmail处理每一封邮件时,都至少需要建立3个文件,mess, intd,
info等。而Postfix使用的是单队列文件设计,因此磁盘I/O的开销要比qmail小得多,如果仅仅从这个方面考虑,postfix的队列是
qmail的2-4倍那么快。
从我过去的一个qmail vs postfix对比测试
中,也可以发现这个问题。
数据同步
如果从MTA对待操作系统的文件是否安全写入磁盘的策略来看,qmail和postfix也是不同的。Postfix使用的是随机写,并且需要写入完成并
安全同步到磁盘后才算完成。而qmail的写入则是即刻执行的,因此它将等待数据安全写入磁盘后才返回。对于高流量的系统而言,这将导致性能问题。
此外,Postfix的队列对于FreeBSD的softupdate是安全的,而qmail则是不安全的,qmail作者明确警告用户不要使用softupdate
,除非是有磁盘后写电池。
扩充能力
sendmail有着非常好的扩充能力,支持众多的特性,功能可谓豪华。包括频率控制到集群支持应有尽有。而milter API
则更加使sendmail的灵活性发挥至极,通过milter,用户可以对邮件几乎所有的参数进行控制!但是在存储方面,由于只支持mbox,会有一定的问题。
qmail在系统容量扩展上有着独到的设计,配合qmail-ldap补丁,可以充分利用qmqp及分布存储的优势。现今已有各式各样的qmail扩展方案,最著名的是qmail-ldap
。但qmail缺乏类似milter的设计,功能扩展需要各种补丁,而补丁的设计水平参差不齐,配置能力有限。实施起来相对是最复杂的。
Postfix同样有着非常好的容量扩充能力,利用LMTP或transport的/alias的方法,可以分布式的存储邮件,扩充容量。同时
postfix的功能扩展也非常强,通过灵活的配置即可实现复杂的功能,这是其最突出的优点之一,是qmail望尘莫及的。此外,类似sendmail的
milter,postfix拥有content_filter和policy
两个与外部程序/应用对接的接口,但不如milter那样功能集中和灵活,也没有完整实现qmail的qmqp及类似qmail-ldap的机制。
可配置性
sendmail 使用m4语法,单一的主配置文件(sendmail.cf)是三个mta中最难使用的,但是如果熟悉使用的话却能实现复杂的功能。
qmail使用的是大量小配置文本,格式最简单,每个配置一个文件,存放在/var/qmail/control目录里。
postfix也使用单一的主配置文件(main.cf),同时还有对应master主服务进程的配置文件master.cf,但使用的是简明易懂的key = value 格式。
总体而言,qmail的配置文件较易管理(格式最简单)但配置文件多(10个以上),而postfix的格式简单只有2个配置文件,并配备强大的postconf工具,sendmail的配置文件最复杂。
数据库支持
sendmail通过一些插件/补丁,可以支持mysql/pgsql/oracle等,ldap及小型的dbm/cdb等数据存储格式。
qmail默认只支持cdb,需通过补丁才可支持ldap,mysql,pgsql及oracle等。
postfix可以支持的数据库应该是最多的,默认就包括了mysql/pgsql/ldap及dbm/cdb和cidr/nis*/btree等一堆。还支持特殊的tcp_table(仅在snapshot里支持)
稳定性/负载能力
sendmail, qmail, postfix都比较稳定。在高负载下,配置不佳或没有打足够补丁的qmail容易被DOS攻击打跨,而postfix在遇到超过配置的限制时会降低处理能力,但系统依然有一定资源可用。
作者介绍
sendmail - Eric Allman
Unix专家、学者
qmail - DJB
数学教授,科学家
Postfix - wietse venema
安全专家 学者
Recommentaion - 建议
我建议在使用Postfix
MTA
,无论是小型系统,还是大中型系统,能带来最高的性价比。
一些有用的link
相关推荐
标题中的"mailServer Apache James / sendmail / qmail"提到了三个不同的邮件服务器软件,它们在IT领域中扮演着重要角色。Apache James是基于Java的开源邮件服务器,sendmail和qmail则是历史悠久的Unix/Linux环境下...
与Postfix、Sendmail等其他MTA相比,qmail的设计理念更侧重于模块化和安全性,这使得它成为许多服务器管理员和网络安全专家的首选。 ### qmail的核心组件 qmail的核心组件包括:qmail-send、qmail-local、qmail-...
Sendmail和Postfix都是Linux环境下广泛使用的邮件传输代理(MTA,Mail Transfer Agent)软件,它们负责处理电子邮件的发送和接收。在Linux系统中,MTA是邮件系统的核心组件,它确保邮件能正确地从发送方传递到接收方...
作者在过去一段时间内测试了多种MTA和IMAP/POP服务器组合,包括qmail、Postfix、Exim与Cyrus、vpopmail、Courier IMAP等。经过综合考量后,作者认为Postfix与Cyrus的组合是最灵活且性能最佳的选择。 #### 五、版权...
当前,运行在Linux环境下免费的 邮件服务器,或者称为MTA(Mail Transfer Agent)有若干种选择,比较常见的有Sendmail、Qmail、Postfix、 exim及Zmailer等等。本文希望通过对几种影响相对来说比较大的主流Linux环境下...
Linux中常见的MTA包括`sendmail`、`postfix`和`qmail`等。 3. **MDA(Mail Delivery Agent,邮件投递代理)**:MDA的作用是根据邮件目的地将邮件投递到本地用户的邮箱中,或者将其传递给下一个MTA。通常情况下,`...
Postfix由Wietse Venema开发,同样是一款开放源码的邮件传输代理(MTA),它继承了Sendmail的很多特性,但比Sendmail更易于管理和安全。Postfix的设计理念是“快速、安全、易用”,这使得它成为许多企业和组织的首选...
2. MTA(邮件传输代理):例如Sendmail、Postfix、qmail,它们在服务器端工作,接收MUA发送的邮件并负责转发至目标地址。 3. MDA(邮件投递代理):如mail命令,将邮件送达本地用户或继续传递给其他MTA。 邮件传输...
MTA的实现包括Sendmail、Postfix和Qmail等。其中,Postfix因其高效性和易配置性而受到广泛欢迎。 ##### MDA (Mail Delivery Agent) —— 邮件递送代理 MDA是在MTA接收到邮件之后执行的程序,用于决定邮件的最终去向...
常见的MTA包括Sendmail、Postfix、Qmail等。 - **MDA(Mail Delivery Agent)**:邮件投递代理,负责将接收到的邮件传递到用户的邮箱中。例如Procmail、Maildrop等。 - **MUA(Mail User Agent)**:邮件用户代理,...
为了应对这些挑战,出现了许多替代品,如Postfix、Exim和qmail。这些现代MTA在保持sendmail的灵活性的同时,优化了性能,提高了安全性,并简化了管理。 **5. sendmail与SMTP协议** SMTP是Internet上标准的邮件传输...
在Linux环境中,邮件服务器软件(Mail Transfer Agent,MTA)的选择多样,其中Sendmail曾是主流,但随着技术的发展,出现了许多替代品,如Qmail、Postfix、Exim和Zmailer等。这些MTA各有特点,其中Postfix是一个受到...
在Linux环境中,常见的邮件服务器软件包括sendmail、qmail和Postfix,而邮件客户端则有mail、pine和elm等。 2. **电子邮件传输过程** 电子邮件的传输涉及三个关键组件:MUA(邮件用户代理)、MTA(邮件传输代理)...
随着Sendmail的局限性逐渐显现,开发者们开发出了多种替代品,其中包括Postfix、Qmail、Exim以及Zmailer等。这些邮件传输代理(MTA)各有特点,适应不同需求。 Postfix是由IBM资助并由Wietse Venema开发的一款高...
本文主要关注的是几种主流的开源邮件传输代理(MTA),包括Sendmail、Qmail、Postfix、exim以及Zmailer。这些软件都是针对Linux环境设计的,提供了丰富的功能和不同程度的性能优化。 **Postfix**是由IBM资助并由...
- **背景与目标**:Postfix是在IBM的支持下由Wietse Venema开发的一款邮件服务器软件,旨在为用户提供一种不同于Sendmail的邮件服务选择。 - **性能**:Postfix相较于同类产品具有更快的速度,一台安装了Postfix的...
当前,运行在Linux环境下的邮件服务器有若干种选择,比较常见的有sendmail、Postfix、Exim和Qmail等。 3. Sendmail邮件服务器配置 Sendmail是最古老和最流行的邮件服务器软件之一。Sendmail的配置主要包括安装...