Sun Java System Messaging Server 6 2005Q4 管理ガイド

その他の MTA 設定ファイル

imta.cnf ファイルのほかにも、Messaging Server には MTA サービスの設定に役立ついくつかの設定ファイルがあります。表 10–5 にファイルの一覧を示します。

reverseforward、または一般データベースを変更した場合は、imsimta reload コマンドを発行して変更を有効にしてください。job_controller に影響を及ぼさない imta.cnfmappings ファイル、aliasesconversions、または option.dat ファイルを変更した場合は、imsimta cnbuild に続けて imsimta restart smtp を発行する必要があります。dispatcher.cnf を変更した場合は、imsimta restart dispatcher を実行する必要があります。変更する設定ファイルが、ジョブコントローラには影響を与えるが、SMTP サーバーには影響を与えないコンパイル済みの設定に含まれる場合には、大抵、コマンドimsimta cnbuild および imsimta restart job_controller を発行する必要があります。

これらのコマンドの詳細については、『Sun Java System Messaging Server 6 2005Q4 Administration Reference』「MTA Commands」を参照してください。

表 10–5 MTA 設定ファイル

ファイル 

説明 

「エイリアスファイル」 (必須)

ディレクトリにないエイリアスを実装します。msg_svr_base/config/aliases

「TCP/IP (SMTP) チャネルオプションファイル」 (SMTP オプションファイル)

チャネル固有のオプションを設定します。msg_svr_base/config/channel_option

「変換ファイル」

変換チャネルがメッセージ本体部分の変換を制御するのに使用します。msg_svr_base/config/conversions

「ディスパッチャー設定ファイル」 (必須)

ディスパッチャー用の設定ファイルです。msg_svr_base/config/dispatcher.cnf

「ジョブコントローラファイル」 (必須)

ジョブコントローラ が使用する設定ファイルです。/msg_svr_base/config/job_controller.cnf

MTA 設定ファイル (必須) 

アドレスの書き換え、ルーティング、およびチャネル定義に使用します。/msg_svr_base/config/imta.cnf

「マッピングファイル」 (必須)

マッピングテーブルのリポジトリです。/msg_svr_base/config/mappings

「オプションファイル」

グローバル MTA オプションのファイルです。/msg_svr_base/config/option.dat

「テイラーファイル」 (必須)

場所といくつかの調整パラメータを指定するファイルです。/msg_svr_base/config/imta_tailor

一般検索テーブル (オプション) 

一般検索機能は一般データベースと同等です。再読み込み可能なコンパイル済み設定の一部です。 

場所といくつかの調整パラメータを指定するファイルです。/msg_svr_base/config/general.txt

正引き検索テーブル (オプション) 

To: アドレスの検索機能です。正引きデータベースと同等です。再読み込み可能なコンパイル済み設定の一部です。 

/msg_svr_base/config/forward.txt

リバース検索テーブル (オプション) 

From: アドレスのアドレスの検索機能です。リバースデータベースと同等です。再読み込み可能なコンパイル済み設定の一部です。/msg_svr_base/config/reverse.txt

エイリアスファイル

エイリアスファイル aliases は、ディレクトリに設定されていないエイリアスを設定します。その例として、ルートのアドレスが挙げられます。このファイルで設定したエイリアスがディレクトリにもある場合は、ファイル内の設定が無視されます。エイリアスおよび aliases ファイルの詳細については、「エイリアス」を参照してください。

aliases ファイルの変更後は、MTA を再起動するか、imsimta reload コマンドを実行してください。

TCP/IP (SMTP) チャネルオプションファイル

TCP/IP チャネルオプションファイルは、TCP/IP チャネルのさまざまな特性を制御します。チャネルオプションファイルは MTA 設定ディレクトリに保存し、x_option という名前を付けてください。x はチャネル名です。たとえば、msg_svr_base/config/imta/tcp_local_option のようになります。詳細は、「SMTP チャネルオプションを設定する」を参照してください。すべてのチャネルオプションキーワードおよび構文の詳細は、『Sun Java System Messaging Server 6 2005Q4 Administration Reference』を参照してください。

変換ファイル

変換ファイル conversions は、MTA を介して送受信されるメッセージの変換チャネルにおける変換方法を指定します。変換には、MTA トラフィックの任意のサブセットを選択できます。また、変換処理を行うには、プログラムまたはコマンドの任意のセットを使用できます。MTA は変換ファイルに基づいて、それぞれのメッセージ本文に対する適切な変換を選択します。

このファイルの構文の詳細は、「変換チャネル」を参照してください。

ディスパッチャー設定ファイル

ディスパッチャー設定ファイル dispatcher.cnf では、ディスパッチャーの設定情報を指定します。インストール時に作成されたデフォルトの設定ファイルをそのまま使用することができます。ただし、セキュリティーやパフォーマンスなどの理由でデフォルトの設定ファイルを変更する場合は、dispatcher.cnf ファイルを編集することができます(概念の詳細は、「ディスパッチャー」を参照)。

ディスパッチャー設定ファイルのフォーマットは、ほかの MTA 設定ファイルのフォーマットに似ています。オプションを指定する行は、次の形式で記述されています。

option=value

option はオプション名で、value はオプションを設定する文字列または整数です。option が整数の値を受け入れる場合は、b%v の文字列表記ルールを使って基数を指定できます。この場合、b は底 10 で表す基数であり、v は底 b で表す実際の値です。これらのオプションの仕様は、次のオプション設定を適用するサービスに対応するセクションに、グループ分けされています。各行では、次の形式が使用されます。

[SERVICE=service-name]

The service-name はサービスの名前です。最初のオプション仕様、すなわちこのようなセクションタグよりも前に記述されているオプション仕様はすべてのセクションに適用されます。

次に、ディスパッチャー設定ファイル (dispatcher.cnf) の例を示します。


! オプションの最初のセットは [SERVICE=xxx] ヘッダーなしで
! 表示された、すべてのサービスに適用されるデフォルトオプション
! です。
!
MIN_PROCS=0
MAX_PROCS=5
MIN_CONNS=5
MAX_CONNS=20
MAX_LIFE_TIME=86400
MAX_LIFE_CONNS=100
MAX_SHUTDOWN=2
!
! ディスパッチャーで使用できるサービスを定義する
!
[SERVICE=SMTP]
PORT=25
IMAGE=msg_svr_base/lib/tcp_smtp_server
LOGFILE=msg_svr_base/log/tcp_smtp_server.log

このファイルのパラメータの詳細については、『Sun Java System Messaging Server 6 2005Q4 Administration Reference』を参照してください。

マッピングファイル

mappings ファイルでは、MTA が入力文字列を出力文字列にマップする方法を定義します。

MTA コンポーネントの多くは、テーブル検索に基づいた情報を使用します。一般に、このタイプのテーブルは、入力文字列を出力文字列に変える (マップする) のに使用されます。このようなテーブルは、マッピングテーブルと呼ばれ、通常 2 つのカラムで構成されます。1 つめ (左側) のカラムには入力文字列が、2 つめ (右側) のカラムにはその入力文字列に関連付けられた出力文字列が並んでいます。MTA データベースのほとんどは、このタイプのマッピングテーブルです。ただし、MTA データベースファイルには、ワイルドカード検索機能がありません。データベース全体でワイルドカードに一致するものを検索するのは非効率的だからです。

mappings ファイルによって、MTA は複数のマッピングテーブルをサポートできるようになります。さらに、完全なワイルドカード機能もあり、複数の手順や反復マッピング方法にも対応しています。このアプローチは、データベースを使用する場合に比べ、さらに多くの処理を必要とします。特に、エントリ数が多い場合などはなおさらです。ただし、それに付随して柔軟性が増すため、同等のデータベースにおけるエントリのほとんどを必要としなくなり、全体的にオーバーヘッドが少なくなります。

imsimta test -mapping コマンドを使ってマッピングテーブルをテストすることができます。mappings ファイルの構文および test -mapping コマンドの詳細は、「マッピングファイル」および『Sun Java System Messaging Server 6 2005Q4 Administration Reference』を参照してください。

mappings ファイルの変更後は、MTA を再起動するか、imsimta reload コマンドを実行してください。

オプションファイル

オプションファイル option.dat は、グローバル MTA オプションを指定します。これは、チャネル固有のオプションとは逆のオプションです。

オプションファイルを使って、MTA 全体に適用されるさまざまなパラメータのデフォルト値を無効にすることができます。特に、オプションファイルは、設定ファイルやエイリアスファイルが読み込まれるさまざまなテーブルのサイズを確立するのに使用されます。また、MTA が許可するメッセージのサイズを制御したり、MTA 設定で許可するチャネル数を指定したり、許可する書き換えルールの数を設定したりできます。

option.dat では、#!、または ; で始まる行はコメント行として処理されます。先行する行の末尾に、続きがあることを示す \ がある場合でも同様です。配信オプションなど、これらの文字を含む長いオプションの場合には注意が必要です。

配信オプションの場合は、自然なレイアウトは # または ! で始まる継続行になりますが、確実で整然とした回避方法はあります。

オプションファイルの構文の詳細については、『Sun Java System Messaging Server 6 2005Q4 Administration Reference』を参照してください。

テイラーファイル

テイラーファイル imta_tailor は、さまざまな MTA コンポーネントの場所を設定します。MTA が正常に機能するには、imta_tailor ファイルが常に msg_svr_base/config ディレクトリ内になければなりません。

このファイルを編集して特定の設定にその変更を反映させることはできますが、その際には注意が必要です。このファイルを変更した場合は、必ず MTA を再起動してください。MTA が停止しているときに変更を行うのが望ましい方法です。


注 –

特に必要でないかぎり、このファイルを変更することは避けてください。


このファイルの詳細については、『Sun Java System Messaging Server 6 2005Q4 Administration Reference』を参照してください。

ジョブコントローラファイル

ジョブコントローラは、メッセージを配信するためのチャネルジョブを作成および管理します。これらのチャネルジョブは、ジョブコントローラ内の処理プール内で実行されます。プールは、チャネルジョブが実行される「場所」であると考えることができます。プールは、プール外のジョブとリソースを奪い合うことなく処理できる計算領域です。ジョブコントローラの概念とチャネルキーワードの設定については、「ジョブコントローラ」「チャネル実行ジョブの処理プール」、および 「サービスジョブの制限」を参照してください。

ジョブコントローラファイル job_controller.cnf では、次のチャネル処理情報を指定します。

imta.cnf ファイルでは、pool キーワードを使ってプロセスプール (job_controller.cnf で定義) の名前を指定します。たとえば、次のサンプルファイル job_controller.cnf の要素は、プール MY_POOL を定義します。

[POOL=MY_POOL]
job_limit = 12

次のサンプルファイル imta.cnf の要素は、チャネルブロック内でプール MY_POOL を指定します。

channel_x pool MY_POOL
channel_x-daemon

デフォルトのプール設定に関連付けられたパラメータを変更したり、プールを追加する場合は、job_controller.cnf ファイルを編集し、ジョブコントローラをいったん終了してから再起動してください。

ジョブコントローラ設定ファイルの最初のプールは、プール名が指定されていないすべての要求に使用されます。MTA 設定ファイル (imta.cnf) で定義されている MTA チャネルは、後ろにプール名が続く pool チャネルキーワードを使って、特定のプールに処理要求を送ることができます。このプール名は、ジョブコントローラ設定のプール名と一致しなければなりません。ジョブコントローラが要求されたプール名を認識できない場合、その要求は無視されます。

最初の設定で、次のプールを定義します。DEFAULTLOCAL_POOLIMS_POOLSMTP_POOL

使用例

通常、特定のチャネルの処理を別のチャネルの処理と区別する場合は、ジョブコントローラ設定に付加的なプール定義を追加します。また、特性が異なるプールを使用することもできます。たとえば、チャネルが処理できる同時要求の数を制御する必要があるとします。これを行うには、ジョブ範囲を設定した新規プールを作成し、pool チャネルキーワードを使ってチャネルをより適切なプールに割り当てます。

プール定義のほかに、ジョブコントローラ設定ファイルには、各チャネルの要求を処理するのに必要な MTA チャネルとコマンドのテーブルが含まれています。要求には「マスター」と「スレーブ」の 2 種類があります。一般に、チャネルマスタープログラムは、そのチャネルの MTA メッセージキューにメッセージが保存されている場合に呼び出されます。マスタープログラムは、メッセージをキューから取り出します。

スレーブプログラムは、チャネルをポーリングし、そのチャネル内の受信メッセージを取り込むために呼び出されます。マスタープログラムはほぼすべての MTA チャネルにありますが、スレーブプログラムは MTA チャネルにはほとんどなく、必要とされません。たとえば、TCP/IP を介して SMTP を処理するチャネルではスレーブプログラムは使用されません。これは、すべての SMTP サーバーからの要求に応じて、ネットワークサービスである SMTP サーバーが着信 SMTP メッセージを受け取るためです。SMTP チャネルのマスタープログラムは、MTA の SMTP クライアントです。

チャネルに関連付けられた宛先システムが一度に複数のメッセージを処理できない場合は、ジョブ範囲が 1 である新しいタイプのプールを作成する必要があります。

[POOL=single_job]
job_limit=1

一方、宛先システムで並行処理が可能な場合は、ジョブ範囲の値を増やすことができます。

例 10–1 に、ジョブコントローラ設定ファイルの例を示します。表 10–6 に、使用可能なオプションを示します。


例 10–1 ジョブコントローラ設定ファイルの例 (UNIX)


! MTA ジョブコントローラ設定ファイル
!
! グローバルデフォルト
tcp_port=27442         (1)
secret=never mind
slave_command=NULL     (2)
max_life_age=3600      (3)
!
!
! プールの定義
!
[POOL=DEFAULT]         (4)
job_limit=10           (5)
!
[POOL=LOCAL_POOL]
job_limit=10
!
[POOL=IMS_POOL]
job_limit=1
!
[POOL=SMTP_POOL]
job_limit=1
!
! チャネルの定義
!
!
[CHANNEL=l]             (6)
master_command=msg_svr_base/lib/l_master
!
[CHANNEL=ims-ms]
master_command=msg_svr_base/lib/ims_master
!
[CHANNEL=tcp_*]         (7)
anon_host=0
master_command=msg_svr_base/lib/tcp_smtp_client

以下に、上の例の主な項目 (太字の丸括弧付きの数字がある部分) について説明します。

  1. このグルーバルオプションは、ジョブコントローラが要求を待機する TCP ポート番号を定義します。

  2. そのあとの [CHANNEL] セクションのデフォルト SLAVE_COMMAND を設定します。

  3. そのあとの [CHANNEL] セクションのデフォルト MAX_LIFE_AGE を設定します。

  4. この [POOL] セクションは、DEFAULT という名前のプールを定義します。

  5. このプールの JOB_LIMIT10 に設定します。

  6. この [CHANNEL] セクションは、l という名前のチャネル (UNIX ローカルチャネル) に適用されます。このセクションに必要な定義は、ジョブコントローラがこの チャネルを実行するために発行する master_command だけです。このチャネル名にはワイルドカードが含まれていないため、チャネル名は完全に一致しなければなりません。

  7. この [CHANNEL] セクションは、tcp_* で始まるすべてのチャネル名に適用されます。このチャネル名にはワイルドカードが含まれているため、tcp_ で始まるすべてのチャネルに一致します。

追加プールの例

ジョブコントローラは、メッセージを配信するためのチャネルジョブを作成および管理します。これらのチャネルジョブは、ジョブコントローラ内の処理プール内で実行されます。プールは、チャネルジョブが実行される「場所」であると考えることができます。プールは、プール外のジョブとリソースを奪い合うことなく処理できる計算領域です。ジョブ範囲は、job_controller にプールごとに設定されます。たとえば、SMTP_POOLjob_limit を 10 と定義すれば、このプールで実行できる tcp_smtp クライアントプロセスは常に 10 個だけです。

tcp_* チャネルを追加する必要があることもあります。たとえば、メール処理が非常に遅いサイト用の tcp チャネルなどです。このようなチャネルは別のプールで実行することをお勧めします。理由は、tcp_* チャネルを 10 個作成し、SMTP_POOL ですべてを実行する場合は、tcp_* チャネルごとに常に 1 つの tcp_smtp クライアントだけを実行することが可能であるからです (ただし、メールの宛先がすべて tcp_* チャネルであり、SMTP_POOL10 個の job_limit で定義されている場合)。システムに大きな負荷があり、どのキューにも複数の tcp_* チャネル宛の待機メッセージがある場合は、十分ではありません。スロットが競合しないように、新しい tcp_* チャネルに別のプールを定義することも考えられます。

たとえば、次の tcp_* チャネルを設定する場合を考えてみます。


tcp_yahoo smtp mx pool yahoo_pool keyword keyword keyword
tcp-yahoo-daemon

tcp_aol smtp mx keyword keyword keyword pool aol_pool
tcp-aol-daemon

tcp_hotmail smtp mx pool hotmail_pool keyword keyword keyword 
tcp-hotmail-daemon
...
tcp_sun smtp mx pool sun_pool keyword keyword keyword
tcp-sun-daemon

新規チャネルごとに 10 個の tcp_smtp_client 処理を追加するには、job_controller.cnf ファイルに次のように追加します。


[POOL=yahoo_pool]
job_limit=10

[POOL=aol_pool]
job_limit=10

[POOL=hotmail_pool]
job_limit=10

 ...

[POOL=sun_pool]
job_limit=10

プールの詳細については、「チャネル実行ジョブの処理プール」を参照してください。『Sun Java System Messaging Server 6 2005Q4 Administration Reference』を参照してください。

表 10–6 ジョブコントローラ設定ファイルのオプション

オプション 

説明 

一般的なオプション 

説明 

INTERFACE_ADDRESS=adapter

ジョブコントローラがバインドする IP アドレスインタフェースを指定します。値 (アダプタ) には、ANYALLLOCALHOST、または IP アドレスのいずれかを指定できます。デフォルトで、ジョブコントローラはすべてのアドレスにバインドします (ALL または ANY の指定に相当)。INTERFACE_ADDRESS=LOCALHOST を指定すると、ジョブコントローラは、ローカルマシンからの接続しか受け付けられません。これは、ジョブコントローラではマシン間の操作はサポートされていないため、通常の操作には影響がありません。ただし、HA エージェントがジョブコントローラの応答をチェックする HA 環境では、不適切かもしれません。Messaging Server の実行しているマシンが HA 環境にあり、「内部ネットワーク」アダプタと「外部ネットワーク」アダプタを持っている場合で、大きなポート番号への接続をブロックするファイアウォール機能の信頼性が低い場合は、「内部ネットワーク」アダプタの IP アドレスを指定することをお勧めします。

MAX_MESSAGES=integer

ジョブコントローラは、メモリ内構造でメッセージに関する情報を保持します。バックログが大きくなった場合は、この構造のサイズを制限する必要があります。バックログのメッセージ数がこのパラメータ値を超えると、その後のメッセージに関する情報はメモリに保存されません。メールメッセージは常にディスクに書き込まれるため、失われることはありませんが、ジョブコントローラが認識するメッセージ数がこの値の半分になるまで配信されません。この時点では、ジョブコントローラが imsimta cache -sync コマンドを模倣してプールディレクトリをスキャンします。

デフォルトは 100000 です。 

SECRET=file_spec

ジョブコントローラに送信される要求を保護するための共有の秘密情報です。 

SYNCH_TIME=time_spec

ジョブコントローラは定期的にディスク上のプールファイルをスキャンしてファイルが不足していないかどうかをチェックします。デフォルトでは 4 時間ごとにスキャンされます (ジョブコントローラが起動してから 4 時間ごと)。time_spec のフォーマットは HH:MM/hh:mm または /hh:mmhh.mm 変数は、イベントの間隔を時間数 (h) と分数 (m) で示します。HH:MM 変数は、1 日の中でイベントが最初に発生する時間です。たとえば 15:45/7:15 と指定すると、15:45 にイベントが開始し、その後 7 時間 15 分ごとにイベントが実行されます。

TCP_PORT=integer

ジョブコントローラが要求パケットをリッスンする TCP ポートを指定します。このオプションは、デフォルト値がシステム内の別の TCP アプリケーションと競合しないかぎり変更しないでください。このオプションを変更する必要がある場合は、対応する MTA テイラーファイル (msg_svr_base/config/imta_tailor) の IMTA_JBC_SERVICE オプションも同じように変更する必要があります。TCP_PORT オプションはグローバルに適用され、[CHANNEL] セクションまたは [POOL] セクション内にある場合は無視されます。

プールオプション

説明

JOB_LIMIT=integer

プールが同時に使用できるプロセスの最大数を指定します。JOB_LIMIT は各プールに個別に適用されます。ジョブの最大合計数は、すべてのプールの JOB_LIMIT パラメータの合計数です。この値をセクションの外に設定すると、JOB_LIMIT が指定されていない [POOL] セクションにより、デフォルトとして使用されます。このオプションは、[CHANNEL] セクション内では無視されます。

チャネルオプション

説明

MASTER_COMMAND=file_spec

チャネルを実行し、そのチャネルからメッセージを取り出すために、ジョブコントローラによって作成された UNIX システムプロセスが実行するコマンドのフルパスを指定します。この値をセクションの外に設定すると、MASTER_COMMAND が指定されていない [CHANNEL] セクションにより、デフォルトとして使用されます。[POOL] セクション内では、このオプションが無視されます。

MAX_LIFE_AGE=integer

チャネルマスタージョブに対する最大のライフタイムを秒数で指定します。このパラメータがチャネルに指定されていない場合は、グローバルなデフォルト値が使用されます。デフォルト値が指定されていない場合は、14400 (240 分) が使用されます。 

MAX_LIFE_CONNS=integer

マスターチャネルの寿命は、最長使用期間パラメータのほか、メッセージがあるかどうかをジョブコントローラに確認する回数によっても制限されます。このパラメータがチャネルに指定されていない場合は、グローバルなデフォルト値が使用されます。デフォルト値が指定されていない場合は 300 が使用されます。 

SLAVE_COMMAND=file_spec

チャネルを実行し、そのチャネルに入れるメッセージをポーリングするために、ジョブコントローラによって作成された UNIX システムプロセスが実行するコマンドのフルパスを指定します。ほとんどの場合、MTA チャネルには SLAVE_COMMAND がありません。その場合は、予約値である NULL を指定します。この値をセクションの外に設定すると、SLAVE_COMMAND が指定されていない [CHANNEL] セクションにより、デフォルトとして使用されます。[POOL] セクション内では、このオプションが無視されます。