电信主站 网通分站
购买流程 付款方式 常见问题 在线提问 续租服务 购物车
用户名: 密 码: 忘记密码?
首 页
域名注册
虚拟主机
双线主机
服务器租用
VPS主机
企业邮局
代理专区
客服中心
虚拟主机行业资讯 虚拟主机评测对比 互联网最新动态 技术学院 站长资讯 在线教程 网站运营
搜索优化 服务器 网络编程 图形图象 站长之家 网页制作 操作系统
冲浪宝典 软件教学 视频通信 办公软件 邮件系统 网络安全 认证考试
您当前位置:西部数码->资讯中心-> 在线教程-> 网管专栏
Linux邮件服务器软件比较-网管专栏,邮件服务
作者:网友供稿 点击:18
  西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!虚拟主机可在线rar解压,自动数据恢复设置虚拟目录等.虚拟主机免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金!
文章页数:[1] 
几年以前,linux环境下可以选择 的可以免费邮件服务器软件只有sendmail,但是由于sendmail的缺陷,一些开发 者先后开发了若干种其他的邮件服务器软件。当前,运行在linux环境下免费的 邮件服务器,或者称为mta(mail transfer agent)有若干种选择,比较常见的有sendmail、qmail、postfix、 exim及zmailer等等。本文希望通过对几种影响相对来说比较大的主流linux环境 下的mta的特点进行阐述,并对其优缺点一一金星分析比较,使用户在选择linux 环境下的免费mta时有一个选择的依据。

一、postfix

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

1.主要设计目标

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

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

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

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

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

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

2.postfix的一些特点

  支持多传输域:sendmai支持在internet, decnet, x.400及uucp之间转发消息。 postfix则灵活的设计为无须虚拟域 (vistual domai)或别名来实现这种转发。但是在早期的发布里仅仅支持stmp和有限度 地支持uucp,但对于我国用户来说,多传输域的支持没有什么意义。

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

  uce控制 (uce,unsolicited commercial email): postfix能限制哪个主机允许通过自身转发邮件,并且 支持限定什么邮件允许接进。postfix实现通常的控制功能:黑名单列表、rbl查 找、helo/发送者dns核实。基于内容过滤当前没有实现。

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

3.postfix体系结构及与sendmail 的比较

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

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

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

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

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

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

  大多数构建邮件服务器者都会选择 sendmail,公平的来讲sendmail是一个不错的mta(mail transfer agent),最初开发时eric allman的设计考虑主要放在了邮件传递的成 功性。不幸的是,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”用户(概念上该用户和apache的nobody类似)运行,该用户可以访问 特定的队列目录。postfix其他的主要优点是起配置文件的清晰易懂性。

5.与sendmail的比较

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

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

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

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

  另外,对于有数以万计的用户的邮件服务器来说,使用文件来存储如匹配用户发 出邮件地址(例如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那样完整和丰富。

  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系统邮件程序。 [ a.k.a. mta per x.400 parlance ],其可以从下面的服务器ftp://ftp.funet.fi/pu b/unix/mail/zmailer/ 自由下载。其也是按照单块模式设计的。如hotmail等邮件系统就是用zmailer构 建的。

四、exim

  exim是由cambridge 大学开发的遵从gpl的mta,其风格上类似与smail 3 ,但是比smail 3更加完善。当前最新版本是3.15。其主站点为http://www.exim.org/。其最大的特点就是 配置简单性,但是其安全性不如qmail及postfix。

  下面是对几种mta的特点的比较,综合的来讲,qmail和 postfix都是很不错的mta,选择的标准往往是个人的喜好问题,postfix发展历史 要比qmail迟一些。


mta 成熟性 安全性 特色 性能 sendmail兼容性 模块化设计
qmail medium high high high addons yes
sendmail high low high low x no
postfix low high high high yes yes
exim medium low high medium yes no



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

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
相关主题
文章页数:[1] 
Google
热门文章
·如何查看本机打开的端口是被哪个程序使用的-网管专栏,操作系统
·如何在多台电脑上同时安装Windows-网管专栏,操作系统
·网管人员必备的网络命令(转贴)-数据库专栏,SQL Server
·Postfix + Courier-IMAP + Cyrus-SASL + MySQL + IMP完全指南(新版)-网管专栏,邮件服务
·一个IP建多个Web站点--主机头名法-网管专栏,WEB服务
·WinXP/2003网络服务详解-网管专栏,操作系统
·电信网管中的Java客户端(二)-JSP教程,Java技巧及代码
·Resin在Windows系统下的安装-网管专栏,WEB服务
·在Win2k3下配置Apache+php+mysql-网管专栏,WEB服务
·服务器配置SSL-网管专栏,操作系统

最新文章
·如何查看本机打开的端口是被哪个程序使用的-网管专栏,操作系统
·服务器配置SSL-网管专栏,操作系统
·一个IP建多个Web站点--主机头名法-网管专栏,WEB服务
·如何在多台电脑上同时安装Windows-网管专栏,操作系统
·Linux内核技术分析-网管专栏,操作系统
·在Win2k3下配置Apache+php+mysql-网管专栏,WEB服务
·在Redhat Enterprise AS 3 下源码安装配置 MONO-网管专栏,WEB服务
·网管人员必备的网络命令(转贴)-数据库专栏,SQL Server
·WinXP/2003网络服务详解-网管专栏,操作系统
·Apache安装设置-网管专栏,WEB服务




版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!

特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
  打印  刷新  关闭
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 虚拟主机 | 资讯中心 | 友情链接 | 网站地图

版权所有 西部数码(www.west263.com)
CopyRight (c) 2002~2006 west263.com all right reserved.
公司地址:四川成都市万和路90号天象大厦4楼 邮编:610031
电话总机:028-86262244 86263048 86263408 86263960 86264018 86267838
售前咨询:总机转201 202 203 204 206 208
售后服务:总机转211 212 213 214
财务咨询:总机转224 223 传真:028-86264041 财务QQ:点击发送消息给对方635483282
售前咨询QQ:点击发送消息给对方2182518 点击发送消息给对方241975952 点击发送消息给对方275026793 点击发送消息给对方408235859
售后服务QQ:点击发送消息给对方17708515 点击发送消息给对方307742704 点击发送消息给对方287976517 点击发送消息给对方363783715
《中华人民共和国增值电信业务经营许可证》编号:川B2-20030065号