隔離ダイジェストのトラブルシューティング

このセクションには、隔離ダイジェストを作成する際によく発生する問題のトラブルシューティングに役に立つ情報を記載しています。

以下に表示するコマンドは、使用する OS や PureMessage インストールパラメータ (インストールパス、隔離場所など) によって異なる場合があります。必要に応じて変更してください。すべてのコマンドは PureMessage ユーザー (デフォルトで「pmx」) で実行される必要があります。

ダイジェストが作成されない

  1. 以下のコマンドが PureMessage Manager でスケジュールジョブとし実行されていることを確認します。シェルプロンプトで以下のコマンドを実行し、エラーが発生しないかを確認します。
    pmx-qindex            (新しいメッセージを PureMessage 隔離ディレクトリに追加します)
                                
    pmx-qdigest -verbose  (ダイジェストを生成し、詳細なフィードバックを提供します)
                                
    pmx-queue run         (メッセージキューにあるダイジェストを配信します)
  2. 以下のコマンドを実行して sendmail および PureMessage が実行されていることを確認します。
    pmx status                (PureMessage のステータスが返されます)
                                
    ps -uwax|grep sendmail    (FreeBSD または Linux: sendmail が実行中のプロセスとして表示されます)
                                
    ...または...
                                
    ps -ef|grep sendmail      (Solaris: sendmail が実行中のプロセスとして表示されます)
  3. 以下のコマンドを実行してメッセージアクティビティを監視し、sendmail と PureMessage が通信していることを確認します。
    pmx-mlog -verbose

    このコマンドは PureMessage のメッセージログを読み取ります。メッセージアクティビティが存在しない場合、sendmail.mc 設定ファイルに以下の内容に類似した行があるかどうかを確認します。

    INPUT_MAIL_FILTER('Policy','S=inet:3365@localhost,F=T,T=C:5m;E:8m;R:4m;S:2m')dnl

    この行が存在していながらも、アクティビティはないという場合、適切な sendmail バイナリ (システムに付属の sendmail ではなく、PureMessage に付属の sendmail など) が使用されているかどうかを確認してください。

  4. システムでディスク容量が不足したことがあった場合、以下のコマンドによって提供される値を比較します。
    $ pmx-qdigest --dump|grep ^@
    
    $ cat /opt/pmx/var/qdir/counters/pmx-queue.cnt
    
    $ cat /opt/pmx/var/qdir/db.conf

    最初の 2つのコマンドによって返された数値と db.conf 内の last_id 設定の値は、 db.conf.の num_msg の値を超過できません。値が適切でない場合、PureMessage のテクニカルサポートに連絡し、上記の 3つのコマンド出力も併せて提供してください。

一部のユーザーがダイジェストを受信しない

  1. ダイジェストメールを受信していないユーザーが「Quarantine digest users list 」(隔離ダイジェストメールリスト) に登録されているメンバーであることを確認します。リストに含まれるメンバーは、PureMessage Manager の「Policy」(ポリシー) タブで参照できます。
  2. ダイジェストに含まれていなかったユーザー宛てのメッセージが隔離ディレクトリ内に存在することを確認します。

    ダイジェストに含まれているメッセージを確認するには、コマンドライン上で以下のコマンドを入力します。

    pmx-qdigest --dump

    このコマンドに関連するソートおよびフィルタリング出力の情報については、man pmx-qdigest を入力します。

ユーザーが隔離されたメッセージを取り出せない

  • ユーザーが隔離ダイジェストに返信して隔離ディレクトリからメッセージを取り出すリクエストをした場合、そのメッセージが PureMessage サーバーへ届いているかどうかを sendmail のメールログで確認してください。エンドユーザーからのダイジェストへの返信が PureMessage サーバーへ届いていない場合は、メールルーティングが正しいかどうかを確認してください。
  • リクエストされているメッセージが、pmx-qexpire のスケジュールジョブによって隔離ディレクトリから削除されていないことを確認します。メッセージの日付を etc/pmx.d/quarantine_expire.confexpire_time の値と比較します。
  • ダイジェストの日付と /opt/pmx/etc/pmx-qdigest.conf 内の expire の値 (デフォルトでは 5日に設定) を比較し、隔離ダイジェスト自体の有効期限が切れていないかどうかを確認します。

エラーメッセージ:「Can't call method min_digest_id on an undefined value」(未定義の値に min_digest_id メソッドを呼び出せません)

以下の pmx-qdigest エラーは隔離検索データベース (/opt/pmx/var/qdigest/scan.db) が破損していることが原因で発生している可能性があります。

Can't call method "min_digest_id" on an undefined value /opt/pmx/bin/pmx-qdigest line n
  • 以下のコマンドを実行して確認を行います。
    pmx-qdigest --dump

    この方法で各種ダイジェストおよびユーザー別の隔離 ID のリストが作成されずに上記のようなエラーが返される場合、scan.db ファイルが原因である可能性が非常に高いと考えられます。

  • ファイルの権限や所有者が正しいかどうかを確認してください。
    permissions:-rw-r--r--
    owner:       pmx
    group:       pmx
  • これらが正しくない場合は chmod または chown で修正することで問題が解決する可能性があります。権限および所有者が正しい場合、または、これらの設定をデフォルトに戻しても問題が解決されない場合は、新規に scan.db ファイルを作成します。
    cd 'pmx prefix'/var/counters
    mv scan.db scan.db.broken
    pmx-qdigest --earliest <YYYY-MM-DD hh:mm:ss>

    <YYYY-MM-DD hh:mm:ss> には、ダイジェストに含める最も古いメッセージの日付を設定します。隔離検索がこの時点から開始されます。

    pmx-qdigest コマンドが完了すると scan.db データベースが再生成されます。次回の隔離ダイジェストは、実行中に検出された最後の隔離 ID (この場合、隔離ディレクトリ内にある最新のメッセージ) から始まります 。

    次回に pmx-qdigest がスケジューラによって実行されると通常のように処理が実行されます。