我正在尝试对 SendMail 中的一些队列处理问题进行故障排除,并且对为什么在ps
某些 sendmail 命令而不是其他命令之后的输出中看到引用感到困惑。
我有一个 8.14.x 的 sendmail 服务器,目前我正在进行一些操作:
/usr/sbin/sendmail -L Foo_Instance -Ac -q 5m -C /etc/foo/mail/Foo_Instance/submit.cf
当我启动它,然后检查正在运行的进程时,我看到:
root 7642 0.0 0.0 9400 1736 ? Ss 18:20 0:00 sendmail: accepting connections
smmsp 7650 0.0 0.0 8348 1528 ? Ss 18:20 0:00 sendmail: Queue runner@00:05:00 for /var/spool/clientmqueue
101 7668 0.0 0.0 8348 1536 ? Ss 18:20 0:00 sendmail: Queue runner@00:05:00 for /var/spool/mqueue-foo/Foo_Instance/msp
root 7671 0.0 0.0 4028 668 pts/0 R+ 18:20 0:00 grep sendmail
我想这很好,但是如果我停止一切并运行:
/usr/sbin/sendmail -bd -q5m -L Foo_Instance -C /etc/foo/mail/Foo_Instance/sendmail.cf
...然后检查正在运行的进程,我看到:
root 7823 0.0 0.0 9404 1740 ? Ss 18:24 0:00 sendmail: accepting connections
root 7830 0.0 0.0 4028 688 pts/0 R+ 18:25 0:00 grep sendmail
这里的主要区别是我在 ps 输出中看不到“Queue runner”。为什么我两次都看不到单独的进程?还是没有时间?
即使我没有看到队列运行器进程,我也会在日志中看到队列正在重试的指示。
起初,我认为这可能会发生,因为 . 后面有一个错误的空格-q
。但是即使我跑步,这种行为仍然会发生
/usr/sbin/sendmail -L Foo_Instance -Ac -q5m -C /etc/foo/mail/Foo_Instance/submit.cf
我认为也许“Queue runner@xx:xx:xx”可能表明队列运行器是一个持久的队列运行器,但 batbook 表明一个持久的运行器进程将在其中包含“运行”这个词:
root 22947 512 ? S 08:32 0:00 sendmail: running queue: /var/spool/mqueues/
q.1/df
sendmail -bd -q5m
启动主守护进程 (sendmail: accepting connections
)。守护进程将在需要时生成队列运行器进程一次队列运行。您需要单独的命令来启动客户端队列运行器进程 (
sendmail: Queue runner@00:05:00 for /var/spool/clientmqueue
)。客户端队列运行器行为由submit.cf
not by控制sendmail.cf
。[某些设置使用定期“单次运行”cron 作业来处理客户端队列而不是永久队列运行器]