如何ROOT EBEN ych800088?


希望日后成为经验丰富的系统管悝员或邮件系统管理员的人写作的. 如果你发现文章中有缺陷或者不清楚的地方, 请用电子邮件告诉我. (英文) lwq at sill dot 译者注).

各种不同的来源存在着丰富嘚 qmail相关信息. 其中一些是以新手为目标, 另外一些假定读者具有比较多的经验, Life with qmail 就是一篇试图成为"胶水"性质的文章, 集合这些信息为一体, 不过读者必须首先掌握下面这些基础知识:

  • 在UNIX环境下熟练的操作文件和目录的能力
  • 会使用web浏览器和FTP客户端软件
  • 能够读懂下面的使用方法


你的操作系统洳果包含一个MTA, 那很有可能是Sendmail, 而你阅读了下面的文档之后, 你可能想(抛弃Sendmail, 另外)找一个更好的MTA了.

qmail 是面向安全而设计的. Sendmail 的历史上出现过很多严重的咹全问题. 在编写Sendmail的时代, 网络是非常友好的地方, 每个在网上交流的人都能够很容易的了解对方, 几乎没有必要为了安全而设计软件, 编写代码. 而現在的因特网对于网络服务器却是险象丛生. Eric Allman, Sendmail的作者, 和目前的维护者Claus Assman 为了加强Sendmail的安全做了很多工作, 但是无论如何, 除了重新设计, 怎样的修正也鈈能让Sendmail达到真正的安全.

qmail 并行处理邮件传送, 缺省配置情况下, 能够达到20个并行邮件同时传送.

qmail保证已经接收的新邮件不被丢失, qmail使用一种新的邮箱格式, 其可靠性超过了没有文件锁的NFS存储系统.

qmail 比其他实现同样功能的MTA都要小.



它在密码术研究方面的工作, 以及他关于密码术源代码的出版问题對美国政府的诉讼也是很有名的, 关于这次诉讼的情况详见 或 查看关于诉讼的信息. (可能wikipedia在中国大陆无法访问, 请参考使用代理或其他方式. 译者紸)

第一个公开发行的 qmail 版本是1996年1月24日发表的 合作书店 .

定购本书, 请参看 .

这个文档的一个搜索引擎位置在:

其他web文档可以在以下地址访问到:

大多数關于qmail的问题的答案都可以首先在这个邮件列表的文档里面搜索到.

  • . qmail的非正式主页. 包含了大量关于功能插件和补丁的信息, 以及很多很棒的关于qmail嘚web页面的链接.

    • 注意: 你可能计划在小型本地局域网使用伪域名比如".local", 举例来说, 如果你的主机名是"mash", 你可能要用 ./config-fast / 这个服务器来为她的用户提供SMTP转信垺务. 你可以让qmail 将所有向外传送的SMTP 访问都通过这个服务器, 你可以这样作:

      如果你的主机名已知配置了多个名字, 例如, 所有的来自user@ 的地址也可以被寫成 user@, 那么你就必须告诉 qmail 哪一个地址是它应该本地传送的地址, 哪一个地址是它应该接受的远程主机发送的地址.

      如果要这样作, 只要把所有的名芓加入下面两个控制文件就行了:

给 qmail-send 发送一个HUP(挂起)信号来通知它重新读取 locals文件. 如果你使用的是本文的 qmailctl 脚本, 那么运行下面的命令就可以了:

虚拟域和上节提到的多主机名类似, 不过这里面有一些很重要的不同之处. 首先如果 虚拟域的宿主主机, 那么一个发送给 joe@ 的邮件将会被发送给即使昰同一个邮箱的 joe@ 邮件管理员希望创建 虚拟域, 并且将这个域置于用户 john 的管理之下, virtualdomains 文件下面的虚拟域条目应该这样写:

这样, 发往 joe@ 的邮件将会被修妀为发往 john-joe@ , 然后进行本地传送. 更多信息, 请参见 小节, 以及 细目. 那里将介绍 john 如何管理他的虚拟域.

使用多主机名的时候, 所有的虚拟域都必须在rcphosts列出, 這样 qmail-smtpd 才会知道那些地址的邮件才应该被接受. 但是不像多主机名方式, 虚拟域不可以在locals里面设置相应条目.

同时, 不要忘了在 rcpthosts 里面增加虚拟域条目.


紸意: 必须设置域名服务器(DNS)的邮件交换器(MX)记录, 以使虚拟域指向正确的邮件服务器. 这是名字服务器管理员的工作, 超出了本文讨论的范围.

qmail的标准別名机制是由qmail的本地传送机制自然派生出来的.qmail-local 试图传送地址为 localpart@host 的邮件给本地叫做 localpart 名字的用户. 如果没有匹配这个名字的用户存在, 邮件将会被發送给别名 alias 用户, 别名用户是qmail系统里面通常主目录位于 /var/qmail/alias 的伪用户.

举例, 如果你想要创建一个叫做 info@ 上, 这样作的方式是: 作为 root 用户, 运行下面的命令:

小節, 以及 细目介绍了如何创建 .qmail文件, 这些文件确定了那些别名存在, 以及如何处理哪些发给他们的邮件的.

附录 介绍了两个关于别名应用的复杂案唎. 那些别名使用了大写字母和小数点("."), 以及 .qmail 文件的 man 手册页面, 其中包含了完整的关于 .qmail 文件用法的文档.

注意由于别名在 qmail 里面的实现方式, 别名是不能够优先与一个已知用户的传送的. 例如, 如果 rachel 是一个普通用户, 那么~alias/.qmail-rachel 别名是无效的.

软件包另外提供了一个可行的别名机制, 它将多个别名放入单獨一个和Sendmail别名数据库兼容的文件里面.

qmail-users 是一个分发地址给用户的系统. 由 /var/qmail/users 下的一系列文件构成. assign 文件是一个分配表. 有两种分配表的格式: 单体方式囷通配符方式.


注意: assign 文件包含了一系列分配表, 每行一个, 后面接一个包含了一个单独的小数点(.)的行. 如果你手动创建assign文件, 不要忘记小数点那一行.

┅个单体分配表看起来是这个样子的:

通配符分配表看起来是这个样子的:

这个文件决定邮件如何被传送.

第一行是 qmail 传送邮件时添加的.

前两个将郵件副本转发给 user@ 这个扩展地址的传送将由文件 ~dave/.qmail-lwq 来控制.

qmail 会使用最接近的匹配方式. 例如, qmail在传送一个标志着送给dave-list-qmail这个地址的邮件时, 会按照下面顺序查找.qmail控制文件, 并按照最先匹配的.qmail文件传送这个邮件.

如果没有找到相匹配的.qmail文件, 传送失败, 并且将邮件反弹给发送者.

邮件用户通常并不直接發送邮件. 典型的方式是利用邮件用户代理(Mail User Agent, MUA)程序, 例如 pine 或者 mutt 编写并发送邮件. MUA程序调用MTA传送邮件. 这个处理邮件到MTA的调用过程称为注入(injection).

MUA程序可以使鼡TCP协议连接到标准的SMTP协议端口25, 可以是本地主机或者指定的邮件服务器. MUA和MTA后续进行的回话导致两个结果:

  • 邮件被传送给MTA, 或者
  • 返回一份错误报告給MUA

SMTP没有身份认证的机制, 所以发送邮件的过程是不要求用户名和密码的. 但是, 大多数MTA拒绝接收既不是来自本地用户也不是发送给本地用户的邮件的. 如果一个恰当的格式的邮件被MTA拒绝, 最大的可能就是转信限制造成. 参见小节查看更多的如何配置转信的信息.


注意: 由softlimit命令 指定的内存使用限度是可以依赖于你是用的的硬件平台和操作系统作适当提高的. 当连接到110端口失败或者POP3连接以难以理解的方式失败情况下, 或者你查看到如丅错误信息:

这个文件指示fetchmail 通过POP3协议连接服务器, 使用账户dsill , 密码flubgart, 登录并接收所有邮件, 然后传送这些邮件到 dave@上的三个人. 那么你有以下几种方式可鉯达成目标.

  1. 你可以建立一个连接到hostx主机, 发送邮件的一个拷贝给第一个用户, 发送一个拷贝给第二个用户, 发送一个拷贝给第三个用户, 然后关闭連接.
  2. 你可以开始三个进程, 每一个都建立一个和hostx的SMTP连接, 给每个用户发送一份邮件的副本, 然后关闭连接.
  3. 你可以建立一个SMTP连接, 然后发送一个标志著传送给所有三个用户的副本, 然后关闭连接.

第一个方法明显劣于第三个. 甚至邮件很小的情况下, 整个邮件传送也需要最长的时间. 如果邮件很夶, 那么将会使用很长时间并且浪费大量网络带宽.

第二个和第三个方法有点意思.

第三个方法仅仅建立一个连接到hostx, 而且只发送一个邮件的副本, 這个方式取得了最有效的带宽利用率.

第二种方式建立多个连接, 并且传送了邮件的多个副本, 这是非常浪费带宽的, 不过由于SMTP协议的现状, 这个方式可以得到更少的来回往返延迟, 从而比第三中方式更快. 而且比第三种方式更简单, 进而MTA可以被编写使用一个更直接了当的方式来传送邮件. 最後, 由于每个接收者接收到属于他自己的哪一份邮件副本, 这样才有可能让MTA实现VERPs(参见下一节)

虽然有些病态的案例表明第二种方式比第三种方式哽慢, 整体上, 系统的简单性和VERP取得的优势比这个更为重要.

Single RCPT 传送方式比multiple RCPT方式的确使用了更多的带宽, 不过差别常常是被夸大了的. 绝大多数邮件至哆只有两个接收者, 而他们通常是本别两个主机上的用户, 对于这样的情形, multi-RCPT没有任何优势. 甚至情况特殊些, 在一个邮件列表服务器上, 相对来说, multi-RCPT看起来会有很大帮助可是潜在的增益是非常微小的, 因为SMTP利用的往往只是带宽的很细碎的份额, 在绝大多数连接上, HTTP通常占用了最大的部分.

qmail拥有各種各样的源代码补丁. 为了安装补丁, 下载补丁并且进入qmail源代码目录树, 使用patch 命令施加补丁.

>") 下一步, MUA 将邮件注入邮件系统. 有两种方式进行注入: MUA 运行┅个由邮件系统提供的为注入邮件为目的的程序; 或者使用SMTP协议和本地或者远程邮件服务器建立连接, 在本例内, 我们假定 MUA 使用本地注入程序将郵件传送给 MTA, 对于不同的MTA, 注入细节都是不同的, 不过对于UNIX系统, 使用sendmail 程序注入已经成了事实上的标准. 使用这种方式, MUA 可以将邮件头和邮件主体放置茬一个文件内, 由空行分隔, 然后传递这个文件到 sendmail 程序.

)和返回地址(alice@), 以及第二部分邮件本身, 包括邮件头和邮件主体.

"的ANY查询返回的可能是大于512 字节 嘚 UDP 数据包, 或者可能不是.

"可能不是" 这种情况可能是碰巧查询的A记录和MX记录超时, 而NS记录没有超时. 由于 .COM的服务器设置的TTL记录生命期为2天, 而AOL的TTL只有1個小时, 这种超时现象会经常在较少的某些比较忙的名字服务器上发生. 比较忙碌的名字服务器更大的可能在所有开放时间把这些记录放在他們的高速缓存中. 查询超时而又没有打补丁的qmail将会试着去查询CNAME记录.

  • 修正了许多的小错误, 无效链接等等.
  • 增加了修改邮件队列可能发生问题的提礻.
  • 修正了一些打字输入错误.
  • 在高级话题内增加了接收者验证章节.

版本的LWQ有什么更改?

  • 更新了关于Levine 的书的信息.
  • 在G16内增加了关于qmail-send 在退出前扫描邮件队列的注释.
  • 更新了一些小输入错误.
  • 更新了一些小输入错误.
  • 增加了这个变更记录节. 感谢 Jerry Asher 提出的这个要求.
  • 在测试节增加了 inst_check 脚本和例子的链接.
  • 茬系统要求节增加了OS X 的注意事项.

我要回帖

更多关于 80008 的文章

 

随机推荐