20.4. 改变你的邮件传输代理程序

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

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

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

20.4.1. 安装一个新的MTA

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

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

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

20.4.2. 停用sendmail

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

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

Enter:

sendmail_enable="NO"

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

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

为了完全的停用 sendmail 你必须使用

sendmail_enable="NONE"

编辑/etc/rc.conf文件.

Warning如果用这个方法停用sendmail发送邮件服务, 选用一个完全能替代这个邮件发送系统的软件是件很重要的事 . 如果你没有选择这样做, 系统功能比如象periodic(8) 将不能传送. 你系统的许多parts可能期望有一个 sendmail-兼容系统. 如果程序继续使用 sendmail的二进制文件尝试传送邮件,请先停用它们 , 邮件会进入一个不活跃的 sendmail队列, 并且永不发送.

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

sendmail_enable="NO"

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

20.4.3. 机器引导时运行你的新MTA

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

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

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

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

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

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

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

20.4.3.2. FreeBSD 4.5-STABLE版本2002/4/11以后 (包括4.6-RELEASE版本和以后)

在FreeBSD较后来的版本, 你可以使用上面的方法或者你可以

/etc/rc.conf文件做如下设置

mta_start_script="filename"

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

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

20.4.5. 最后

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