treedown’s Report

システム管理者に巻き起こる様々な事象を読者の貴方へ報告するブログです。会社でも家庭でも"システム"に携わるすべての方の共感を目指しています。

※https化しました。その影響でしばらくリンク切れなどがあるかもしれませんが徐々に修正していきます。 リンク切れなどのお気づきの点がございましたらコメントなどでご指摘いただけますと助かります。

IMAP環境を.pstエクスポートするとメールが表示されない

IMAPメールボックスをインポート&エクスポートで移行する時にハマった話です。
前回「IMAPメールボックスの移行方法を検討と検証をする」では、IMAPのメールデータをエクスポートして.pstファイルを読み込むところまで実施しました。

現象

前回「IMAPメールボックスの移行方法を検討と検証をする」の手順でIMAP環境のアカウントで使うメールボックスのデータを、.pstファイルにエクスポートしました。

エクスポートした.pstファイルはそのままバックアップデータとして利用できるということもあり、バックアップを取得してメールデータをサーバAからサーバBに移行するという目的が達成出来ると考えたのですが、いざエクスポートした.pstファイルの受信トレイや送信済アイテムの中に入っているメールデータ(.emlファイル)が閲覧出来ず、

「ここに表示するアイテムは見つかりませんでした。」

というメッセージが表示されるだけ、という動作になってしまいます。

しかし、エクスポートした.pstファイルは元のIMAPメールボックスと同じかそれ以上のデータ容量でファイルが生成されていますし、プロパティ画面からフォルダ別のデータ量を確認したところしっかりデータは.pstファイルに保管されているように見受けられます。

この「ここに表示するアイテムは見つかりませんでした。」というメッセージでなく、メールデータが表示されるにはどうしたら良いか、いろいろ試行錯誤することになりました。

調査:別のアカウントもやってみる

前回と同じ手順でIMAPメールボックスを.pstファイルにエクスポートしてみたのですが、同じように「ここに表示するアイテムは見つかりませんでした。」というメッセージで表示されない、という現象になります。

ただ、別のアカウントでは未読メールがあったこともあり、

このように、未読メールの数が画面に表示されるにもかかわらず、メール一覧は「ここに表示するアイテムは見つかりませんでした。」になっています。

ここでちょっと思ったので、やってみたのですが、「ここに表示するアイテムは見つかりませんでした。」のフォルダを右クリックして「プロパティ」を開きます。

プロパティ画面から、

「アイテムの合計数を表示する」を選択して、「適用」とか「OK」ボタンをクリックします。

すると、

このように「受信トレイ[5]」と表示され、未読か既読かにかかわらずメールの保存数が表示されるようにできます。つまり、エクスポートした.pstファイルにはメール自体が保存されているということは確認できました。

しかし、これが表示されない理由は何かを探す必要がありそうです。

結論:「ビューの変更」で指定が必要

いろいろ触っていると、「表示」に「ビューの変更」というメニューがあって、

ここが「削除用にマークされたメッセージを隠す」になっているのですが、

これを、隣の「IMAPメッセージ」という選択にすることで、以下のように、

再びメッセージが表示されるようになりました。ビューのデフォルト設定の問題だった?

同じように「送信済みアイテム」でも、

ビューの変更から「IMAPメッセージ」を選択することで、

メールデータの閲覧ができるようになりました。

どうやら、IMAP環境のアカウントから.pstファイルをエクスポートした場合には、「ビューの変更」から「IMAPメッセージ」を選択して、表示設定を実施する必要がある、ということのようです。

一括でできる?

ちゃんと試せていないのですが、メニューの中に「現在のビューを他のメールフォルダに適用する」という指定もできるようです。

一箇所を「IMAPメッセージ」で表示される設定にしたあと、上記の「現在のビューを他のメールフォルダに適用する」を指定することで、一括で設定できるのかもしれません。

実際、選択してみると、

このように「ビューの適用」という画面が表示されて、現在のビュー設定を適用する範囲を選択できるようです。

ここで「サブフォルダにもビューを適用する」をクリックして

このように一括で適用できるようです。(ただし、このときは既に手動でビューの変更を実行していたため、これで一括で適用できたかを確認はできていないのですが、できそう、ということで)

ようやくスタート地点に

こうして、エクスポートした.pstファイルが閲覧出来るようになったので、このバックアップとしても利用する.pstファイルから、新しいサーバBのメールボックスにメールをコピーしていくことにします。

Outlook上で移行先となるサーバBのメールボックス(IMAPアカウント)を開いた状態で、.pstファイルをマウントしたOutlook画面からメールをコピーしてみたのですが、

少量のメールであればすぐにサーバ上のメールボックスへ反映されます。

しかし、画面右下に注目すると、

「'受信トレイ' を同期中」とか「'送信済みアイテム' を同期中」のように、IMAP経由でメールサーバのメールボックスと、ローカルOutlook上のメールデータ(.emlファイル)の同期が進行しているときは、まだデータの保存中なので、完了を待つ必要があります。

これは、バックアップ用.pstファイル内の.emlファイル(メールデータ)を、
Outlook上の.ostファイルに複製する、というデータコピーが終わったあとで、
ローカルOutlook上の.ostファイルからメールサーバのメールボックスへIMAP経由でデータのコピーが実行される、
という順番でデータが反映されていきます。この「・・・ を同期中」の最中で切断してしまうと、メールサーバのメールボックスへ全てのメールが保管されないこともありますし、設定や環境によっては、コピーしたと思っていたメールデータが実はサーバにコピーされておらず、次回の同期で.ostファイルに残存する未コピーのメールデータが削除されることもありました。このため、同期は確実に完了させる必要があります。

例えば、

これくらいのメールの量があると、一筋縄ではいきません。
最初の.pstファイル⇒.ostファイル間でメールコピーを実行した後で、前述の「・・・ を同期中」がいったん完了した、と思える画面表示でも、メールボックスの同期途中で終了している可能性もあって、同期自体を複数回リトライしてようやく全てのデータがメールサーバ上のメールボックスと、ローカルOutlook上の.ostファイルが同一の状態になる、ということも多いです。

推測ですが、

IMAP設定の「サーバのタイムアウト」時間で制限があるんじゃないかという感じもします。この時間内に「・・・ を同期中」のタスクが終わらなかったら、次回の同期に回されているような気がします。このため、OutlookだけじゃないIMAP(メールサーバ上の)メールボックス確認方法があるようなら、ローカルOutlook上の画面とメールサーバ上のメールボックス内のメールを見比べて、同期の漏れがないようにしたほうが望ましいです。