メッセージ転送に関する問題のほかに、2 つの一般的な問題があります。この問題はメッセージキューにある未処理のメッセージに起因することがあります。
キューキャッシュはキューディレクトリにあるメッセージと同期しません。MTA キューサブディレクトリにある配信待ちのメッセージファイルは、メモリー内キューキャッシュに入れられます。起動時にチャネルプログラムは、このキューキャッシュを調べて、キューにあるどのメッセージを配信するかを確認します。メッセージファイルがキューの中にあっても、対応するキューキャッシュエントリがない場合もあります。
特定のファイルがキューキャッシュにあるかどうかをチェックするには、imsimta cache -view ユーティリティーを使用します。ファイルがキューキャッシュにない場合は、キューキャッシュを同期させる必要があります。
キューキャッシュは、通常は 4 時間ごとに同期されます。必要に応じて、imsimta cache -sync を使用してキャッシュを手動で再同期することができます。同期が終わると、チャネルプログラムは、新しいメッセージが処理されたあとで、元の未処理メッセージを処理します。デフォルト (4 時間) を変更する場合は、sync_time= timeperiod を追加することで、ディレクトリ /msg_svr_base/config にある job_controller.cnf ファイルを変更する必要があります。ここで、timeperiod は、キューキャッシュを同期させる頻度です。timeperiod は 30 分より長くする必要があります。次の例では、job_controller.cnf のグローバルなデフォルト (Global defaults) を指定するセクションに sync_time=02:00 を追加することで、キューキャッシュの同期間隔が 2 時間に変更されます。
! VERSION=5.0 !IMTA job controller configuration file ! !Global defaults tcp_port=27442 secret=N1Y9[HzQKW slave_command=NULL sync_time=02:00 |
imsimta cache -sync を実行したあとに、imsimta submit channel を実行してメッセージのバックログを空にすることができます。メッセージのバックログが大きい (1000 以上) 場合、チャネルを空にするのに時間がかかることがあるので、注意してください。
キューキャッシュの情報の概要については、imsimta qm -maint dir -database -total を実行してください。
キューキャッシュを同期させてもメッセージがまだ配信されない場合は、ジョブコントローラを再起動する必要があります。これを行うには、imsimta restart job_controller コマンドを使用します。
ジョブコントローラを再起動すると、メッセージのデータ構造がディスク上のメッセージキューから再構築されます。
ジョブコントローラの再起動は最後の手段です。ほかの手段をすべて使用し尽くすまでは実行しないでください。
ジョブコントローラの詳細については、「ジョブコントローラ」を参照してください。
処理するログファイルを作成できないために、チャネル処理プログラムの実行は失敗します。アクセス権、ディスク容量、および制限容量をチェックします。