免费邮箱 |加入收藏 | 会员中心 | 我要投稿 | RSS
您当前的位置:首页 > 服务器 > 服务器

Linux邮件服务器软件比较

时间:2011-05-19 08:45:29  来源:站内  作者:潘春会

几年以前,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其他的主要优点是起配置文件的清晰易懂性。

来顶一下
返回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
推荐资讯
如何找出DHCP地址池里未使用的IP地址
如何找出DHCP地址池里
国内常用的DNS列表
国内常用的DNS列表
Linux邮件服务器软件比较
Linux邮件服务器软件比
学用纯CSS打造可折叠树状菜单
学用纯CSS打造可折叠树
相关文章
栏目更新
栏目热门