Sun Java System Messaging Server 6.3 管理ガイド

第 19 章 MeterMaid を使用した着信接続の調整

MeterMaid は conn_throttle.so を代替するリポジトリプロセスであり、同様の機能を提供しますが、Messaging Server のインストール全体にその機能を拡張します。MeterMaid は、割り当て量の超過を監視する役割を果たします。

19.1 技術の概要

conn_throttle は、MTA のマッピングテーブルからのコールアウトとして使用される共有ライブラリであり、着信接続のメモリー内テーブルを使用して、特定の IP アドレスが最近頻繁に接続されすぎている場合は、しばらく受信しないようにするべきであると判断します。メモリー内テーブルを持つとパフォーマンスの面では有効ですが、その最大のコストは、各サーバー上の個別のプロセスごとに独自のテーブルが保持されることです。

ほとんどの場合、conn_throttle のコールアウトは、各システム上の 1 つのプロセスであるディスパッチャーによってアクセスされる PORT_ACCESS マッピングで実行されます。この場合の唯一のコストは、サーバーごとに個別のテーブルが存在することです。

MeterMaid による主な機能向上は、Messaging Server 環境内のすべてのシステムおよびプロセスからアクセス可能な、調整情報の単一のリポジトリが存在することです。このデータを格納するためのメモリー内データベースが引き続き保持されるため、パフォーマンスが最大限に向上します。MeterMaid を再起動すると以前に格納されていた情報はすべて失われますが、このデータは一般に寿命が非常に短いため、このような (たまに実行される) 再起動のコストは非常に低くなります。

19.2 動作原理

MeterMaid の設定は msg.conf 内に格納され、configutil によって保守されます。

MeterMaid は、check_metermaid.so を使用したマッピングテーブルのコールアウトを介して MTA からアクセスされます。MeterMaid は、任意の *_ACCESS テーブルから呼び出すことができます。PORT_ACCESS テーブルから呼び出した場合は、接続の IP アドレスに基づいた制限をチェックできます。これが、MeterMaid を以前の conn_throttle.so の代替として実装するためのもっとも一般的な方法です。その他の *_ACCESS テーブルから呼び出した場合は、MeterMaid を使用して、IP アドレスだけでなくエンベロープ From またはエンベロープ To アドレスなどのほかのデータに対する制限を確立することもできます。

check_metermaid.so 内のエントリポイントは 1 つだけ定義されます。throttle ルーチンは MeterMaid に接続して、コンマで区切られたそれ以降の 2 つの引数を提供します。最初の引数はデータをチェックするテーブルの名前であり、2 番目はチェック対象のデータです。

プローブからの結果により、チェック対象の特定のデータがそのテーブル内の制限容量を超えていることが示された場合、このエントリがマッピングエンジンによって引き続き処理されるように、check_metermaid.so は「success」を返します。それによって、エントリの残りの部分が、制限容量を超えたこの接続を処理するために使用されます。


    PORT_ACCESS

        *|*|*|*|* $C$|INTERNAL_IP;$3|$Y$E
        *|*|*|*|* $C$:A$[/opt/SUNWmsgsr/lib/check_metermaid.so,throttle,tablename,$3]$N421$ Connection$ \
        declined$ at$ this$ time$E
        * $YEXTERNAL

マッピングテーブルエントリ内の、check_metermaid.so への呼び出しの前にある $:A フラグテストに注意してください。このテストは、自身のプローブに対して A フラグを設定するディスパッチャーによって PORT_ACCESS がチェックされている場合にのみ MeterMaid プローブを実行するためのものです。

19.3 MeterMaid の設定

MeterMaid を使用するには、最低限、次の操作を行なってください。

  1. 次のコマンドを発行して、local.metermaid.enable configutil パラメータを yes に設定します。


    # Configutil -o local.metermaid.enable yes
  2. マッピングファイル内の既存の *_ACCESS マッピングテーブルに *_ACCESS マッピングテーブルまたはエントリを追加します。PORT_ACCESS マッピングテーブルを使用する場合は、次のエントリを使用できます。


        PORT_ACCESS
    
            *|*|*|*|* $C$|INTERNAL_IP;$3|$Y$E
            *|*|*|*|* $C$:A$[/opt/SUNWmsgsr/lib/check_metermaid.so,throttle,tablename,$3]$N421$ \
            Connection$ declined$ at$ this$ time$E
            * $YEXTERNAL
  3. 次のコマンドを発行します。


    # imsimta cnbuild
    # imsimta restart dispatcher

19.4 MeterMaid のための configutil パラメータ

MeterMaid の設定は msg.conf 内に格納され、configutil によって保守されます。現在 MeterMaid でサポートされている設定を次に示します。

次の設定は、check_metermaid クライアントによって使用されます。

最後に、次に示すように、調整用のテーブルも msg.conf 内に定義されます。各設定パラメータ内の * は、定義される特定のテーブルの名前です。たとえば、internal という名前のテーブルの場合、最初のパラメータは metermaid.table.internal.data_type になります。