Proxyの使用

Dr.Web for UNIX mail serversに含まれているプロキシによって、コンピュータリソースの管理に関する目的を達成することが可能です。

1.メールの処理や検査の操作を異なるホスト上で実行出来るようにReceiverモジュールとSenderモジュールがdrweb-maildモジュールと別々に動作しているため、Dr.Web for UNIX mail serversの効率を大幅に向上させることが出来ます。
2.ロードバランシングスキーマN:MNはメールトラフィックを処理するホストの数、Mはメールにウイルスやスパムが無いかをチェックするホストの数です)を使用することで、ネットワーク内のコンピューティングリソースを柔軟に管理できます。

 

drweb-maildコンポーネントはクラスタの導入には対応しておらず、相互間で内部データ(統計、隔離、データベース設定など)を共有出来ないので注意してください。その結果、各drweb-maildコンポーネントはそれぞれ独自の統計、隔離、および設定を持つことになります。

プロキシはdrweb-proxy-clientdrweb-proxy-serverのコンポーネントで構成されています。

drweb-proxy-client - ReceiverおよびSenderコンポーネントが動作しているコンピュータ上で動作します。drweb-maildの代わりに起動し、他のコンポーネントとの連携においてdrweb-maildと同じ役割を果たします。
drweb-proxy-server - drweb-maildモジュールが動作しているコンピューター上で動作し、、ReceiverおよびSenderコンポーネントと同じ役割を果たします。

 

drweb-proxy-clientdrweb-proxy-serverコンポーネントはお互いに連携し、オリジナルのメールメッセージ及びそれらの変更されたものを、以降のプロセスの為に、異なるホスト上にあるDr.Web for UNIX mail serversの他のコンポーネントに送ることが出来ます。

drweb-notifierdrweb-monitor、およびdrweb-agentコンポーネントはそれぞれのホスト上で動作しています。

 

proxyを使った一般的な操作スキーマは次のようになります。

Proxy

図16.proxy経由での操作図解

スキーマから分かる通りdrweb-proxy-clientdrweb-proxy-serverはどちらも、異なるホスト上にある任意の数の補助コンポーネントと連携することが出来ます。これは特別なバランスシステムを使用することによって実行されます。

 

ProxyServersAddressesまたはProxyClientsAddressesパラメータ(それぞれ[ProxyClient][ProxyServer]セクション)の値で指定されたソケットアドレスにはそれぞれ重量が割り当てられます。したがって、アドレスは次の書式で指定されます。

ADDRESS1 [WEIGHT1], ADDRESS2 [WEIGHT2] ..

 

ADDRESSにはベーシックなアドレスが入ります。WEIGHT0から100までのオプション数値で、このアドレスの重量を定義します。このWEIGHTはネットワーク内にある特定のホスト上の相対的ワークロードを定義します。値が大きいほどそのサーバーのロードが大きいことを意味します。

 

[ProxyClient]セクションのProxyServersAddressesパラメータは、drweb-proxy-server*コンポーネントがリクエストを受け取るのに使用するHOST2-*のアドレス(上記のスキーマ参照)を指定します。

 

[ProxyClient]セクションのProxyClientsAddressesパラメータは、drweb-proxy-client*コンポーネントがリクエストを受け取るのに使用するHOST1-*のアドレス(上記のスキーマ参照)を指定します。

:

ProxyServersAddresses = inet:8066@10.3.0.73 10, inet:8066@10.3.0.72 5

 

この場合、10.3.0.73ホストは10.3.0.72ホストの2倍のメールメッセージを受け取ります。WEIGHTが指定されていない場合は、デフォルトで1と見なされます。複数のアドレスが同じWEIGHTを持っている場合、それらは同等と見なされ同じ数のリクエストを受け取ります。

 

WEIGHT0に設定されている場合、そのようなアドレスはバックアップアドレスと見なされます。1またはそれよりも大きいWEIGHTを持つ利用可能なアドレスが残っていない場合のみ、それらのアドレスにリクエストが送られます。一般的なアドレス選択アルゴリズムは以下のようになります。

 

1.最も大きなWEIGHT値を持つアドレスへのメッセージ送信が試行されます。エラーが生じた場合、それよりも少ないWEIGHTを持つ次のアドレスが選ばれます(このWEIGHT1またはそれよりも大きい必要があります)。利用可能なWEIGHT ≥ 1のアドレスが残っていない場合は、バックアップアドレスが使われます(手順のp.3)。
2.選択したアドレスへのメッセージ送信が試行されます。エラーが生じた場合、このアドレスは利用できないものと見なされ、手順が初めから繰り返されます(手順のp.1)。
3.WEIGHT0より大きいアドレスが全て利用できないと分かった場合、バックアップアドレスへのメッセージ送信が試行されます。バックアップアドレスはリストに載っている順番にチェックされます。バックアップアドレスも利用不可能だった場合は、エラーが返ってきます。

 

WEIGHT値は、それぞれのサーバー上の利用可能なリソースに応じて選択し、 割り当ててください。

 

メッセージは検査の為にdrweb-maildモジュールに送られ、BeforeQueueのプラグインによって処理された後、全て送信元のクライアントに返されます。

 

メッセージがAfterQueueのプラグインによって処理された場合、その処理済みメールを受け取るクライアントのアドレスは、ProxyClientsAddresses内のクライアントアドレスの重量に応じて選択されます。

 

重複するメッセージ(Rulesの記述参照)およびdrweb-maildによって作成されたメッセージ(レポート、通知)もまた、プラグインがあるキューに関係なく、ProxyClientsAddressesのリストから選択されたクライアントに送られます。

 

ProxyClientsAddressesリストから選択されたクライアントに送信されるメッセージには、Rules内で指定された設定(もしあれば)が適用されます(例えばSenderAddressパラメータの値)。

 

proxyがMilter、Qmail、またはCourierMTA(したがってdrweb-milterモジュールと)と連携する際には、プラグインをAfterQueueに置かない方がいいという点に注意してください。現時点ではproxyはReceiverコンポーネントへのバックドアコネクションに対応していません。そのため、drweb-maildからの応答がすぐにReceiverに返って来なかった場合(例えばプラグインがAfterQueue内にある場合)、drweb-milterProcessingTimeoutの期限が切れた後にのみSMTPセッションを終了します。

 

M=N=1に対する最適な(ただし、可能なものはこれだけではありません)接続手順を下記に記します。これによって、セットアップおよび調整の際に起こりうる失敗の大半を防ぐことが出来ます。

 

M=N=1の場合は以下の手順でproxyをセットアップしてください(方法は他にもありますが、設定の際に生じるエラーを防ぐ為にこの方法を推奨します)。

 

1.HOST1-1上(つまり、メールトラフィックの処理に使用し、drweb-proxy-clientコンポーネントがあるホスト上)のDr.Web MailDをセットアップ、調整します。以下のコマンドで設定の妥当性をチェックして下さい。
/etc/init.d/drweb-monitor check - LinuxおよびSolaris
/usr/local/etc/rc.d/00.drweb-monitor.sh check - FreeBSD
2.HOST1-1上のDr.Web MailDを実行し、メールが正常に処理されているかチェックして下さい。
3.HOST2-1上(つまり、メールメッセージのチェックに使用し、drweb-proxy-serverコンポーネントがあるホスト上)のDr.Web MailDをセットアップします。ReceiverおよびSenderコンポーネントはこのホスト上では必要ないので、セットアップの際にその調整をスキップすることができます。
4.HOST1-1と同様にHOST2-1上の設定を調整してください。
5.HOST2-1上にある%etc_dir/monitorディレクトリのmmcファイルから該当するラインをコメントアウトしてReceiverおよびSenderコンポーネントのスタートアップを無効にしてください。drweb-proxy-serverコンポーネントのスタートアップは有効にする必要があります。

 

同じホスト上でdrweb-proxy-server Receiver/Senderコンポーネントを同時にスタートさせようとした場合、Dr.Web Monitorは動作を終了し、どのコンポーネントも起動されないので注意してください。このエラーに関する情報はログに出力されます。

6.HOST2-1上にあるDr.Web MailD設定ファイル[ProxyServer]セクションのProxyClientsAddressesパラメータの値としてHOST1-1のIPアドレスを指定します。このアドレスは[ProxyClient]セクションのAddressパラメータの値と同一にしてください。メールはそこに送信されます。
7.HOST2-1上の設定の妥当性を以下のコマンドでチェックして下さい。
/etc/init.d/drweb-monitor check - LinuxおよびSolaris
/usr/local/etc/rc.d/00.drweb-monitor.sh check - FreeBSD

    全て正しく設定されていれば、HOST2-1上でDr.Web MailDを起動することが出来ます。

8.HOST1-1上にあるDr.Web MailD設定ファイル内[ProxyClient]セクションのProxyServersAddressesパラメータの値としてHOST2-1のIPアドレスを指定します。このアドレスは[ProxyServer]セクションのAddressパラメータの値と同一にしてください。メッセージ検査のリクエストはそこに送信されます。
9.HOST1-1上にある%etc_dir/monitorディレクトリmmcファイルから該当するラインをコメントアウトしてdrweb-maildコンポーネントのスタートアップを無効にしてください。drweb-proxy-clientコンポーネントのスタートアップは有効にする必要があります。

 

同じホスト上でdrweb-proxy-clientdrweb-maildコンポーネントを同時にスタートさせようとした場合、Dr.Web Monitorは動作を終了し、どのコンポーネントも起動されないので注意してください。このエラーに関する情報はログに出力されます。

10. HOST1-1上の設定の妥当性を以下のコマンドでチェックして下さい。
/etc/init.d/drweb-monitor check - LinuxおよびSolaris
/usr/local/etc/rc.d/00.drweb-monitor.sh check - FreeBSD

    全て正しく設定されていれば、Dr.Web MailDを再起動することが出来ます。今後は全てのメールが検査の為にHOST2-1に転送されます。

11.HOST1-1上のDr.Web DaemonおよびDr.Web Updaterはもう必要ないので無効にしても構いません(システム上にそれ以上Dr.Web製品が無い場合)。

 

Mおよび/またはN1よりも大きい場合も、このアルゴリズムを適用することが出来ます。上記の通りに追加のホストを接続し、それらのホスト上にある設定ファイル内の該当するパラメータの値([ProxyServer]セクションのProxyClientsAddressesおよび[ProxyClient]セクションのProxyServersAddresses)を編集してください。

 

WEIGHT値は、それぞれのホスト上の利用可能なリソースの量に応じて設定する必要があります。