为什么 pickup 服务需要 Postfix master 唤醒?

为什么 pickup 服务需要 Postfix master 唤醒?

Postfix master.cf文件包含唤醒qmgr服务的定义:

# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (no)    (never) (100)
# ==========================================================================
...
qmgr      unix  n       -       n       300     1       qmgr
...

来自 qmgr手册页,“等待收到的邮件并通过 Postfix 传递流程安排其传递。”没错,我看到邮件到达后是如何沿着收到的邮件队列和活动队列移动的。

但是为什么需要唤醒时间呢?qmgr 进程始终处于运行状态,执行其工作。根据唤醒计划,我预计只有在调用后才会看到工作,每 300 秒一次,但这没有太大意义,因为在这种情况下,每次只有邮件被移动。

答案1

启用详细的“qmgr -v”日志打印更多见解后,该过程似乎在master.cf 上定义的计划时间被唤醒:

2024-01-22T11:53:09.068813+01:00 mx postfix/qmgr[3633521]: trigger_server_accept_local: trigger arrived
2024-01-22T11:53:09.068835+01:00 mx postfix/qmgr[3633521]: master_notify: status 0
2024-01-22T11:53:09.068841+01:00 mx postfix/qmgr[3633521]: request: 87 (W)
2024-01-22T11:53:09.068848+01:00 mx postfix/qmgr[3633521]: request: 0 (?)
2024-01-22T11:53:09.068854+01:00 mx postfix/qmgr[3633521]: request ignored
2024-01-22T11:53:09.068861+01:00 mx postfix/qmgr[3633521]: qmgr_scan_start: start incoming queue scan
2024-01-22T11:53:09.068867+01:00 mx postfix/qmgr[3633521]: master_notify: status 1
2024-01-22T11:53:09.068874+01:00 mx postfix/qmgr[3633521]: done incoming queue scan

当有新邮件到达时,qmgr 就会启动并将命名的消息文件插入到活动队列中。

2024-01-22T11:59:44.274607+01:00 mx postfix/qmgr[3633521]: trigger_server_accept_local: trigger arrived
2024-01-22T11:59:44.274630+01:00 mx postfix/qmgr[3633521]: master_notify: status 0
2024-01-22T11:59:44.274640+01:00 mx postfix/qmgr[3633521]: request: 87 (W)
2024-01-22T11:59:44.274649+01:00 mx postfix/qmgr[3633521]: request: 0 (?)
2024-01-22T11:59:44.274658+01:00 mx postfix/qmgr[3633521]: request ignored
2024-01-22T11:59:44.274667+01:00 mx postfix/qmgr[3633521]: qmgr_scan_start: start incoming queue scan
2024-01-22T11:59:44.274676+01:00 mx postfix/qmgr[3633521]: master_notify: status 1
2024-01-22T11:59:44.274685+01:00 mx postfix/qmgr[3633521]: qmgr_active_feed: queue incoming
2024-01-22T11:59:44.274695+01:00 mx postfix/qmgr[3633521]: qmgr_active_feed: incoming/419B440602
2024-01-22T11:59:44.274704+01:00 mx postfix/qmgr[3633521]: qmgr_message_alloc: active 419B440602

所以我可以确认Postfix 邮件列表

我不相信 qmgr 会运行,除非在端口 25 上有连接。我没有看过 postfix 源代码,但似乎 postfix 足够聪明,可以在有连接时检查 qmgr,发现它没有运行,然后生成它。同样,每 5 分钟它就会尝试唤醒 qmgr,发现它没有运行,然后生成它。

qmgr 不需要等到唤醒时间,当有新邮件到达时,清理服务会调用它,并且主进程也已配置好。

相关内容