在Rocky Linux 8.5 版机器(下游兼容 bug-for-bug 的 Red Hat Enterprise Linux)上,我配置了 Postfix + Dovecot 设置。在对所有配置错误进行故障排除后,我到了至少可以启动这两个服务的地步。
systemctl enable dovecot.service
systemctl enable postfix.service
重启机器后,我可以看到 Dovecot 在使用systemctl status dovecot
. 另一方面,Postfix 无法启动,报告:
[root@mail ~]# systemctl status postfix
● postfix.service - Postfix Mail Transport Agent
Loaded: loaded (/usr/lib/systemd/system/postfix.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since ...; 12min ago
Process: 1419 ExecStart=/usr/sbin/postfix start (code=exited, status=1/FAILURE)
Process: 1396 ExecStartPre=/usr/libexec/postfix/chroot-update (code=exited, status=0/SUCCESS)
Process: 1364 ExecStartPre=/usr/libexec/postfix/aliasesdb (code=exited, status=0/SUCCESS)
systemd[1]: Starting Postfix Mail Transport Agent...
postfix/postfix-script[1506]: fatal: the Postfix mail system is already running
systemd[1]: postfix.service: Control process exited, code=exited status=1
systemd[1]: postfix.service: Failed with result 'exit-code'.
systemd[1]: Failed to start Postfix Mail Transport Agent.
使用快速检查postfix status
表明它确实没有运行。但令人惊讶的是,postfix start
然后启动服务没有任何问题。查询postfix status
然后报告 Postfix 正在使用新的 PID 愉快地运行。之后再查询systemctl status postfix
一次,显示与之前相同的错误报告。
但是,报告的错误没有意义。我可以systemctl disable postfix
,重新启动机器,检查 Postfix 是否真的没有同时使用,systemctl status postfix
然后postfix status
尝试启用它systemctl start postfix
并得到相同的错误。
此外,如果我在 systemd 中禁用 Postfix 服务,重新启动机器并仅使用 启动它postfix start
,该服务将启动,但systemctl status postfix
报告它已加载、不活动...
[root@mail ~]# postfix start
postfix/postfix-script: starting the Postfix mail system
[root@mail ~]# postfix status
postfix/postfix-script: the Postfix mail system is running: PID: 2169
[root@mail ~]# systemctl status postfix
● postfix.service - Postfix Mail Transport Agent
Loaded: loaded (/usr/lib/systemd/system/postfix.service; disabled; vendor preset: disabled)
Active: inactive (dead)
[root@mail ~]#
为什么 RHEL 上的 Postfix 在它断然拒绝这样工作时甚至注册为服务?那么确保 Postfix 在引导时启动的正确方法是什么?
注意:我试过chkconfig postfix on
了,因为我发现网上有人建议。这只是转发了systemctl enable postfix.service
让我回到开始的请求。
...我真的必须破解它 using /etc/rc.local
,当文件本身的内容说它只是为了兼容性目的而存在时,不应该再使用并且我应该考虑使用 systemd 服务?
更新 1:我暂时采用了一种看似合理的解决方法 -postfix start
使用/etc/rc.local
. 重新启动后,Postfix 仍然没有运行。使用 查看rc-local服务的状态,systemctl status rc-local
服务启动失败,日志中的原因和我启用后的postfix服务日志中的原因一模一样systemctl
——“fatal:postfix邮件系统已经跑步”。Postfix 在所有情况下都无法在启动时启动。