Sendmail 的构建脚本默认使用一个站点配置文件,该文件对应于您的操作系统类型,以获取有关系统安装和各种编译值的定义信息。此文件位于名为devtools/OS的子目录中,如果您运行的是 Linux 系统,则该文件将被命名为Linux。我们将重建此站点配置文件以适应我们的 Linux 系统安装,并将其放在 Sendmail 源代码分发的默认devtools/OS子目录中,因为 Build 脚本将在 Sendmail 的编译期间在此目录中查找默认的站点配置文件。
移动到新的 Sendmail 目录,编辑 Linux 文件,videvtools/OS/Linux,并删除所有预定义的行,然后在此文件中添加以下行
define(`confENVDEF', `-DPICKY_QF_NAME_CHECK -DXDEBUG=0') define(`confCC', `egcs') define(`confOPTIMIZE', `-O9 -funroll-loops -mcpu=pentiumpro -march=pentiumpro -fomit-frame-pointer -fno-exceptions') define(`confLIBS', `-lnsl') define(`confLDOPTS', `-s') define(`confMANROOT', `/usr/man/man') define(`confMANOWN', `root') define(`confMANGRP', `root') define(`confMANMODE', `644') define(`confMAN1SRC', `1') define(`confMAN5SRC', `5') define(`confMAN8SRC', `8') define(`confDEPEND_TYPE', `CC-M') define(`confNO_HELPFILE_INSTALL) define(`confSBINGRP', `root') define(`confSBINMODE', `6755') define(`confUBINOWN', `root') define(`confUBINGRP', `root') define(`confEBINDIR', `/usr/sbin') |
这告诉 Linux 文件针对此特定配置设置自身,配置为
此宏选项主要用于指定应特别包含或排除的代码。使用-DPICKY_QF_NAME_CHECK定义后,如果qf文件的名称格式不正确,Sendmail 将记录错误,并将qf文件重命名为Qf文件。-DXDEBUG=0参数禁用编译期间的额外内部检查步骤。
此宏选项定义用于编译 Sendmail 的 C 编译器。在我们的例子中,我们使用 egcs C 编译器以获得更好的优化。
此宏选项定义传递给 CC 的标志,用于与我们特定的 CPU 架构相关的优化。
此宏选项定义传递给 ld 的 -l 标志。
此宏选项定义传递给 ld 的链接器选项。
此宏选项定义安装 Sendmail man 手册页的位置。
此宏选项定义所有 Sendmail 已安装 man 手册页的所有者。
此宏选项定义所有 Sendmail 已安装 man 手册页的组。
此宏选项定义所有 Sendmail 已安装 man 手册页的模式。
此宏选项定义安装在 confMAN1 中的 man 手册页的源。
此宏选项定义安装在 confMAN5 中的 man 手册页的源。
此宏选项定义安装在 confMAN8 中的 man 手册页的源。
此宏选项指定如何使用 Sendmail 构建依赖项。
此宏选项指定默认情况下不安装 Sendmail 帮助文件。一些经验丰富的管理员建议这样做,以获得更好的安全性。
此宏选项定义所有 Sendmail setuid 二进制文件的组。
此宏选项定义所有 Sendmail setuid 二进制文件的模式。
此宏选项定义 Sendmail 二进制文件的所有者。
此宏选项定义 Sendmail 二进制文件的组。
此宏选项定义从其他二进制文件执行的二进制文件的安装位置。在 Red Hat Linux 上,路径必须设置为/usr/sbin目录。
现在我们必须在服务器中编译和安装 Sendmail
sh Build 命令将构建并为 Sendmail 安装在系统上所需的各种二进制文件创建必要的依赖项。
sh Build install 命令将安装 sendmail、mailstats、makemap、praliases、smrsh 二进制文件以及使用此命令编译时系统上相应的 man 手册页。
ln -fs 命令将 sendmail 二进制文件符号链接到/usr/lib目录。这是必需的,因为某些程序希望在此目录中找到 sendmail 二进制文件/usr/lib.
install 命令将在mqueue下创建权限为 755 的目录/var/spool。邮件消息可能由于多种原因而暂时无法投递。为了确保最终投递这些消息,Sendmail 会将其存储在其队列目录中,直到可以成功投递为止。
chown 命令将为mqueue目录。
mkdir 命令将创建/etc/smrsh系统上的目录。此目录是我们放置所有程序邮件程序的位置,我们允许 Sendmail 能够运行这些程序邮件程序。
: 程序 makemap 和 praliases 只能安装在中央邮件枢纽服务器上。makemap 允许您创建数据库映射,例如/etc/mail/aliases.db或/etc/mail/access.db文件,用于 Sendmail。praliases 显示系统邮件别名,即/etc/mail/aliases 文件的内容。由于最好只有一个地方(例如我们的中央邮件枢纽)来处理和管理我们网络中的所有db文件,因此没有必要在网络中的其他主机上使用 makemap 和 praliases 程序并构建db文件。