原文电子版下载:《Qmail Quickstart》
http://www.ppurl.com/2010/01/qmail-quickstarter-install-set-up-and-run-your-own-email-server-a-fast-paced-and-easy-to-follow-step-by-step-guide-that-gets-you-up-and-running-quickly.html


在深入探索qmail的配置和调节之前,了解一些qmail的基础架构是重要的。Qmail经常被仅仅归类为一个邮件服务器软件包。这可能只在某一点上是正确的,将qmail考虑为一个邮件分发体系会更加准确,这个体系结构的构建者为这个体系的所有组件深入的提供了一些基础接口。
Qmail是非常模块化的――它包含了一系列通过特定且受限的接口来互相沟通的简单程序。每个简单的程序都有一个特定且受限的任务需要完成。这个体系结构允许每个组件都被容易的替代或让新的程序插入到基础组件之中。
另外,这个体系限制了所有组件的安全影响。任何一个程序都与另外的程序隔离开来,在任何可能的情况,给每个程序一个不同的UNIX用户和特定权限来确保它不会做任何它不应该做的事。因为通讯接口被限制了,因此显然更难去攻击软件或更多别的――攻击一个没有足够权限来做任何它不应该做的事的组件对攻击者来说是很没有用处的。
最简单的例子是从网络上收邮件。一个基础的qmail实验如下:tcpserver到qmail-smtpd到qmail-queue。tcpserver程序有两个任务:打开一个端口来监听网络,并对每个连接以正确的用户来启动qmail-smtpd。因为监听低端口(如SMTP的端口:25)要求root权限,所以tcpserver通常以root用户运行。然而,因为tcpserver并不试图理解通讯,所以很难被攻击。qmail-smtpd程序也只有两个任务需要运行:充分使用SMTP协议来接收消息,并发送这些邮件消息到qmail-queue。就这个而言,qmail-smtpd本身并不需要对磁盘上的队列或网络做任何事情。这允许qmail-smtpd能被一个权限非常受限的用户来运行,而且允许qmail-smtpd成为一个非常简单,而且容易被验证和排错的程序,即使它需要与用户(或攻击者)输入直接沟通。qmail-queue程序则只有一个任务――将消息写到已经有了接收头的磁盘队列上。它无需和网络沟通,或者了解它写到磁盘上的消息的内容,使得程序简单并容易被验证,从而使得攻击者更难破坏它。
要注意的是这个体系结构很容易被扩展。tcpserver程序可以执行轮流执行所需的qmail-smtpd的任何程序。这可能很有帮助,例如,决定在qmail-smtpd被运行前是否允许一个连接到达qmail-smtpd或设置或取消一个环境变量。它甚至可以用来对数据在到达qmail-smtpd前进行安全过滤。类似的,当qmail-smtpd正常的运行qmail-queue时,它可以调用任何程序。这个程序可以执行所需的qmail-queue,这可能会有用,来过滤哪些包含病毒的邮件消息。
又如另一个例子,qmail-start程序执行一些程序:qmail-send,qmail-lspawn,qmail-rspawn和qmail-clean。以上每个程序都有一个特定的任务。qmail-send必须监控磁盘上的邮件队列,并且分别根据是要将邮件投递给本地用户还是远程用户来执行qmail-lspawn或qmail-rspaw来正确的按路由发送。一旦邮件被发送,它就会运行qmail-clean来清除队列中的消息。qmail-lspawn和qmail-rspawn都会收到发送命令并产生运行qmail-local和qmail-remote的实例所需的数字,这些程序实例会真正开始发送邮件。qmail-remote程序是一个简单的程序,它从标准输入读取邮件,然后将它发送给由它的参数指定的主机和收件人。它没有足够的权限来读取队列本身之外的任何东西,因此必须亲手发送邮件。它甚至可以像下面这样单独使用:
echo message | qmail-remote smtp.example.com sender@example.com recipient@example.com
qmail-local程序也很简单,它的任务是读取来自标准输入的邮件并将之发送给指定的本地用户,依据这个用户的.qmail文件所描述的具体步骤。和qmail-remote一样,它也没有足够的权限去读取或xiuga

这些程序都相互独立,并且只依赖于提供给它的接口。通过限制每个组件的权限,使得攻击系统或通过攻击一个组件来获取更多都变得极其困难。这就是被qmail使用的在其基础概念之后的权限分离安全技术。

The overall structure of QMail.png

0 评论: