G.5. qmail 处理扩展地址的时候把大写字符转换成了小写字符. qmail转换本地地址的整个部分为小写字符. 文档参见 dot-qmail 的 man 手册页. G.6. qmail 不使用 /etc/hosts 文件 qmail 从不使用 /etc/hosts 来确定一个主机名关联的IP地址. 如果你在控制文件内使用主机名而不是IP地址, qmail必须能够访问名字服务器. 即使在没有名字服务器的情况下, 也可以运行qmail, 在control 文件内的主机由 IP 地址确定, IP地址两边必须加上方括号([ ]). 例如: [10.1.2.219] 实际上, 方括号不总是必要的--不过用上它们无论如何是恰当的. G.7. qmail 不在日志记录 SMTP 的活动. 由于很多原因, qmail 对于 SMTP 的连接, 拒信, 非法命令或者有效命令都不记录, tcpserver可以用来记录连接, recordio 可以用来记录整个 SMTP 对话. recordio 是 ucspi-tcp 的一部分. 这个过程存档在FAQ里面. 可以在这个地址 http://cr.yp.to/qmail/faq/servers.html#recordio 访问到它. G.8. qmail 不生成邮件延迟通知. 如果在几个小时内 Sendmail 无法传递邮件, 代表性的是4个小时, 它就会发送一个邮件延迟通知给邮件原始发送者. 这个通知有点像反弹邮件, 不过还不表示邮件传送永久失败了. qmail 并不发送这样的警告. 未发送邮件在队列内等待发送直到超过 queuelifetime 规定的时间后还未能发送, 才会被反弹给邮件原始发送者. G.9. qmail 由于/var/qmail/queue/lock/trigger 文件丢失、权限设置错误或者错误的文件属性设置等原因变的很慢 qmail-queue 和 qmail-send 使用一个称作 /var/qmail/queue/lock/trigger 的命名管道进行通讯. 如果这个管道陷入混乱, qmail-send 将在大约半个小时内无法注意到新邮件. 最好的方式是正确设置qmail, 在源代码目录下使用"make check"命令检查. 如果不能这样作, 那么像下面这样确定一下: # ls -l /var/qmail/queue/lock/triggerprw--w--w- 1 qmails qmail 0 Jul 5 21:25 /var/qmail/queue/lock/trigger 特别注意那一行开头的"p"(表明这是一个命名管道), 状态(特别是任意用户可写标志位), 以及用户和用户组的归属. G.10. DNS 或者 IDENT 查询使 SMTP 变慢 如果 qmail-smtpd 对连接的反应变慢, 原因可能使由于DNS反相查询或者 IDENT 查询. 如果你 使用 tcpserver 运行 qmail-smtpd, 删除 "-h", "-p", 和 "-r" 选项, 并增加 "-H", "-P", "-R", 和 "-l hostname" 选项. 参看 http://cr.yp.to/ucspi-tcp/tcpserver.html 这里的 tcpserver 的文档查看这些选项的说明. G.11. 回车(Carriage Return)和换行(CRLF)不同 qmail-inject 和其他本地注入机制比如 sendmail 不能正确接受DOS风格的回车/换行符. 不像 Sendmail, qmail 要求本地注入邮件使用 Unix 换行(只有 LF). 这和PHP 脚本遇到的问题一样. G.12. 日志回滚造成qmail-send 和 tcpserver 停止 如果你使用第二节描述的受到监控的日志服务, 日志服务将会因为以下任何原因停止: 磁盘满, run 脚本打字错误, 日志目录配置错误, 等等. 而管道将被填满, 导致服务被阻塞, 或者被挂起. 解决这个问题(参看 故障处理)之后, 所有部分都会恢复正常. G.13. qmail-smtpd 不能使地址的本地部分生效 假如 example.com 被列入control/rcpthosts 文件, 发给 anything@example.com 的邮件在SMTP会话期间将会被接受. 如果 anything 不是一个合法用户或者别名, qmail 将发送一个反弹邮件给信封上的发送者地址. 一些单纯的转信测试假设如果邮件被接受, 那么一定会被传送, 这是错的. 如果某人宣称你的系统使开放转信的, 你要查看通过转信的邮件的副本--包括完整的邮件头, 特别是 Received 部分--比较一下这些部分和你的日志记录. 要在qmail 中增加接收者认证, 请参考这小节: 在SMTP对话过程中拒绝无效接收者. G.14. 设置防火墙导致远程无法连接 SMTP/POP3/IMAP 服务器 如果安装了 SMTP, POP3 和 IMAP 服务器, 你可以在本机或者本地网络的主机连接到这些服务器, 但是无法从远程服务器连接, 很有可能是防火墙的问题. 第一个查看的地方是服务器本身. 举例, Red Hat Linux, 使用 iptables 在默认配置下是阻塞 SMTP 服务的. 其他包过滤机制比如 ipchains 也会和这个问题有关系. 也有可能是你的因特网服务提供商 (ISP) 阻塞了某些端口来防止垃圾邮件骚扰或者强制执行他们的服务条款(Terms of Service, TOS). 确认不是包过滤的原因以及你没有违反ISP的服务条款(TOS)之后, 可以联系你的ISP的技术支持解决问题. G.15. 如果USER 和 LOGNAME 没有设置的话, qmail-inject 将设置邮件发送方字段(From)为匿名(anonymous) 如果通过 qmail-inject 发送邮件, 并且邮件不包括 From 字段, qmail-inject 将查找环境变量来得知是那个用户发送的邮件. 查找变量的顺序为: QMAILUSER, MAILUSER, USER, 然后 LOGNAME. 普通用户登录期间通常要设置USER和LOGNAME变量, 不过某些批处理任务, 比如以 cron 执行的任务, 将不会设置这两个环境变量. 为了使你的 cron 任务发送的邮件有一个合法的 From 字段, 请在发信之前设置一个环境变量就可以了. G.16. 停止qmail-send进程的时候, 它不总是立即退出. 在还有邮件传送的情况下, 向qmail-send发送 KILL 信号是不能使qmail-send立刻退出的. qmail-send退出前将等待所有的qmail-local和qmail-remote进程完成任务, 这样qmail-send才能记录下传送结果. 由于这个原因, "qmailctl restart" 或者 "qmailctl stop" 这样的命令可能在qmail-send依然在运行的情况下, 报告qmail-send进程已经被停止了. 所以, 请使用"qmailctl stat"来检查"stop"和"restart"命令的实际执行结果.
如果您对本文有任何疑问或者建议,请到讨论区发表您的意见:
>>
论坛入口 <<
上一页 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 2930 31 下一页
上一篇:Postfix Ecartis HOWTO - 集成ecartis + Postfix 下一篇:Maildrop的若干常见问题集锦(FAQ)
|