Exchangeベースのソフトウエアを作っている会社の人たちと話をする機会があった。その人たちは自分たちのソフトウエアをクラスタ・システム上でうまく動作させる方法を知りたがっていた。重要な問題点は,「Message Transfer Agent(MTA)」サービスを中心に展開していたことだった。私がその人たちに話しているうちに,その問題は自分にも襲ってきた。

 Exchange Server 2003やExchange 2000 Serverの管理者は,MTAが何で,何のためのもので,いつ使われるのかを知らないかもしれない。そこで私たちは,MTAがどのような経緯で実装されたかを調べた。

MTAが必要なわけ
 まず,Mail Transfer Agentという用語を説明しよう。明らかにそれは国際電気通信連合(ITU:International Telecommunication Union)による霧がかかった世界から出たものだ。ITUは電子メール交換用のX.400標準を普及させた組織だ(私にはITUがこの用語を作ったのか,単にUNIXの世界から引いてきただけなのかは分からない)。ともかく,MTAの目的は,サーバー間でメッセージを受け取ってリレーすることであり,必要に応じてそれらをルーティングし,「Outlook」や「Pine」などのメール・ソフトがそれらを読めるように何らかのストレージ・メカニズムに配送することである。

 Exchange Server 5.5では,MTAはメールの移動を担うコア・コンポーネントだった。Exchange 5.5はオブジェクトに対して可能な限り,X.400スタイルのアドレスを付けていた。Exchange 5.5のMTAは,X.400に最大限に準拠した実装だった。それはMicrosoftのリモート・プロシージャ・コール(RPC)メカニズムを,他のRPCでの通信に使っており,さらに個別にインストールされたプロトコル・プラグインを使って,他の種類のMTAとも対話をした。特に独立したX.400コネクタは,このシステムが直接に他のX.400システムと対話できるようにするものだった。

 ところが,ありがたいことに世界規模の通信システム(インターネットとそれに接続するあらゆるプライベート・ネットワークと企業内ネットワーク)の国際共通語はX.400ではない。SMTP(簡易メール転送プロトコル)である。Exchange 5.5はSMTPコネクタを提供していたが,Exchange 2000は,外の世界との通信にも,組織内のExchange Server間の通信にもSMTPを第1の通信手段として使っていた。しかし,MTAはやはり残っており必要なコンポーネントだった。Microsoftはそのコンポーネントなしに稼働するExchange 2000をサポートしなかった(今もサポートしていない)。

 この要件は不要に思えるが,Exchange Server 5.5間の通信にMTAのみ使うことを想定しているのを思い出してほしい。Exchange 5.5とExchange 2000をmixedモードで組み合わせる場合,Exchange Server 5.5とExchange 2000 Server間の通信にはMTAが必要である。しかし,それに伴う欠点は,Exchangeクラスタ内には1つのMTAしか同時に存在できないということである。Exchange 2000にとってはこの制限は重大な問題ではない。1つのクラスタは最大40のデータベース(サーバー当たり各5つのデータベースを持つ4つのストレージ・グループ)をサポートするからだ。

 しかしExchange 2003はもっと大きなクラスタをサポートするので,そのことで問題が生じる可能性がある。Exchangeチームがブログで解説している。デフォルトでMTAは,クラスタ当たり,Exchangeデータベースが50までという制限がある(該当サイト)。しかし,Microsoftの記事「How to increase the number of databases that are supported by the MTA service when Exchange Server 5.5 coexists with a server cluster that is running Exchange Server 2003」に書かれた手順に沿って,MTAのレジストリ・エントリを修正することで,その数を60まで増やせる(該当サイト)。

MTAを無効にできるケース
 以前,ユーザーが「なぜ自分たちがExchange 2003内のMTAを無効にできないか」と質問していた。Microsoftの従来の回答は「サポートされていない」だった。しかし現在ではこの製品のチームは,MTAを永久に無効にした場合,何か異常を起こさないかどうかをテストした後で,サポートのスタンスを変えた。先日Exchangeブログに公開されたその回答は,「ネイティブ・モードのExchange 2003環境の中ならMTAを切っても大丈夫」ということだ。スタンドアロン環境でもクラスタ構成の環境でも,MTAを止めるにはMicrosoftの記事「MTA Stacks service supportability guidelines for Exchange 2000 Server and Exchange Server 2003」に記述された手順に従わなければならない(該当サイト)。この記事では,どんな場合にMTAを止めてはいけないかを解説している。少なくともmixedモード環境のブリッジヘッド・サーバー上では依然としてMTAを必要とする。

 MTAを止めるべきだろうか?それは場合による。もしネイティブ・モードで使っているなら,MTAを無効にすると,あなたのサーバーの攻撃を受ける可能性のある部分を少しばかり減らせる。ExchangeのMTAのどのバージョンについても報告されているぜい弱性はないので,それを切る積極的な理由はない。だが,サポートされる手順に従い,無効にすれば,その機能による害を受ける心配はないだろう。