001-011184

パッケージ版 Garoon

関心あり
0人の方が関心を示しています。

受信プロトコルをIMAP4にしているとき、特定のコマンドが実行失敗したにもかかわらずメールが受信された場合、内部処理の失敗に関するエラーログに失敗の原因が出力されない。

種別
不具合
機能
  • メール
再現バージョン
  • 4.0.0
  • 4.0.1
  • 4.0.2
  • 4.0.3
  • 4.2.0
  • 4.2.1
  • 4.2.2
  • 4.2.3
  • 4.2.4
  • 4.2.5
  • 4.2.6
  • 4.6.0
  • 4.6.1
  • 4.6.2
  • 4.6.3
  • 4.10.0
  • 4.10.1
  • 4.10.2
  • 4.10.3
  • 5.0.0
  • 5.0.1
  • 5.0.2
  • 5.5.0
  • 5.5.1
  • 5.9.0
  • 5.9.1
  • 5.9.2
改修バージョン
5.15.0
公開日
2022-07-19
更新日
2022-10-28
【発生条件】
パターン1:
次の条件をすべて満たす場合に発生します。
  • 受信プロトコルに「IMAP4」を設定したメールサーバーを使用する。

  • 受信メールサーバーのメールをサーバーに残す設定にしている。

  • メール受信時、受信メールサーバーのSTORE {メールサーバー側に保存されているメールメッセージのID} +FLAGS.SILENT (\Seen)コマンドが実行失敗する。

パターン2:
次の条件をすべて満たす場合に発生します。
  • 受信プロトコルに「IMAP4」を設定したメールサーバーを使用する。

  • 受信メールサーバーのメールをサーバーから削除する設定にしている。

  • メール受信時、受信メールサーバーのSTORE {メールサーバー側に保存されているメールメッセージのID} +FLAGS.SILENT (\Deleted)、またはEXPUNGEコマンドが実行失敗する。

※本記事はパターン1の条件を満たす再現例を記載します。

【準備】
  • ユーザーを追加します。

    例:
    ユーザー1(システム管理者)

  • ロギングで、メールの「警告」のログを出力する設定にします。

    例:
    ------------
    対象カテゴリー:メール
    深刻度:警告
    ログ:出力する
    出力先:データベースログ
    ------------

    補足:
    • (システム管理画面)「ロギング > ログ一覧 >ログの設定」画面で設定します。

  • 受信プロトコルに「IMAP4」を設定した受信メールサーバーを追加します。

    例:
    ------------------
    メールサーバーの名称:メールサーバー1
    受信プロトコル:IMAP4
    ------------------

  • ユーザー1に、受信メールサーバーのメールをサーバーに残す設定でメールアカウントを追加します。

    例:
    ------------------
    メールサーバー:メールサーバー1
    E-mail:user1@xxxxx.co.jp
    受信メールアカウント:user1
    受信メールサーバーのメール:メールをサーバーに残す
    ------------------

  • ユーザー1に、メールを送信します。

    例:
    ------------------
    標題:メール1
    To:user1@xxxxx.co.jp
    ------------------

【再現手順】
  1. ユーザー1でアプリケーション画面にログインし、[メール] > [受信]の順にクリックします。

    補足:
    • このとき、受信メールサーバーのSTORE {メールサーバー側に保存されているメールメッセージのID} +FLAGS.SILENT (\Seen)コマンドが実行失敗したとします。

  2. ユーザー1でシステム管理画面にログインし、[基本システムの管理] > [ロギング] > [ログ一覧] > [メール]の順にクリックします。

→現象発生:
 内部処理の失敗に関するエラーログに、失敗の原因が出力されません。

 例:
 ------------------
 [receive] Failed (account:garoon, protocol:imap4, command:STORE, flag:+FLAGS.SILENT[\Seen])
 ------------------

→正しい結果:
 内部処理の失敗に関するエラーログに、失敗の原因が出力されます。

  例:
  ------------------
  [receive] Failed (account_id:1, account:garoon, protocol:imap4, command:'STORE 1 flag:+FLAGS.SILENT[\Seen]', messages:'NO - store error: can't store that data')
  ------------------

補足:
  • 手順1で、エラーが発生せず、メール1が受信される現象が発生します。

  • STORE {メールサーバー側に保存されているメールメッセージのID} +FLAGS.SILENT (\Seen)コマンドが実行失敗した場合、受信メールサーバーのメール1が既読になりません。手順1のあとに再度[受信]をクリックすると、メール1が重複して受信されます。

  • コマンドの実行失敗が解消されると、メールの重複受信も解消されます。

  • パターン2の条件を満たす場合、手順2を実施したとき、次のエラーログが出力されるのが正しい結果です。

    • 受信メールサーバーのSTORE {メールサーバー側に保存されているメールメッセージのID} +FLAGS.SILENT (\Deleted)コマンドが実行失敗した場合

      例:
      ------------------
      [receive] Failed (account_id:**, account:garoon, protocol:imap4, command:'STORE ** flag:+FLAGS.SILENT[\Deleted]', messages:'**')
      ------------------

    • 受信メールサーバーのSTORE {メールサーバー側に保存されているメールメッセージのID} +FLAGS.SILENT EXPUNGEコマンドが実行失敗した場合

      例:
      ------------------
      [receive] Failed (account_id:**, account:garoon, protocol:imap4, command:'EXPUNGE', messages:'**')
      ------------------

【回避方法】
次のバージョンの製品で本現象を改修しています。バージョンアップを検討してください。
  • バージョン 5.15.0のGaroon


-------------------------------------------------------------
【更新履歴】
2022/09/02 タイトルと詳細を更新しました。