Outlook 2013で使用するとIMAP4サーバ同期中メッセージで処理が進まない - NOOPコマンド連続発信現象への対策について
メールサーバ側をE-Post Mail Server、メールクライアント側を Outlook 2013 にした組み合わせで、IMAP4を使用しているとき、IMAP4サーバ同期中メッセージが出たまま処理が進まず、しかもメールサーバのCPU負荷が異常に高まる現象が報告されました。
調べた結果、Outlook 2013 との相性に問題があることがわかりました。E-Post Mail Serverが、クライアントから発せられるNOOPコマンドに対して、フォルダポーリングの状態を逐一応答して返していると、Outlook 2013側が突如として、NOOPコマンドを異常に連続発信させるようになります。その頻度はかなり異常で、1秒間の間に平均6.4回というものでした。この数字はあくまで1セッション当たりのものですから、もし100セッションが同時稼働している場合は、1秒間に600回以上のNOOPコマンドを異常発信することとなります。その結果、メールクライアント側には同期中メッセージが出たまま進まない状態となり、メールサーバのCPU負荷が異常に高まってしまう事態を招いてしまうことがわかりました。
弊社としては、この問題はあくまで Outlook 特有の問題だと考えましたが、NOOPコマンドに対して、フォルダポーリングの状態を常に一律に返すのではなく、他に問題が波及することなくデフォルト設定を見直しして2014年7月1日公開の20140623差分、EPSTIMAP4S v4.44 で対策を取りました。このバージョンでは Outlook 2013側からNOOPコマンドが異常に連続発信されることの防止策を施しました。ちなみにこれ以降の最新差分はすべてここであげた内容が含まれます。