29.4. 改变您的邮件传输代理程序
上一页 | 第 29 章 电子邮件 | 下一页

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

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

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

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

### 29.4.1. 安装一个新的 MTA

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

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

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

### 29.4.2. 禁用 sendmail

### 警告:

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

要彻底禁用包括邮件送出服务在内的所有 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) 联机手册.

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

可以向 `/etc/rc.conf` 中加入配置项使新的 MTA 在系统启动时运行， 下面是一个 postfix 的例子：

`#` echo '`postfix`_enable=“YES”' >> /etc/rc.conf

这样 MTA 就能在系统启动是自动运行了。

### 29.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

### 29.4.5. 最后

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

上一页 | 上一级 | 下一页
29.3. sendmail 配置 | 起始页 | 29.5. 疑难解答

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

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