本文件的目的
本文件为那些管理用于内部使用的 Postfix 二进制发行版的人员,以及维护用于通用用途的 Postfix 二进制发行版的人员提供提示和建议。
通用发行版:请提供一个较小的默认 main.cf 文件
安装的 main.cf 文件必须保持简短。请务必 resist the temptation to list all parameters in the main.cf file. Postfix 设计为易于配置。在 main.cf 中列出所有参数会背离设计初衷。这会诱使业余爱好者在不理解参数含义的情况下随意修改配置,从而陷入无休止的麻烦。
通用发行版:请包含 README 或 HTML 文件
请提供相应的 README 或 HTML 文件。这些文件会被 Postfix 手册页和其他文件引用。若缺少 README 或 HTML 文件,Postfix 将难以甚至无法配置。
Postfix 安装参数
Postfix 的安装由十几个安装参数控制。请参阅 postfix-install 和 post-install 文件以获取详细信息。大多数参数具有系统相关的默认设置,可在编译时进行配置,具体请参阅 INSTALL 文件。
为其他系统准备预编译包
您可以在未安装 Postfix 的机器上构建 Postfix 包。您只需 Postfix 源代码和与目标系统兼容的编译环境。
您可以以非特权用户身份构建预编译的 Postfix 包。
首先编译 Postfix。编译成功后,执行:
% make package
对于 Postfix 2.2 之前的版本,必须直接调用 post-install 脚本(% sh post-install)。
系统将提示您输入安装参数。请指定一个与 / 不同的 install_root 目录。mail_owner 和 setgid_group 安装参数设置将记录在 main.cf 文件中,但这些设置不会立即生效,直到包在目标机器上解压并安装后才生效。
如果您希望完全自动化此过程,请在命令行中指定所有非默认安装参数:
% make non-interactive-package install_root=/some/where...
对于 Postfix 2.2 之前的版本,必须直接调用 post-install 脚本(% sh post-install -non-interactive install_root...)。
对于 Postfix 3.0 及更高版本,命令 "make package name=value ..." 会将配置参数值中的字符串 MAIL_VERSION 替换为 Postfix 发布版本。请勿在此命令行中指定类似 $mail_version 的内容。此操作会导致不同版本的 make(1) 命令产生不一致的结果。
开始安全警报
在构建用于分发的存档时,请确保仅存档文件和符号链接,而非其父目录。否则,解压预构建的 Postfix 包可能会破坏系统目录(如 /etc、/usr、/usr/bin、/var、/var/spool 等)的权限和/或所有权。如果以非特权用户身份执行了 postfix-install(参见上文),此问题尤为严重。
结束安全警报
因此,要将预构建的包打包为 tar 文件,请执行以下步骤:
% cd INSTALL_ROOT % rm -f SOMEWHERE/outputfile % find . \! -type d -print | xargs tar rf SOMEWHERE/outputfile % gzip SOMEWHERE/outputfile
这样可以避免包含可能在解压时引发问题的目录。
安装预编译的 Postfix 包
要解压预编译的 Postfix 包,执行以下命令:
# umask 022 # gzip -d <outputfile.tar.gz | (cd / ; tar xvpf -)
umask 命令用于在创建过程中确保非 Postfix 目录获得正确的权限。
- 创建 Postfix 专用的 mail_owner 账户和 setgid_group 组。
执行 postfix 命令以设置 Postfix 文件和目录的所有权及权限,并更新 Postfix 配置文件。如果需要,可以在 postfix 命令行中指定 mail_owner 或 setgid_group 的非默认设置:
# postfix set-permissions upgrade-configuration \ setgid_group=xxx mail_owner=yyy
对于 Postfix 2.1 之前的版本,您可以通过直接调用 post-install 脚本实现相同效果。