linux邮件服务器:linux邮件服务器比拼

来源:www.5dmail.net

ZMailer是个高性能、多进程Unix系统邮件其可以从下面服务器ftp://ftp.funet.fi/pub/unix/mail/zmailer/自由下载其也是按照单块模式设计如Hotmail等邮件系统就是用Zmailer构建

    Exim是由Cambridge 大学开发遵从GPLMTA其风格上类似和Smail 3但是比Smail3更加完善当前最新版本是3.15其主站点为http://www.exim.org/其最大特点就是配置简单性但是其安全性不如Qmail及Postfix

    下面是对几种MTA特点比较综合来讲Qmail和Postfix都是很不错MTA,选择标准往往是个人喜好问题Postfix发展历史 要比Qmail迟

    当然除了这里介绍几种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/ (GPL)

    Qmail :http://www.qmail.org/ (license is unclear)

    Sendmail :http://www.sendmail.org/ (GPL)

 

Linux邮件服务器软件Software比较Qmail
Qmail是DanBernstein开发可以自由下载MTA其第个beta版本0.7发布于1996年1月24日1997年2月发布了 1.0版当前版本是1.03

    1.Qmail特点

    安全性:为了验证Qmail安全性Qmail支持者甚至出资$1000悬赏寻找 Qmail安全漏洞年以后该奖金没有被领取而被捐献给自由软件Software基金会目前Qmail作者也出资$500来寻求Qmail安全漏洞

    速度:Qmail在个中等规模系统可以投递大约百万封邮件甚至在台486天上能处理超过10万封邮件起支持并行投递Qmail支持邮件并行投递同时可以投递大约20封邮件目前邮件投递瓶颈在于SMTP协议通过STMP向另外台互联网主机投递封电子邮件大约需要花费10多秒钟Qmail作者 提出了QMTP(Quick Mail Transfer Protocol)来加速邮件投递并且在Qmail中得到支持Qmail设计目标是在台16M机器上最终达到每天可以投递大约百万级数目邮件

    可靠性:为了保证可靠性Qmail只有在邮件被正确地写入到磁盘才返回处理成功结果这样即使在磁盘写入中发生系统崩溃或断电等情况也可以保 证邮件不被丢失而是重新投递

    特别简单虚拟域管理:甚至有个第 3方开发称为vchkpwadd-on来支持虚拟POP域使用这个软件Software包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小很多其缺乏些现今邮件服务器所具有特色功能如不象Sendmailqmail不对邮件信封发送者域名进行验证以确保域名正确性自身不提供对RBL支持而需要add-on来实现而Sendmail支持RBL同样Qmail不能拒绝接收目接收人不存在信件而是先将邮件接收下来然后返回查无此用户邮件Qmail最大问题就出在发送邮件给多个接收者处理上若发送个很大邮件给同 个域中多个用户Sendmail将只向目邮件服务器发送个邮件拷贝而 Qmail将并行地连接多次每次都发送个拷贝给个用户若用户日常要发送大邮件给多个用户使用Qmail将浪费很多带宽可以这么认为:Sendmail优化节省带宽资源Qmail优化节省时间若用户系统有很好带宽Qmail将具有更好性能而如果用户系统带宽资源有限并且要发送很多邮件列表信息则Sendmail效率更高Qmail不支持.forward(.forward在很多情况下对用户很有用处);不使用/var/spool/mail而是将邮件存放在用户home目录下面是些使用Qmail不容易完成工作要使用Qmail完成这些工作可能需要用户自己 动手实现或者使用第 3方提供不够可靠模块

    Qmail源代码相对于Sendmail来说要更加容易理解这对于希望深入到内 部了解MTA机制人员来说是个优点Qmail在安全性方面也要稳定Qmail有很好技术支持但是没有象Sendmail那样被广泛地应用和大量管理员用户群Qmail安装不象Sendmail那样自动化需要手工步骤而且 Qmail文档不如Sendmail那样完整和丰富

    Qmailadd-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只有很有限技术支持有家公司er7.com提供对Qmail支持该公司同样提供了免费add-ons包括个基于web管理工具-QmailAdmin及个通过vpopmail对虚拟域支持甚至具有个基于web客户借接口— SqWebMail

    Qmail还具有些其他缺憾如它不是完全遵从标准它不支持DSN作者认为DSN是个即将消亡技术而QmailVERP可以完成同样工作而又不象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 ernic 等都使用Qmail来构建

Linux邮件服务器软件Software比较Postfix

 

几年以前Linux环境下可以选择可以免费邮件服务器软件Software只有Sendmail但是由于Sendmail缺陷些开发者先后开发了若干种其他邮件服务器软件Software当前运行在Linux环境下免费邮件服务器或者称为MTA(Mail Transfer Agent)有若干种选择比较常见有Sendmail、Qmail、Postfix、exim及Zmailer等等本文希望通过对几种影响相对来说比较大主流Linux环境下MTA特点进行阐述并对其优缺点分析比较使用户在选择Linux 环境下免费MTA时有个选择依据

    、Postfix

    Postfix是个由IBM资助下由WietseVenema负责开发自由软件Software工程个产物其目是为用户提供除sendmail的外邮件服务器选择Postfix力图做到快速、易于管理、提供尽可能安全性同时尽量做到和sendmail邮件服务器保持兼容性以满足用户使用习惯起初Postfix是以VMailer这个名字发布后来由于商标上原因改名为Postfix

    1.主要设计目标

    Postfix工程目标是实现个邮件服务器提供给用户除sendmail以外选择其设计目标包括:

    性能:Postfix要比同类服务器产品速度快 3倍以上个安装Postfix台式机天可以收发百万封信件Postfix设计中采用了web服务器设计窍门技巧以减少进程创建开销并且采用了其他些文件访问优化技术以提 高效率但同时保证了软件Software可靠性

    兼容性:Postfix设计时考虑了保持Sendmail兼容性问题以使移植变更加容易Postfix支持/var[/spool]/mail,/etc/aliases,NIS,及~/.forward等文件然而Postfix为保证管理简单性所以没有支持配置文件 sendmail.cf

    安全和健壮性:Postfix设计上实现了在过量负载情况下仍然保证可靠性当出现本地文件系统没有可用空间或没有可用内存情况时Postfix就会自动放弃而不是重试使情况变更糟

    灵活性:Postfix结构上由十多个小子模块组成每个子模块完成特定任务如通过SMTP协议接收个消息发送个消息本地传递个消息重写个地址等等当出现特定需求时可以用新版本模块来替代老模块 而不需要更新整个而且它也很容易实现关闭某个功能

    安全性:Postfix使用多层防护措施防范攻击者来保护本地系统几乎每个Postfix守护进程都能运行在固定低权限chroot的下在网络和安全敏感本地投递的间没有直接路径—个攻击者必须首先突破若干个其他才有可能访问本地系统Postfix甚至不绝对信任自己队列文件或IPC消息中内容以防止被欺骗Postfix在输出发送者提供消息的前会首先过滤消息而且Postfix没有-uid

    2.Postfix些特点

    支持多传输域:sendmai支持在Internet,DECnet,X.400及UUCP的间转发消息Postfix则灵活设计为无须虚拟域(vistualdomai)或别名来实现这种转发但是在早期发布里仅仅支持STMP和有限度 地支持UUCP,但对于我国用户来说多传输域支持没有什么意义

    虚拟域:在大多数通用情况下增加对个虚拟域支持仅仅需要改变个Postfix查找信息表其他邮件服务器则通常需要多个级别别名或重定向来 获得这样效果

    UCE控制(UCE,unsolicitedcommercialemail):Postfix能限制哪个主机允许通过自身转发邮件并且 支持限定什么邮件允许接进Postfix实现通常控制功能:黑名单列表、RBL查 找、HELO/发送者DNS核实基于内容过滤当前没有实现

    表查看:Postfix没有实现地址重写语言而是使用了种扩展表查看来实现地 址重写功能表可以是本地 dbm或 db文件等格式




3.Postfix体系结构及和Sendmail比较

    Postfix是基于半驻留互操作进程体系结构每个进程完成特定任务没有任何特定进程衍生关系(父子关系)而且独立进程来完成区别功能相对于“单块”具有更好 隔离性此外这种实现方式具有这样优点:每个服务如地址重写等都能被任何个Postfix部件所使用无须进程创建等开销而仅仅需要重写个地址 当然并不是只有postfix采用这种方式

    Postfix是按照这种方式实现:个驻留主服务器根据命令运行Postfix守护进程守护进程完成发送或接收网络邮件消息在本地递交邮件等等功能守护进程数目由配置参数来决定并且根据配置决定守护进程运行次数(re-usedtimes)当空闲时间到达配置参数指定限度时自动消亡这种思路方法 明显地降低了进程创建开销但是单个进程的间仍然保持了良好隔离性

    Postfix设计目标就是成为Sendmail替代者由于这个原因Postfix系统很多部分如本地投递可以很容易地通过编辑修改类似inetd配置文件来替代

    Postfix核心是由十多个半驻留实现为了保证机密性原因这些Postfix进程的间通过Unix 或受保护目录的下FIFO进行通信即使使用这种思路方法来保证机密性 Postfix进程并不盲目信任其通过这种方式接收到数据

    Postfix进程的间传递数据量是有限制在很多情况下Postfix进程的间交换数据信息只有队列文件名和接收者列表或某些状态信息个邮件消息被保存进入文件其将在其中 保存到被个邮件投递读出

    Postfix采用些通常措施来避免丢失信息:在收到确认以前通过flush和fsync保存所有数据到磁盘中 检查所有系统返回结果来避免状况

    大多数构建邮件服务器者都会选择sendmail公平来讲sendmail是个不错MTA(Mail Transfer Agent)最初开发时EricAllman设计考虑主要放在了邮件传递成功性不幸Sendmai开发时没有太多考虑Internet环境下可能遇到安全性问题Sendmail在大多数系统上只能以根用户身份运行这就意味着任何漏 洞都可能导致非常严重后果除了这些问题的外在高负载情况Sendmail运行情况不是很好

    4.安全

    Postfix则并定要以root身份运行而只需要个主(master)以root身份运行其生成进程来处理 接入、发出及本地邮件投递工作通过使用系列模块部件每个任务由个单 独来运行(这样使审计变容易些)例如发出邮件被卸载到个队列目录,在这里“pcikup”取到该邮件然后将邮件传递给“cleanup”其再将邮件传递给“trivial-rewrite”其负责处理邮件头最后若邮件目是别系统则将邮件传递给“smtp”而且相对于Sendmail来说Postfix也更容易设置chrooted环境只要简单地通过编辑master.cf(般位于/etc/postfix内)文件即可实现并且Postfix将运行chrooted,以限定在其定义队列目录的下(通常位于/var/spool/postfix)同样可以在master.cf中对Postfix模块设置进程限制用户可以限制Postfix以哪个用户身份运行般来说是以“postfix”用户(概念上该用户和Apachenobody类似)运行该用户可以访问特定队列目录Postfix其他主要优点是起配置文件清晰易懂性

    5.和Sendmail比较

    如sendmail的类邮件系统是按照个"单块"结构设计实现该“单块”实现所有功能当然这种结构有利于在系统区别部分的间共享数据但是这种结构容易出现些致命而如qmail邮件系统上使用种分层次结构按照固定顺序运行区别功能子模块进程执行完毕的后就将其释放这种思路方法有良好 “绝缘”性但是增加了进程创建开销和进程间通信开销但是通过合理规 划子模块进程运行顺序可以将开销保持在可以接受范围内

    使用其他MTA替代Sendmail是件非常麻烦事情用户往往又要花大量时间去熟悉新MTA配置和使用 而使用Postfix你可以利用很多以有配置文件如(access, aliases, virtusertable等等)只需要简单在master.cf中定义下即可此外Postfix在行为上也很象Sendmail,用户可以使用"sendmail"命令来启动Postfix

    当然使用个软件Software来替代另外个软件Software需要解决特定问题部分原因是 Postfix安全特性在配置Postfix时可能会遇到些问题最典型问题是向root用户发送邮件Postfix般不提高自身权限(向root用户发送邮件所必须)来投递邮件用户需要在别名文件中为root定义别名如:"root:someuser"这同样会对若干个邮件列表模块发生影响特别是SmartList般来说实现邮件列表最好使用Majordomo,它易于配置

    Sendmail个很突出问题就是可扩展性和性能问题例如用户若希望每天重新启动Sendmail来实现自动更新配置文件(如为虚拟主机重定向邮件)就会出现问题Sendmail生成新进程来处理发送和接收邮件这些进程会直存在直到传输结束的后Sendmail才能退出这样你脚本将不能正确重起Sendmail而对于Postfix用户则只需要发出命令"postfixreload"即可Postfix将会重新加载其配置文件

    另外对于有数以万计用户邮件服务器来说使用文件来存储如匹配用户发 出邮件地址(例如bob发出发信人修改为[email protected])对于大量用户来讲该文件就会变很巨大从而影响系统运行效率而Postfix则可以和个数据库后台集成起来(当前只支持MySQL)来存放其配置信息数据库方式 要比文件方式在可扩展性方面强大很多

    遵从IBM开放源代码版权许可证用户可以自由地分发该软件Software进行 2次开发其唯限制就是必须将对 Postfix做修改返回给IBM公司IBM资助了Wietse开发

    6.和Qmail比较

    Qmail缺点就是配置方式和Sendmail不不容易维护而且Qmail版权许可证含义非常模糊甚至没有和软件Software起发布应用作者话:若你希望分发自己修改版本Qmail你必 须得到我许可

Tags:  linux代理服务器 linuxftp服务器 linux服务器 linux邮件服务器

延伸阅读

最新评论

发表评论