http://www.ietf.org/rfc/rfc1893.txt RFC 1894, An Extensible Message Format for Delivery Status Notifications. http://www.ietf.org/rfc/rfc1894.txt RFC 1939, Post Office Protocol - Version 3. http://www.ietf.org/rfc/rfc1939.txt RFC 1985, SMTP Service Extension for Remote Message Queue Starting (ETRN). http://www.ietf.org/rfc/rfc1985.txt RFC 1991, PGP Message Exchange Formats. http://www.ietf.org/rfc/rfc1991.txt RFC 2015, MIME Security with Pretty Good Privacy. (PGP). http://www.ietf.org/rfc/rfc2015.txt RFC 2045, MIME Internet message bodies. http://www.ietf.org/rfc/rfc2045.txt RFC 2046, MIME Media Types. http://www.ietf.org/rfc/rfc2046.txt RFC 2047, MIME Headers. http://www.ietf.org/rfc/rfc2047.txt RFC 2048, MIME Registration Procedures. http://www.ietf.org/rfc/rfc2048.txt RFC 2049, MIME Conformance Criteria. http://www.ietf.org/rfc/rfc2049.txt RFC 2142, Mailbox names for common services. http://www.ietf.org/rfc/rfc2142.txt RFC 2183, Content Disposition header. http://www.ietf.org/rfc/rfc2183.txt RFC 2821, Simple Mail Transfer Protocol. http://www.ietf.org/rfc/rfc2821.txt RFC 2822, Internet Message Format http://www.ietf.org/rfc/rfc2822.txt 一个综合性的邮件相关RFC列表可以在Internet Mail Consortium的web网站上找到 http://www.imc.org/mail-standards.html.
附录 D. 体系结构 D.1. 模块化系统结构 因特网MTA可以完成多种任务. 早期如 Sendmail和 smail的设计是整体式的, 换句话说就是他们是一个大而复杂的程序, 其中一部分是SMTP服务器, 另一部分是SMTP客户端, 另外的是本地邮件注入, 还有管理邮件队列的部分,等等. qmail是模块化的, 每个功能都是由单独的程序执行的, 结果程序更小, 更简单, 而且更不容易出现功能和安全方面的问题. 为了进一步增强qmail的安全性, qmail模块以不同的权限模式运行, 模块之间互不"信任", 他们并不以为其他模块总是按照他们假定的方式去运行. 这些是qmail的核心模块: | 模块 | 功能 | | qmail-smtpd | 接收/拒收通过SMTP传递的邮件 | | qmail-inject | 本地邮件注入 | | qmail-rspawn/qmail-remote | 控制远程传输 | | qmail-lspawn/qmail-local | 控制本地传输 | | qmail-send | 处理队列 | | qmail-clean | 清除队列 |
模块化也有一些不利因素, 整体式的MTA, 模块之间的相互作用定义良好, 而且模块之间只是交换最小的必要信息. 这是个大好事, 但模块化方式使处理某些事情变的困难起来. 举个例子, 为了debug目的, 运行sendmail 并使用"-v"选项, 使 Sendmail 打印它的活动跟踪消息到标准输出, 由于所有的包括邮件注入, 队列控制, 别名处理, .forward文件处理, 以及远程SMTP转发邮件等等都是由一个 sendmail 二进制程序控制, 那么可以很容易的跟踪整个邮件传送过程直到邮件被送抵目的地. 这样的等价物在qmail里面是不存在的, 如果在qmail上执行这样的"debug"过程, 需要实质性的改变源码以及在模块到模块之间的过程调试, 这增加了的很大复杂性. D.2. 文件结构 /var/qmail 是qmail的文件结构的根. 在qmail 编译安装的时候可以选择改变这个目录的位置, 不过最好还是不作改动的安装到默认位置, 这样其他的管理员就知道到哪里能找到需要的东西. 如果你真的想重新定位部分或者全部的qmail 目录树, 最好的办法是使用符号连接方式. 详细信息请参看创建目录 小节中的细目. qmail 根目录下面的一级子目录: | 目录 | 内容 | | alias | 系统级别名定义的.qmail文件 | | bin | 二进制程序和可执行脚本 | | boot | 启动脚本 | | control | 配置文件 | | doc | 文档(不包括man 手册页) | | man | man 手册页 | | queue | 未送出的邮件 | | users | qmail-users 的数据库文件 |
D.3. 队列结构 在qmail的安装目录下的 INTERNALS文件更充分的讨论了有关的细节信息. 下面是一些更宽泛的队列结构的概述. |