为什么在运行某些 sendmail 命令后,我会看到“sendmail:queue runner”作为一个进程,但在运行其他 sendmail 命令后却看不到?

为什么在运行某些 sendmail 命令后,我会看到“sendmail:queue runner”作为一个进程,但在运行其他 sendmail 命令后却看不到?

我正在尝试解决 SendMail 中的一些队列处理问题,但我不明白为什么在ps遵循某些 sendmail 命令的输出中看到引用,而在遵循其他命令的输出中却看不到。

我有一个 8.14.x 发送邮件服务器,目前正在进行几项操作:

/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 表明持久运行器进程中包含“running”一词:

root 22947 512 ? S 08:32 0:00 sendmail: running queue: /var/spool/mqueues/
q.1/df

答案1

  1. sendmail -bd -q5m启动主守护进程(sendmail: accepting connections)。守护进程将生成一次队列运行进程需要的时候

  2. 您需要单独的命令来启动客户端队列运行器进程(sendmail: Queue runner@00:05:00 for /var/spool/clientmqueue)。客户端队列运行器行为由 控制,submit.cf而不是由 控制sendmail.cf
    [某些设置使用定期的“单次运行” cron 作业来处理客户端队列,而不是永久队列运行器]

相关内容