28.4. 更改邮件传输代理程序

Written by Andrew Boothman.
Information taken from emails written by Gregory Neil Shapiro.

FreeBSD 自带的 Sendmail已经安装了 MTA, 它负责发送和接收邮件。但是,系统管理员可以更改系统的MTA。在 FreeBSD Ports Collection 中的 mail 类别中, 有很多可供选择的 MTA

一旦安装了新的MTA,在更换Sendmail之前,请先配置和测试新软件。有关如何配置软件的信息,请参阅新的MTA的文档。

新的MTA工作后,使用本节中的说明禁用Sendmail。并将 FreeBSD 配置为使用该 MTA

28.4.1. 关闭Sendmail

警告:

如果Sendmail的外发邮件服务被禁用,则必须用其他邮件发送系统替代。否则,periodic(8)等系统功能将无法通过邮件发送结果。系统的许多部分期望有一个功能MTA。如果应用程序在禁用后继续使用Sendmail的二进制文件来尝试发送电子邮件,邮件可能会进入非活动的Sendmail队列,并且永远不会被发送。

为了完全禁用Sendmail,请在/etc/rc.conf中添加或编辑以下行:

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

要仅禁用Sendmail的传入邮件服务,只需在/etc/rc.conf中添加此条目:

sendmail_enable="NO"

有关Sendmail的启动选项的详细信息,请访问rc.sendmail(8)

28.4.2. 替换预设的MTA

当使用 Ports Collection 安装新的 MTA 时,它的启动脚本也会被安装,并在其包消息中提到启动说明。在启动新的MTA之前,请停止正在运行的Sendmail进程。这个例子会停止所有这些服务,然后启动Postfix服务:

# service sendmail stop
# service postfix start

要在系统启动时启动替换MTA,将其配置行添加到/etc/rc.conf。此条目启用 Postfix MTA

postfix_enable="YES"

需要一些额外的配置,因为Sendmail是如此的无处不在,以至于一些软件认为它已经安装和配置好了。检查/etc/periodic.conf并确保这些值设置为NO。如果这个文件不存在,请用这些条目创建它:

daily_clean_hoststat_enable="NO"
daily_status_mail_rejects_enable="NO"
daily_status_include_submit_mailq="NO"
daily_submit_queuerun="NO"

一些MTA提供了兼容Sendmail命令行接口,以方便使用它们作为Sendmail的替代方案。然而, 一些 MUA 可能会尝试执行标准的 Sendmail二进制文件, 而不是新的 MTA的二进制文件。FreeBSD 使用 /etc/mail/mailer.conf 将预期的 Sendmail 二进制文件映射到新的二进制文件的位置。有关此映射的更多信息, 请参见 mailwrapper(8)

以下是初始的/etc/mail/mailer.conf

# $FreeBSD$
#
# Execute the "real" sendmail program, named /usr/libexec/sendmail/sendmail
#
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

当左边列出的任何一个命令被运行时,系统实际上会执行右边显示的相关命令。这个系统可以很容易地改变在调用这些默认的二进制文件时执行哪些二进制文件。

Some MTAs, when installed using the Ports Collection, will prompt to update this file for the new binaries. For example, Postfix will update the file like this:

#
# Execute the Postfix sendmail program, named /usr/local/sbin/sendmail
#
sendmail        /usr/local/sbin/sendmail
send-mail       /usr/local/sbin/sendmail
mailq           /usr/local/sbin/sendmail
newaliases      /usr/local/sbin/sendmail

如果MTA的安装没有自动更新 /etc/mail/mailer.conf,编辑这个文件,在文本编辑器,使其指向新的二进制文件。本例中指向了由mail/ssmtp安装的二进制程序:

sendmail        /usr/local/sbin/ssmtp
send-mail       /usr/local/sbin/ssmtp
mailq           /usr/local/sbin/ssmtp
newaliases      /usr/local/sbin/ssmtp
hoststat        /usr/bin/true
purgestat       /usr/bin/true

一旦一切配置完毕,建议重新启动系统。重启后,可以检查系统在启动时是否启动MTA,来检测配置是否生效。

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

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

关于本文档的问题请发信联系 <doc@FreeBSD.org>.