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

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

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

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

26.4.1 安装一个新的 MTA

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

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

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

26.4.2 禁用 sendmail

  用以启动 sendmail 的流程, 在 4.5-RELEASE、 4.6-RELEASE 以及之后的版本中, 存在着十分显著的不同。 因此, 用于禁用它的方法, 也就有许多不同之处。

警告: 如果您打算禁用 sendmail 的邮件发出服务, 保持系统中有一个替代它的、 可用的邮件递送系统就非常重要。 如果您不这样做的话, 类似 periodic(8) 这样的系统功能就无法如预期的那样, 通过邮件来传送其执行结果。 您系统中的许多部分可能都假定有可用的 sendmail-兼容 系统。 如果这些应用程序继续使用 sendmail 的执行文件来发送邮件, 而您又禁用了它, 则邮件将进入 sendmail 的非活跃 (inactive) 队列, 而永远不会被送达。

26.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 将仍然可以发送邮件。

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

  要完全地禁用 sendmail, 包括邮件的发出服务, 您就必须将

sendmail_enable="NONE"

  写在 /etc/rc.conf 中。

  如果您只是希望禁用 sendmail 的接信服务, 则应将

sendmail_enable="NO"

  写到 /etc/rc.conf 中。 不过, 即使禁用了接信服务, 本地的送信仍将正常工作。 关于 sendmail 的启动选项的更多信息, 可以在 rc.sendmail(8) 联机手册中找到。

26.4.2.3 FreeBSD 5.0-STABLE 和更高版本

  要彻底禁用包括邮件送出服务在内的所有 sendmail 功能, 必须将

sendmail_enable="NO"
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"

  写入 /etc/rc.conf

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

sendmail_enable="NO"

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

26.4.3 机器引导时运行您的新 MTA

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

26.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

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

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

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

mta_start_script="filename"

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

26.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

26.4.5 最后

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

本文档和其它文档可从这里下载:ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

如果对于FreeBSD有问题,请先阅读文档,如不能解决再联系<questions@FreeBSD.org>.
关于本文档的问题请发信联系 <doc@FreeBSD.org>.