![在 Linux 上自动启动 Postfix](https://linux22.com/image/572614/%E5%9C%A8%20Linux%20%E4%B8%8A%E8%87%AA%E5%8A%A8%E5%90%AF%E5%8A%A8%20Postfix.png)
我已经按照本指南在我的服务器上安装了 postfixhttp://www.postfix.org/INSTALL.html#install
基本上就是创建我自己的包并进行安装。现在我想在服务器重启时自动启动 postfix。
我尝试添加符号链接chkconfig --add postfix
但出现此错误:error reading information on service postfix: No such file or directory
除了这个之外,我的 postfix 在服务器上运行得很好。现在要启动/停止 postfix,我使用
sudo postfix stop
sudo postfix start
关于如何让它自行启动,您有什么想法吗?
答案1
chkconfig --add postfix
通常需要在初始化脚本存储库中有一个后缀初始化脚本/etc/init.d
。
chkconfig
并且update-rc.d
(debian) 只需在 中操作脚本/etc/rc#.d/
,其中#
是默认设置的启动运行级别,/etc/inittab
与 term 一致initdefault
。我的情况是:
id:2:initdefault:
然后将调用上的符号链接/etc/rc2.d/
。此链接的名称有一个模式[S|K]\d{1,}dstname
,例如:
$ ls -l /etc/rc2.d/ | grep postfix
lrwxrwxrwx 1 root root 17 Ago 16 09:04 S22postfix -> ../init.d/postfix
S 表示/etc/init.d/postfix start
K 表示/etc/init.d/postfix stop
22是链接的执行顺序。
然后您需要检查 inittab 以获取默认运行级别( ),检查(start stop`initdefault
上的链接以获取 K 前缀链接参数)。/etc/rcX.d
X is initdefault value), and have the link with a postfix startup script as target ( a script that support
for S prefix links and
这就是 initsysv 系统的工作方式,但每个发行版可能会有一点变化。
答案2
Postfix 发行版没有附带示例启动脚本,但是您可以简单地使用提供的“postfix”包装程序,它是 Postfix 的主控制程序。
只需将其包含postfix start
在启动序列中的任何位置 - rc.local 通常是一个很好的地方。
答案3
我很想知道为什么你需要从源代码构建 Postfix。只有极少数情况下,这样做才值得。建议使用发行版提供的预编译版本。为什么?因为你不必关心安全修复。此外,你还可以享受 init 脚本等的便利。另外,还可以保证将 Postfix 与发行版中的相关软件结合使用不会出现问题。
如果你现在说“但是通过自我编译可以提高速度!”那么我不得不说“没什么好关心的”。“但是我必须关心每个 CPU 周期!”然后使用像 Gentoo 这样的发行版,它具有上述所有积极方面以及对每个螺丝的调整。
答案4
您的 postfix 发行版可能带有启动/停止脚本 - 事实上,您阅读的文档第 9 节中建议使用“postfix start”,这意味着直接运行启动/停止脚本不是二进制。
你没有提到你使用的是什么 Linux 发行版。传统上,Linux 使用SysV 初始化布局,但最近越来越多的发行版正在转向暴发户但是由于后者通常设置为向后兼容 SysV,所以如果您从 tarball 安装自己的 postfix 而不是使用包管理器,使用该模型可能会更简单。
如果你在 tarball 中找不到初始化脚本,那么互联网上有很多示例,例如这个。只需将其添加到您的初始化脚本目录中,并在运行级别目录中创建适当命名的符号链接,如上面链接的文章中所述(或者如果您的系统支持,则使用 chkconfig)。