22.4. 改变您的邮件传输代理程序

Written by Andrew Boothman. Information taken from e-mails written by Gregory Neil Shapiro.

先前已经提到,FreeBSD 中的 sendmail 已经安装了您的 MTA (邮件传输代理程序)。因此它它负责着您的收发邮件的工作。

然而,基于不同的理由,一些系统管理员想要改变他们系统的 MTA。这些理由从简单的想要尝试另一个 MTA,到需要一个特殊的特性或者 package 依赖某个邮寄程序等等。幸运的是,不管是什么理由,FreeBSD 都能容易的改变它。

22.4.1. 安装一个新的 MTA

对于可用的 MTA 您有很多的选择。一个好的出发点是 FreeBSD Ports Collection,在那里您能找到很多。 当然您可以从任何位置不受任何限制的使用 MTA,只要您能让它运行在 FreeBSD 下。

开始安装您的新 MTA。一旦它被安装, 它可以让您有机会决定它是否能满足您的需要和在接管 sendmail 之前让您有机会配置您的新软件。 当完成这些之后,您应该确信安装的新软件不会尝试更改系统的二进制文件例如象 /usr/bin/sendmail。除此以外, 您的新邮件软件启用之前要已经配置好它。

具体配置请参考您所选择的 MTA 软件的配置文档或其它相关资料。

22.4.2. 停用 sendmail

值得注意的是启动 sendmail 在 4.5-RELEASE 版本和 4.6-RELEASE 版本之间有些不同。因此,停用它的过程也稍有不同。

22.4.2.1. FreeBSD 4.5-STABLE 版本 2002/4/4 之前和更早前版本 (包括 4.5-RELEASE 及更早版本)

输入:

sendmail_enable="NO"

/etc/rc.conf 文件。它将停用 sendmail 接收邮件服务, 但是如果 /etc/mail/mailer.conf 文件(见下文) 没有被改变,sendmail 将仍然可以发送邮件。

22.4.2.2. FreeBSD 4.5-STABLE 版本 2002/4/4 之后和以后的版本 (包括 4.6-RELEASE 及后续版本)

为了完全的停用 sendmail,您必须在 /etc/rc.conf 文件里使用

sendmail_enable="NONE"

Warning如果用这个方法停止 sendmail 的发送邮件服务,那么就必须有一个能够完全正常地工作的邮件发送系统。 如果不这样做的话,类似 periodic(8) 这样的系统功能将无法正确地通过电子邮件将它们的执行结果送到通常希望的地方去。 系统中的很多部分都要求有和 sendmail 在功能上兼容的系统。 如果应用程序在您禁用之后仍然继续使用 sendmail 的执行文件来发送文件, 则这些邮件可能会进入睡眠的 sendmail 队列,并永远无法到达目的地。

如果只是想要停止 sendmail 的接收邮件服务, 您应该在 /etc/rc.conf 文件中设置

sendmail_enable="NO"

更多的有关 sendmail 可用的启动选项,参看 rc.sendmail(8) 联机手册.

22.4.3. 机器引导时运行您的新 MTA

您也许有两种方法在机器引导时运行您的新 MTA,这个也倚赖您所运行的 FreeBSD 版本。

22.4.3.1. FreeBSD 4.5-STABLE 版本 2002/4/11 以前 (包括 4.5-RELEASE 及更早版本)

/usr/local/etc/rc.d/ 中添加一个以 .sh 为后缀的脚本文件, 并可以用 root 身份运行。这个脚本应该接受 startstop 参数。用如下命令启动这个脚本

/usr/local/etc/rc.d/supermailer.sh start

您也可以手工启动这个服务。如果想要停止它, 系统脚本将使用 stop 选项,运行如下命令

/usr/local/etc/rc.d/supermailer.sh stop

您也可以手工停止正在系统运行的服务。

22.4.3.2. FreeBSD 4.5-STABLE 版本 2002/4/11 以后 (包括 4.6-RELEASE 及后续版本)

在 FreeBSD 较后来的版本, 您可以使用上面的方法或者在 /etc/rc.conf 文件做如下设置

mta_start_script="filename"

filename 是您想要在引导时执行的 MTA 脚本文件的名字。

22.4.4. 替换系统默认的邮寄程序 sendmail

因为 sendmail 程序是一个在 UNIX® 系统下普遍存在的一个标准的软件,一些软件就假定它已经被安装并且配置好。 基于这个原因,许多其它的 MTA 提供者都提供了兼容 sendmail 的命令行界面来执行。 这使它们象“混入”sendmail 一样变的很容易掌握。

因此,如果您使用其它的邮寄程序, 您必须确定这个软件是去尝试运行标准的 sendmail 二进制,就象 /usr/bin/sendmail,还是运行您自己选择的替换邮寄程序。 幸运的是,FreeBSD 提供了一个系统调用 mailwrapper(8),它能为您做这件工作。

sendmail 安装后被运行,您可以在 /etc/mail/mailer.conf 中找到如下行:

sendmail    /usr/libexec/sendmail/sendmail
send-mail   /usr/libexec/sendmail/sendmail
mailq       /usr/libexec/sendmail/sendmail
newaliases  /usr/libexec/sendmail/sendmail
hoststat    /usr/libexec/sendmail/sendmail
purgestat   /usr/libexec/sendmail/sendmail

这个的意思就是当这些公共命令 (例如 sendmail 它本身) 运行时, 系统实际上调用了一个 sendmail 指定的 mailwrapper 的副本,它检查 mailer.conf 并且运行 /usr/libexec/sendmail/sendmail 做为替代。当默认的 sendmail 功能被调用, 系统将很容易的改变实际上运行的二进制文件。

因此如果您想要 /usr/local/supermailer/bin/sendmail-compat 替换 sendmail 被运行,您应该改变 /etc/mail/mailer.conf 文件为:

sendmail    /usr/local/supermailer/bin/sendmail-compat
send-mail   /usr/local/supermailer/bin/sendmail-compat
mailq       /usr/local/supermailer/bin/mailq-compat
newaliases  /usr/local/supermailer/bin/newaliases-compat
hoststat    /usr/local/supermailer/bin/hoststat-compat
purgestat   /usr/local/supermailer/bin/purgestat-compat

22.4.5. 最后

一旦做完您想要配置的每件事,您应该杀掉 sendmail 进程并且启动属于您的新软件的进程, 或者简单的重启。重启也将给您机会保证您正确的配置您的系统, 在引导的时候自动的运行您新的 MTA。