先前已经提到,FreeBSD 中的 sendmail 已经安装了您的 MTA (邮件传输代理程序)。因此它负责着您的收发邮件的工作。
然而,基于不同的理由,一些系统管理员想要改变他们系统的 MTA。这些理由从简单的想要尝试另一个 MTA,到需要一个特殊的特性或者 package 依赖某个邮寄程序等等。幸运的是,不管是什么理由,FreeBSD 都能容易的改变它。
对于可用的 MTA 您有很多的选择。一个好的出发点是 FreeBSD Ports Collection,在那里您能找到很多。 当然您可以从任何位置不受任何限制的使用 MTA,只要您能让它运行在 FreeBSD 下。
开始安装您的新 MTA。一旦它被安装, 它可以让您有机会判定它是否能满足您的需要, 并且在它接管 sendmail 之前让您有机会配置您的新软件。 当完成这些之后,您应该确信安装的新软件不会尝试更改系统的二进制文件例如 /usr/bin/sendmail。 除此以外, 您的新邮件软件启用之前要已经配置好它。
具体配置请参考您所选择的 MTA 软件的配置文档或其它相关资料。
用以启动 sendmail 的流程, 在 4.5-RELEASE、 4.6-RELEASE 以及之后的版本中, 存在着十分显著的不同。 因此, 用于禁用它的方法, 也就有许多不同之处。
警告: 如果您打算禁用 sendmail 的邮件发出服务, 保持系统中有一个替代它的、 可用的邮件递送系统就非常重要。 如果您不这样做的话, 类似 periodic(8) 这样的系统功能就无法如预期的那样, 通过邮件来传送其执行结果。 您系统中的许多部分可能都假定有可用的 sendmail-兼容 系统。 如果这些应用程序继续使用 sendmail 的执行文件来发送邮件, 而您又禁用了它, 则邮件将进入 sendmail 的非活跃 (inactive) 队列, 而永远不会被送达。
输入:
sendmail_enable="NO"
到 /etc/rc.conf 文件。它将停用 sendmail 接收邮件服务, 但是如果 /etc/mail/mailer.conf 文件(见下文) 没有被改变,sendmail 将仍然可以发送邮件。
要完全地禁用 sendmail, 包括邮件的发出服务, 您就必须将
sendmail_enable="NONE"
写在 /etc/rc.conf 中。
如果您只是希望禁用 sendmail 的接信服务, 则应将
sendmail_enable="NO"
写到 /etc/rc.conf 中。 不过, 即使禁用了接信服务, 本地的送信仍将正常工作。 关于 sendmail 的启动选项的更多信息, 可以在 rc.sendmail(8) 联机手册中找到。
要彻底禁用包括邮件送出服务在内的所有 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) 联机手册.
您也许有两种方法在机器引导时运行您的新 MTA,这个也倚赖您所运行的 FreeBSD 版本。
在 /usr/local/etc/rc.d/ 中添加一个以 .sh 为后缀的脚本文件, 并可以用 root 身份运行。这个脚本应该接受 start 和 stop 参数。用如下命令启动这个脚本
/usr/local/etc/rc.d/supermailer.sh start
您也可以手工启动这个服务。如果想要停止它, 系统脚本将使用 stop 选项,运行如下命令
/usr/local/etc/rc.d/supermailer.sh stop
您也可以手工停止正在系统运行的服务。
在 FreeBSD 较后来的版本, 您可以使用上面的方法或者在 /etc/rc.conf 文件做如下设置
mta_start_script="filename"
filename 是您想要在引导时执行的 MTA 脚本文件的名字。
因为 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
一旦做完您想要配置的每件事,您应该杀掉 sendmail 进程并且启动属于您的新软件的进程, 或者简单的重启。 重启也将给您提供了确认您的系统已经进行了正确的配置的机会。 在引导的时候自动的运行您新的 MTA。
本文档和其它文档可从这里下载:ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
如果对于FreeBSD有问题,请先阅读文档,如不能解决再联系<questions@FreeBSD.org>.
关于本文档的问题请发信联系 <doc@FreeBSD.org>.