CommuniGate Pro
Version 5.1
メッセージ転送
 
 
 
PIPE

PIPE モジュール

サーバーコンピュータ上の外部アプリケーションから送信されたメッセージは、PIPE モジュールを 介してCommuniGate Pro サーバーに送られます。この場合、TCP/IP 接続とインターネットプロトコ ルは使用されず、PIPE モジュールによって直接処理されます。また、サーバーから外部アプリケー ションに送信されたメッセージもPIPE モジュールによって処理されます。

さらに、PIPE モジュールを使うことで、sendmail などのメールプログラム(CommuniGate Pro サーバーソフトウェアに付属) で作成されたメッセージを送信することもできます。こうしたメー ルプログラムは、従来のメールプログラムやsendmail プログラムの代替ソフトウェアとして使用できます。

Submitted フォルダ

CommuniGate Pro をインストールすると、PIPE モジュールによって、ベースフォルダ(ベースディレ クトリ) の中にSubmitted フォルダが作成されます。

このSubmitted フォルダの内容( メッセージ) は、PIPE モジュールによって定期的にスキャンされま す。スキャンで、拡張子が.sub のファイル(テキストファイル) が見つかった場合、その内容が メッセージキュー(message queue) ファイルにコピーされ、そのファイルがサーバーのカーネルに送られます。

.sub テキストファイルにはメッセージを格納できますが(つまり、.sub ファイルをSubmitted フォル ダに作成し、送信が可能です) 、そのフォーマットはRFC822 フォーマットでなければなりません。 メッセージはいずれも、そのRFC822 ヘッダフィールドを使ってエンベロープが作成されます。メッ セージの処理は、次のようにして行われます。

.sub ファイルの処理が失敗したときには(例えば、.sub ファイルに受取人アドレスが一つもなかっ た場合)、PIPE モジュールにより、システムログにログレコードが記録されます。また、ファイル拡 張子が.sub から.bad に変更されます。

.subファイルがSubmitted フォルダから正常に送信された場合、その.subファイルはSubmitted フォル ダから削除されます。

Submitted フォルダはPIPE モジュールによって処理されますが、処理の安全を考慮し、まず、Submitted フォルダ以外のフォルダ内に.sub ファイルを作成し、その後、作成した.sub ファイルをSubmitted フォルダに移動するようにします。または、拡張子を.tmp としてSubmitted フォルダにファイルを 作成し、その後、拡張子を.sub に変更するという方法も使用できます。

PIPE モジュール(Submitted フォルダ) を介してメッセージを送信した場合、そのメッセージにはい ずれも「信頼ソースから受信」というマークが付加されます。したがって、こういったメッセージは 制限なしでリレーされます。

Submitted フォルダについては、詳しくはレガシーメールエミュレーションの説明を参照してください。


外部アプリケーションへのメッセージの送信

メッセージをPIPE モジュールを介して外部アプリケーションに送信する場合、メッセージのドメイ ンとしてパイプ(pipe) ドメインを指定します。

また、メッセージのアドレスのローカル部に外部アプリケーションの名前を指定します。このローカ ル部には、パラメータを指定することもできます。指定する場合、アプリケーションの名前とパラメー タを引用符で囲みます。

例:
アドレスとして"execjoe -l store"@pipe を指定した場合、そのメッセージはアプリケー ションexecjoe に送られ、そのアプリケーションはパラメータとして-l store を使って起 動します。
PIPE モジュールを使ってメッセージを送信する場合、
ルータレコードを使います。例えば、次のよう にレコードを定義します(somedomain は、任意のドメイン)。
<*@somedomain> = exec*@pipe
t上のルータレコードにより、アドレスjoe@somedomain 宛てのメッセージがアプリケーション execjoe に送られるようになります。

<*@somedomain> = "execall\ -u\ *"@pipe
また、上のルータレコードでは、アドレスjoe@somedomain 宛のメッセージがアプリケーション execallに送られ、アプリケーションexecallが-u とjoeの2つのパラメータを使って起動されます。

使用する外部アプリケーションは、外部アプリケーションディレクトリに置いておかなければなりま せん。このディレクトリの設定は、PIPE モジュールの設定ページの[Application Directory] オプショ ンで行えます。また、メッセージのアドレスのアプリケーション名( ローカル部) は、その名前の中 にスラッシュ(/) やバックスラッシュ(\\) を置くことはできませんし、先頭にドット(.) を付加 することもできません。そのほか、指定するアプリケーションの名前は、外部アプリケーションディ レクトリに格納されているアプリケーション(プログラム) ファイルの名前でなければなりません。

メッセージテキスト(ヘッダとボディ) は、外部アプリケーションに標準入力として渡されます。
注意: 外部アプリケーションでは、標準入力データストリーム全体が読み取られなければなりません。 そうでない場合、メッセージの処理は失敗します。

外部アプリケーション側の処理が完了すると、PIPE モジュールによりアプリケーションの標準出力が 読み取られ、その後、標準出力が破棄されます。この場合、アプリケーション側では、標準出力には 書き込みが行われないようにしなければなりません。書き込みが実行されるようになっている場合、 CommuniGate Pro サーバーと外部アプリケーションの間の通信チャネル(パイプ) がフルになったと きに、外部アプリケーションの処理がブロックされます。

また、外部アプリケーション側の処理が完了すると、PIPE モジュールによりアプリケーションの標 準エラーチャンネルの内容が読み取られます。標準エラーチャンネルの内容が空でなかった場合、 メッセージの配信は遅延されます。同時に、標準エラーに書き込まれているテキストがエラーレポー トとしてメッセージの送信者に送られます。

順次送信

PIPE モジュールでプロセッサが複数使用されるように設定してある場合、メッセージについてそれぞ れキューが作成され、各キューを使って複数のメッセージが同時に送信されます。一方、順次処理で メッセージを送信(単一のキューを使ってメッセージを順次配信) することもできます。その場合、 アドレスを次の形式で指定します。下で、name はキュー名、application はアプリケーション名、 parameters はパラメータです。
"queue[name] application parameters"@pipe
上の形式のアドレスを使うことで、そのメッセージは指定したキュー( name) に格納され、単一のプ ロセッサを使って、キューのメッセージが順次、指定したアプリケーションに送信されます。キュー 名( name) には任意の文字列(英数字) を指定できます。また、ルータレコードを使って、キューを 複数使用することもできます。

例えば、キューを2 つ(PROC1 とARCH) 使ってメッセージの順次送信を行いたいときには、次のルータレコードを使います。

<incoming> = "queue[PROC1] procin -mark"@pipe
<control>  = "queue[PROC1] procin1 -control"@pipe
<archiver> = "queue[ARCH] appendfile /var/archive"@pipe
上のルータレコードにより、<incoming@maindomain.com> または<control@maindomain.com> 宛の メッセージはすべて、PIPE モジュールの単一のプロセッサ(キューPROC1) を使って一つず つ処理されるようになります。また、<archiver@maindomain.com> 宛のメッセージには、別の キュー(キューARCH) が使われます。

メッセージのアドレスにキュー名( name) が指定されていない場合、そのメッセージのキュー(名 前は番号) が別個に作成されます。

コマンドタグ

メッセージテキスト(ヘッダとボディ) は、外部アプリケーションのタスクに対して、そのタスクの 標準入力( stdin) として送られます。

外部アプリケーションで、その標準エラーチャンネルに何らかの書き込みが行われた場合、そのアプ リケーションに対するメッセージの送信は失敗し、同時にメッセージの送信者に標準エラーテキスト が送信されます。外部アプリケーションの名前には、接頭辞として[FILE] タグを付加できます(application はア プリケーション名、parameters はパラメータ)。
[FILE] application parameters
この接頭辞を付加しておくと、そのアプリケーションの標準入力が空(閉鎖) になり、同時に次の文 字列(-f フラグとメッセージファイルの名前、パスはベースディレクトリからの相対パス)、 -f Queue/fileid.msg がアプリケーションのパラメータの末尾に追加されます。例えば、次のようになります。
-f Queue/12002345.msg

注意: 上記のメッセージファイル(Queue/fileid.msg) には、その先頭にサービス情報(エンベ ロープ情報、オプションなど) が格納されています。外部アプリケーション側では、このサービス情 報と、その後の空白行を無視するように設計しなければなりません。つまり、このメッセージファイ ル(キューファイル) のメッセージは、実際には空白行の次の行から始まります。

注意: サーバーワイドルールクラスタワイドルールを使ってメッセージに追加されたヘッダフィー ルドは、上記のメッセージファイルには格納されません。

注意: this prefix should not be used on MS Windows and IBM OS/2 platforms, as the Server keeps the message file open, making it impossible for an external Task to read the file.

また、外部アプリケーションの名前には、接頭辞として[RETPATH] タグを付加できます。
[RETPATH] application parameters
このタグを付加しておいた場合、アプリケーションのパラメータの後ろに、文字列"-p" とメッセージ のリターンパスアドレスが追加されます(下記の形式)。
-p address@domain.com

外部アプリケーションの名前には、接頭辞として[RCPT] タグを付加することもできます。
[RCPT]application parameters
このタグを付加しておいた場合、アプリケーションのパラメータの後ろに、文字列"-r" とメッセージ のオリジナルの受取人アドレスが追加されます(下記の形式)。
-r address1@domain1.com

また、外部アプリケーションの名前には、接頭辞として[STDERR] タグを付加することもできます (下記を参照)。

アプリケーション名には、上記の接頭辞を任意の順番で複数指定することができます。ただし、追加 される順番は決まっています。例えば、[FILE]、[RETPATH]、[RCPT] の3 つの接頭辞を指定した場合、 その順番にかかわらず、まず-f フラグとそのパラメータ、次に-p フラグとそのパラメータ、最後に- r フラグとそのパラメータという順で追加されます。

接頭辞[STDERR] を付加しておいた場合、外部アプリケーションによって何らかのデータが標準エ ラーチャンネルに書き込まれると、その標準エラーデータを使ってエラーレポートテキストが生成さ れます。


PIPE モジュールの設定

PIPE モジュールの設定を行う場合、Web ブラウザでWebAdmin インターフェイスの[Settings] セク ションの[PIPE] ページを開きます。

処理
ログレベル: プロセス:

アプリケーションディレクトリ:
処理時間制限:
ログレベル
[Log] オプションでは、PIPE モジュールによってサーバーログに記録される情報の範囲( ログ レベル) を指定できます。通常、このオプションは[Major] ( メッセージ転送レポート) または [Problems] ( メッセージ転送/ 非致命的エラー) にしておきます。一方、PIPE モジュールに問 題が発生していると思われるときには、[Low-Level] または[All Info] に設定します。この場 合、それぞれ、プロトコルのレベルの情報またはリンクレベルの情報がシステムログに記録さ れます。なお、問題が解決すれば、ログレベルを元に戻します。[Low-Level] または[All Info] のままにしておくと、システムログファイルのサイズが急速に大きくなります。

システムログのレコードのうち、PIPE モジュールによって記録されたログにはPIPE タグが付加 されます。

プロセス
このオプションでは、メッセージの送信に使われるスレッドの数を指定できます。外部アプリ ケーションの処理速度が遅い場合、この数を複数にしておきます。これで、複数のメッセージ が同時に処理されるようになります。
アプリケーションディレクトリ
このオプションでは、外部アプリケーションを格納しておくディレクトリを指定します。ここ に格納されているアプリケーションがPIPE モジュールで起動されます。このディレクトリは必 ず指定し、外部アプリケーションを格納しておかなければなりません。指定しなかった場合、 PIPE モジュールに送信されたメッセージはすべて拒否されます。
処理時間制限
このオプションでは、外部アプリケーションがメッセージを処理する最大時間を指定します。こ こで指定した時間内に外部アプリケーションの処理が完了しなかった場合、その処理は中断さ れ、したがってメッセージは拒否されます。
投稿
右記の間隔で投稿ディレクトリ:
右記の間隔で投稿ディレクトリ
このオプションでは、PIPE モジュールによるSubmitted フォルダ(ディレクトリ) のスキャン の実行頻度(時間間隔) を指定できます。このスキャンの後、Submitted フォルダに格納されて いる.sub ファイルが送信されます。

フォリンキュー

サーバーに問題や障害が起こったときには、そのサーバーのキュー(Queue) ディレクトリを別のサー バー(CommuniGate Pro サーバー) に移して、その別のサーバー上でキューの復旧処理を行うことが できます。例えば、使用しているサーバーにハードウェア障害が発生した場合、この処理が必要にな ります。

サーバーに障害が発生した場合、そのサーバーのキューディレクトリ(ベースディレクトリにありま す) を別のCommuniGate Pro サーバーのベースディレクトリに移します。この場合、障害が起こった サーバーのキュー(Queue) ディレクトリの名前をForeignQueue に変更し、ベースディレクトリ に移動します。なお、シンボリックリンクを使う場合、ForeignQueue ディレクトリは別の場所に置 くこともできますが、その場所は同一のファイルシステムの場所でなければなりません。

PIPE モジュールでは、3 分ごとに、サーバーのベースディレクトリにForeignQueue ディレクトリ がないかどうかチェックが行われます。ForeignQueue ディレクトリがあった場合、 ForeignQueue ディレクトリの中の.msg ファイルがすべて、Queue ディレクトリに移動されます (同じ名前のファイルがあった場合、自動的に名前が変更されます)。同時に、ForeignQueue ディ レクトリにある.tmp ファイルはすべて削除されます。

移動された.msg はすべて、サーバーカーネル(ENQUEUERキュー) に送信され、サーバーにより通 常のメッセージと同じように処理されます。

以上の処理が終われば、ベースディレクトリの中のForeignQueue ディレクトリを手動で削除して かまいません。これで、キューの復旧処理は完了です。


CommuniGate® Pro Guide. Copyright © 1998-2007, Stalker Software, Inc.