Dan Bernstein 为这个问题提出一个解决方案称为VERP(Variable Envelope Return Path). 使用VERP, 发送给每个邮件列表订户的邮件都拥有唯一的返回路径. 这让反弹控制可以控制查找有问题的订阅者. 举一个例子, 一个典型的非VERP邮件列表拥有的返回地址型如listname-owner@domain. 而对于VERP类型的邮件列表, 返回地址型如listname-owner-subscriber=sdomain@ldomain, 这里订户的地址 subscriber@sdomain被嵌入到列表拥有者"owner"和符号"@"之间了. (订阅者邮件地址的"@"符号被置换成等号"=".) ezmlm邮件列表管理器使用VERP来自动控制反弹. 对于列表暂时的传送问题造成的某些邮件丢失, 这个管理器也提供让订阅者从列表存档文件中单独接收的功能. T Russell Nelson 为qmail下的Majordomo写了一个反弹控制器, 不过他没有再继续维护这个软件. 可以在这里http://www.qmail.org/bounceman-0.4.shar 访问到它. 5.6. 故障处理 5.6.1. 进程一个恰当运行着的, 完整的, 最小化安装的qmail 应该拥有下面的四个进程. - 由用户qmails 运行的 qmail-send
- 由用户qmailq运行的qmail-clean
- 由用户qmailr运行的qmail-rspawn
- 由用户root运行的qmail-lspawn
取决于你使用的何种UNIX, 下面两个命令的一个可能列出这些进程, 而且可能还要多一点: ps -ef | grep qmail ps waux | grep qmail 举个例子: [dave@sparge dave]$ ps waux|grep qmaildave 2222 0.0 0.8 836 348 p4 S 10:25 0:00 grep qmailqmaild 351 0.0 1.0 840 400 ? S N 12:43 0:00 /usr/local/bin/tcpserver -v -x /etc/tcp.smtp.cdb -u 49491 -g 31314 0 smtp /var/qmail/bin/qmail-smtpd-qmaild 2220 0.0 1.0 844 420 ? S N 10:25 0:00 /usr/local/bin/tcpserver -v -x /etc/tcp.smtp.cdb -u 49491 -g 31314 0 smtp /var/qmail/bin/qmail-smtpd-qmaill 365 0.0 0.8 748 344 ? S N 12:43 0:00 splogger qmailqmailq 368 0.0 0.7 736 292 ? S N 12:43 0:00 qmail-cleanqmailr 367 0.0 0.6 732 272 ? S N 12:43 0:00 qmail-rspawnqmails 350 0.0 0.8 776 336 ? S N 12:43 0:00 qmail-sendroot 340 0.0 0.6 724 252 ? S N 12:43 0:00 /usr/local/sbin/supervise /var/supervise/qmail-send /var/qmail/rcroot 341 0.0 0.6 724 252 ? S N 12:43 0:00 /usr/local/sbin/supervise /var/supervise/tcpserver-qmail /usr/local/bin/tcpserver -v -x /etc/tcp.smtproot 366 0.0 0.7 736 276 ? S N 12:43 0:00 qmail-lspawn ./Mailbox[dave@sparge dave]$ 如果你在supervise下运行qmail或qmail-smtpd, 像上面的例子那样, 你应该能看到上面那些进程. 如果你在tcpserver下运行qmail-smtpd, 你将看到一个父tcpserver进程加上每个活动的SMTP访问建立的连接的tcpserver进程. 如果你使用splogger (或者 multilog 或者 cyclog) 来控制日志, 你应该还有一个 splogger(或者 multilog 或者 cyclog) 进程由用户qmaill运行着. 同时, 如果qmail忙于传送本地和远程邮件, 你将会看到最高上限为 concurrencylocal 个数的qmail-local进程, 或者最高上限为 concurrencyremote 个数的qmail-remote 进程. 5.6.2. 日志 5.6.2.1. multilogmultilog, 是daemontools 软件包内的一部分, 功能是将日志记录到指定文件夹内一系列文件上. 日志文件夹将在multilog命令行上指定, 所以你可以检查你的qmail运行脚本来确定文件夹的位置. log文件夹内文件数量以及每个log文件的最大长度, 是由multilog的选项决定的. log日志文件名是以文件开始记录时刻的TAI (Temps Atomique International) 时间戳命名的. daemontools里面的另外一个命令 tai64nlocal , 可以转换TAI时间戳为易读的本地时间戳. 一个标准的multilog日志条目看起来是下面这样的: @4000000038c3eeb104a6ecf4 delivery 153: success: did_1+0+0/ "@4000000038c3eeb104a6ecf4"是TAI时间戳, 为可选部分, 不过推荐在日志条目里面加上这个段, "delivery 153: success: did_1+0+0/" 是日志消息本身. 5.6.2.2. sploggersplogger 使用syslog 日志记录系统给消息打时间戳, 然后将消息送往syslog后台服务程序. Syslog的配置文件为 /etc/syslog.conf. 发送给syslog的消息拥有功能和优先级属性. syslog按照定义在/etc/syslog.conf里面的条目过滤消息, 并依据功能和优先级将消息发往以下目标: log日志文件, 远程日志主机, 或者控制台. splogger 默认情况下将记录到mail 功能下面, 所以用grep命令在syslog.conf文件里面查找"mail"可以显示出qmail的日志消息的配置. 典型的位置包括: - /var/log/syslog
- /var/adm/SYSLOG
- /var/log/maillog
典型的syslog日志条目看起来是这样的: Jun 3 11:35:23 sparge qmail: 928424123.963558 delivery 153: success: did_1+0+0/ "Jun 3 11:35:23" 是syslog时间戳 "sparge" 是发送这条消息的系统名子. "qmail:" 是splogger 放置在所有qmail日志条目前的标签. "928424123.963558" 是一个可选的TAI 时间戳 (参看下一节) "delivery 153: success: did_1+0+0/" 是日志消息本身. 5.6.2.3. 日志消息下面是一段从本地系统发送一个邮件到远程系统的日志片断: 1 @4000000038c3eeb027f41c7c new msg 938692 @4000000038c3eeb027f6b0a4 info msg 93869: bytes 2343 from qp 18695 uid 494913 @4000000038c3eeb02877ee94 starting delivery 2392: msg 93869 to remote lwq@w3.to
如果您对本文有任何疑问或者建议,请到讨论区发表您的意见:
>>
论坛入口 <<
上一页 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2021 22 23 24 25 26 27 28 29 30 31 下一页
上一篇:Postfix Ecartis HOWTO - 集成ecartis + Postfix 下一篇:Maildrop的若干常见问题集锦(FAQ)
|