FreeBSD ハンドブック
Prev | Chapter 20. 電子メール | Next

# 20.4. MTA の変更

原作: Andrew Boothman. Information taken from e-mails written by Gregory Neil Shapiro.

すでに述べたように、FreeBSD には MTA (Mail Transfer Agent) として、 sendmail がすでにインストールされています。 したがって、デフォルトではこれがメールの送受信を担当しています。

しかしながら、さまざまな理由によって、 システムの MTA を変更しようと考えるシステム管理者もいるかもしれません。 その理由は、単に他の MTA を試してみたいというものから 他のメーラに依存する特定の機能やパッケージが必要だといったものまで、 多岐にわたることでしょう。 幸い、理由がどんなものであれ、FreeBSD では簡単に変更できます。

## 20.4.1. 新しい MTA のインストール

さまざまな MTA が利用できます。 FreeBSD Ports Collection から探しはじめるのがよいでしょう。 もちろん、どんな場所からでも、あなたが利用したい MTA が FreeBSD で動作する限りすべて自由に使えます。

新しい MTA をインストールすることからはじめましょう。 新しい MTA をインストールすると、 あなたの要求が実際に実現したかどうか決める機会が与えられます。さらに、 サービスを sendmail から引き継ぐ前に 新しいソフトウェアを設定する機会が与えられます。これを行う場合、 新しいソフトウェアが `/usr/bin/sendmail` のようなシステムバイナリを上書きしようとしないことを確認してください。 そうしないとあなたが設定する前に新しいメールソフトウェアが本格的に動作しはじめてしまいます。

あなたが選択したソフトウェアを設定する方法についての情報は、 その MTA の文書を参照してください。

## 20.4.2. sendmail を無効にする

sendmail を起動するために使用されていた手続きは、 4.5-RELEASE と 4.6-RELEASE の間で著しく変更されました。 したがって、それを無効にするための手続きは微妙に違います。

### 20.4.2.1. 2002 年 4 月 4 日より前の FreeBSD 4.5-STABLE (4.5-RELEASE とそれ以前のバージョンが該当)

`/etc/rc.conf` に次の行を加えてください。

    sendmail_enable="NO"

これは sendmail のメール受信機能を無効にします。 しかし `/etc/mail/mailer.conf` (下記参照) が変更されていなければ、sendmail はメールの送信にまだ使われるでしょう。

### 20.4.2.2. 2002 年 4 月 4 日以降の FreeBSD 4.5-STABLE (4.6-RELEASE とそれ以降のバージョンが該当)

sendmail を完全に無効にするためには `/etc/rc.conf` に次の行を加えなくてはいけません。

    sendmail_enable="NONE"

> Warningもしこの方法で sendmail のメール送信機能を無効にしたのなら、 完全に動作する代替メール配送システムと置き換えることが重要です。 さもなければ、periodic(8) などのシステム機能は、 それらの結果を通常想定しているようにメールで配送することができなくなるでしょう。 システムの多くの部分が sendmail 互換のシステムがあることを想定しているかもしれません。 もしそれらを無効にした後に、 アプリケーションがメールを送ろうとするために sendmail のバイナリを使用し続ければ、 メールは使われていない sendmail のキューに入り、そして決して配送されないでしょう。

もし sendmail のメール受信機能だけを無効にしたいのなら `/etc/rc.conf` に以下の行を追加してください。

    sendmail_enable="NO"

sendmailの起動オプションに関する詳細は rc.sendmail(8) マニュアルをご覧ください。

## 20.4.3. 起動時に新しい MTA を起動する

起動時に新しい MTA を起動するには二つの選択肢があります。 ここでも、あなたが稼働させている FreeBSD のバージョンに依存します

### 20.4.3.1. 2002 年 4 月 11 日より前の FreeBSD 4.5-STABLE (4.5-RELEASE とそれ以前のバージョンが該当)

`/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

これはシステムが稼働している間に手動でサーバを停止するためにも使えます。

### 20.4.3.2. 2002 年 4 月 11 日以降の FreeBSD 4.5-STABLE (4.6-RELEASE とそれ以降のバージョンが該当)

より新しいバージョンの FreeBSD では、 上記の方法または次の行を `/etc/rc.conf` に設定できます。

    mta_start_script="filename"

`filename` は、あなたが MTA を立ち上げるために起動時に実行するスクリプト名です。

## 20.4.4. システムのデフォルトメーラとして sendmail を置き換える

sendmail プログラムは UNIX® システム上の標準ソフトウェアとして本当にどこでも利用できるので、 これがすでにインストールおよび設定されているとみなしている ソフトウェアもあるかもしれません。 この理由により、代替となる MTA の多くは sendmail コマンドラインインタフェースと 互換性のある実装を提供しています。 これを “差し込む” ことによって、 sendmail の置き換えとして代替 MTA を使用することが容易になります。

したがって、あなたが互換メーラを使用しているときには、 `/usr/bin/sendmail` のような標準 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` 自身のような) が実行されても、 システムは `mailer.conf` を確認して、 代わりに `/usr/libexec/sendmail/sendmail` を実行する `sendmail` という名前の mailwapper のコピーを呼び出すことを意味します。 このようなシステムでは、デフォルトの `sendmail` が呼び出されたときに、 どのバイナリが実際に実行されるかを変更するのが簡単になります。

したがって、sendmail の代わりに `/usr/local/supermailer/bin/sendmail-compat` を実行させたいのなら、次のように `/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 が起動時に正しく立ち上がるように システムが設定されているかどうか確認することもできるでしょう。

Prev | Home | Next
sendmail の設定 | Up | トラブルシュート