热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

sendmail\postfix\qmail之间的选择

在Internet中最常使用的工具可能就是电子邮件了,因此,建立一个站点所必须的一步工作就是构建一个安全、可靠的电子邮件系统。由于电子邮件是一种非常传统的工具,因此有非常多的软件可以用来达到这个目的,这里面包括从古老的uucp邮件到非常庞大的商业群件
  在Internet中最常使用的工具可能就是电子邮件了,因此,建立一个站点所必须的一步工作就是构建一个安全、可靠的电子邮件系统。由于电子邮件是一种非常传统的工具,因此有非常多的软件可以用来达到这个目的,这里面包括从古老的uucp邮件到非常庞大的商业群件系统,如Lotus Domino Server,但使用最广泛的还是一种自由软件──sendmail,它支撑了当前Internet邮件系统的主体。

  Sendmail的不足
  无论从使用的广泛程度,还是从代码的复杂程度来讲,sendmail都是一个非常优秀的软件。如果使用它来构建网站的电子邮件系统,基本上不必费心,因为几乎所有的Unix的缺省配置中都内置这个软件,只需要设置好操作系统,它就能立即运转起来。然而,Internet用户的要求更为苛刻,纷纷指出sendmail中包含的各个不足之处。
  第一个重要的缺点是它的安全性较差,这是因为当其作者Eric Allman最初开始写作这个软件的时候,Internet的用户还很少,因而安全性并不没有得到大家的重视。由于邮件系统需要处理的是外部发送来的各种各样的信息,甚至包含一些恶意数据,然而sendmail在大多数系统中都是以root身份运行,一旦出现问题,就会对系统安全造成严重影响。在这种情况下,要防止出现安全问题,仅仅依赖程序本身是不可取的,应该从系统结构出发,使程序拥有的特殊权限限制到最小。
  此外,也是由于其早期的Internet用户数量及邮件数量都相当小,Sendmail的系统结构并不适合较大的负载,对于高负载的邮件系统,需要对Sendmail进行复杂的调整。例如,通常情况下sendmail只启动一个进程顺序向外发送邮件,如果邮件较多时就要花费相当长的时间。
  使用Sendmail还会遇到的另一个问题是它的设置相当复杂,对于使用缺省设置来收发电子邮件,问题并不存在。当管理员打算进行一些特殊设置,以便利用Sendmail提供的复杂邮件处理能力时,就不得不面对复杂的宏和正则表达式。虽然现在Sendmail使用了宏预处理程序m4使设置更易于理解一些,但是掌握Sendmail的设置仍然是对系统管理员的一大挑战。

  使用Qmail替代Sendmail
  为了解决sendmail的安全问题,整个系统结构需要重新设计。基本的原则是将系统划分为不同的模块,有负责接收外部邮件的,有管理缓冲目录中待发送的邮件队列的,有将邮件发送到远程服务器或本地用户的。Qmail就是按照这个原则进行的设计,它由多个不同功能的小程序组成,只有必要的程序才是setuid程序(即以root用户权限执行),这样就减少了安全隐患,并且由于这些程序都比较简单一些,因此就可以达到较高的安全性。
  这种按照Unix思路的模块化设计方法也使得Qmail具备较高的性能,因为如果需要,Qmail可以启动某个模块的多个实例来完成同一个任务,例如启动多个发送程序同时向外发送邮件,这对于提供邮件列表服务的邮件系统是非常有益的。这种方式也使得Qmail要占用较大的网络带宽,如果带宽有限,效果反而不好,但在当前网络性能大幅度提高的情况下,这种方式是非常合适的。
  Qmail还提供一些非常有用的特色来增强系统的可靠性,例如,它提出了Maildir格式的邮件存储方式,这使得通过网络文件系统NFS存取邮件成为可能。此外,Qmail还具备一些非常别致的特色,它不仅仅提供了与Sendmail兼容的方式来处理转发、别名等能力,还可以用以Sendmail完全不同的方式来提供这些功能。从它的编译安装方式、提供的扩展功能和源代码的风格,可以看出其作者Dan Bernstein是一个极具个性化的程序员。正因为如此,对于Qmail的某些方面,有着一些争论,例如有些人认为Qmail的安装设置并不易于理解,很容易让人糊涂,而另一些人的看法则相反。基本上这是因为Qmail提供解决问题的方式,和Sendmail不大相同的缘故,这样对那些不太熟悉Sendmail的邮件系统管理员,反而更容易接受Qmail一些。

  另一种替换软件:Postfix
  Postfix同样也是采用了模块化的方式,但与Qmail不同的是,Postfix使用了一个主控进程进行监控。Postfix在很多方面都考虑到了安全问题,它甚至不向root分发电子邮件,以避免以root身份读写文件或启动外部程序。考虑到它的作者Wietse Venema曾编写了著名的安全软件TcpWrapper,并是SATAN程序的合作人员之一,Postfix的安全性是非常值得信赖的。
  同样,Postfix的性能也非常不错,甚至在Qmail作者自己进行的测试中也表明,Postfix的性能和Qmail基本相当。但Postfix占用的内存要大一些,这主要是由于Postfix和Qmail在系统结构上的差异造成的。
  与Qmail不同,Postfix更着眼于作为Sendmail的直接替换,使用Postfix替换Sendmail却相当简单,因为Postfix使用的很多文件和Sendmail一致,只需要在配置文件中指明原有Sendmail配置文件的位置就可以了,Postfix甚至还提供了sendmail和mailq程序,以保持兼容性。基本上,可以直接从Sendmail转换为使用Postfix,而不需要额外的设置。Postfix提供的安装配置方式也相当简单,它使用中心化的配置文件和非常易理解的配置指令。
  Postfix提供的一些强大的功能主要在于多种数据库表查询方式,例如它支持DB、DBM、passwd文件、正则表达式、MySQL数据库以及LDAP方式的查询,用于支持系统级的别名、虚拟主机等。虽然在Qmail中也能支持这些功能,但没有象Postfix那样统一、简洁。此外,更改Postfix的设置之后,也不需要重新启动整个系统,只需要使用postfix reload就能完全刷新配置,这也避免了丢失邮件的可能性。
  事实上,除了Qmail和Postfix之外,还有很多种邮件系统,例如Smail、Exim等,然而毫无疑问Qmail和Postfix是其中最优秀的,也是Sendmail最有力的竞争者。此外,还有一些商业邮件服务器产品,但一般情况下,购买商业邮件服务器软件大部分是冲着其提供的服务或者是附加功能来的,例如群件产品通常带有很多额外功能用于办公环境等。
  至于在Sendmail、Postfix和Qmail之间进行选择,基本上依赖于用户自己的偏好。有些人喜欢Qmail提供的复杂特色,而有的人希望对Sendmail的替换能简单一些,也有人不打算更换,而坚持使用Sendmail的最新版本。对于一个熟悉Unix系统而又愿意改善邮件系统性能和安全性的管理员,应该转换为使用Postfix或Qmail,除非对Sendmail非常熟悉而保持了特殊的感情。在Postfix和Qmail之间,它们各自有一批忠心拥护者,选择哪个都是可行的。不管选择哪种邮件系统核心,都需要选择过硬的专业电子邮件系统厂商提供完善的技术支持服务,除非您本身有强大过硬的技术力量,否则,您将面对的是一场恶梦.


推荐阅读
  • 软件测试行业深度解析:迈向高薪的必经之路
    本文深入探讨了软件测试行业的发展现状及未来趋势,旨在帮助有志于在该领域取得高薪的技术人员明确职业方向和发展路径。 ... [详细]
  • 我的读书清单(持续更新)201705311.《一千零一夜》2006(四五年级)2.《中华上下五千年》2008(初一)3.《鲁滨孙漂流记》2008(初二)4.《钢铁是怎样炼成的》20 ... [详细]
  • 调试利器SSH隧道
    在开发微信公众号或小程序的时候,由于微信平台规则的限制,部分接口需要通过线上域名才能正常访问。但我们一般都会在本地开发,因为这能快速的看到 ... [详细]
  • 本文总结了一次针对大厂Java研发岗位的面试经历,探讨了面试中常见的问题及其背后的原因,并分享了一些实用的面试准备资料。 ... [详细]
  • 本文探讨了在MySQL数据库中处理大规模数据删除的最佳实践,包括分批删除、利用索引、管理事务以及选择合适的删除命令等策略,旨在提升删除效率并确保系统稳定。 ... [详细]
  • 花生壳内网穿透:实现企业智能网关远程管理和维护
    随着物联网技术的发展,企业对智能网关的需求日益增加。本文介绍如何利用花生壳内网穿透技术,实现企业智能网关的远程管理和维护,提高效率,降低成本。 ... [详细]
  • 本文讲述了一位80后的普通男性程序员,尽管没有高学历,但通过不断的努力和学习,在IT行业中逐渐找到了自己的位置。从最初的仓库管理员到现在的多技能开发者,他的职业生涯充满了挑战与机遇。 ... [详细]
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • Docker安全策略与管理
    本文探讨了Docker的安全挑战、核心安全特性及其管理策略,旨在帮助读者深入理解Docker安全机制,并提供实用的安全管理建议。 ... [详细]
  • 从CodeIgniter中提取图像处理组件
    本指南旨在帮助开发者在未使用CodeIgniter框架的情况下,如何独立使用其强大的图像处理功能,包括图像尺寸调整、创建缩略图、裁剪、旋转及添加水印等。 ... [详细]
  • 本文详细介绍了在Linux操作系统上安装和部署MySQL数据库的过程,包括必要的环境准备、安装步骤、配置优化及安全设置等内容。 ... [详细]
  • 本文详细探讨了在Web开发中常见的UTF-8编码问题及其解决方案,包括HTML页面、PHP脚本、MySQL数据库以及JavaScript和Flash应用中的乱码问题。 ... [详细]
  • 在Qt框架中,信号与槽机制是一种独特的组件间通信方式。本文探讨了这一机制相较于传统的C风格回调函数所具有的优势,并分析了其潜在的不足之处。 ... [详细]
  • 2020年G1工业锅炉司炉多少钱及G1工业锅炉司炉考试申请表
    题库来源:安全生产模拟考试一点通公众号小程序2020年G1工业锅炉司炉多少钱及G1工业锅炉司炉考试申请表,包含G1工业锅炉司炉多少钱答案和解析及G1工 ... [详细]
  • 华为云HECS:高效能云服务器助力中小企业智能化转型
    华为云凭借其强大的技术创新能力和广泛的服务网络,持续为用户提供高效、稳定、安全的云计算解决方案。本文将深入探讨华为云HECS云服务器如何通过集成智能技术,帮助中小企业实现业务的快速部署与优化。 ... [详细]
author-avatar
手机用户2502856895
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有