サーバー上のメールボックスのサイズとローカルのメールボックスのサイズが違う理由


Microsoft Exchange Server をサーバーとして使用し、Outlook の Exchange Server キャッシュ モードを使用している場合に、アイテムの数がローカルとサーバーで同じであるにもかかわらず、サイズが (時には数メガバイトの単位で) 違うことがあります。

このような現象が発生すると、サーバーに何らかのトラブルが発生したように思われるかもしれませんが、実際にはトラブルではなく、Exchange サーバーが持つ EDB データベースと STM データベースの違いによって発生している場合があります。それでは、まず個々のデータベースについて説明しましょう。

EDB データベース

EDB データベースは Exchange サーバーのリリース当初から使用されているデータベースで、MAPI プロパティを保存するのに適したものです。MAPI のプロパティがほとんどそのままの形で保存され、バイナリの添付ファイルもそのまま保存されます。また、メッセージ本文は RTF という形式に変換され、さらに圧縮がかけられた状態で保存されます。
Outlook などの MAPI クライアントから送信されたメッセージや、変更を行ったメッセージは EDB データベースに保存されます。

STM データベース

Exchange 5.5 以前では、SMTP などで受信したメッセージをすべて MAPI プロパティに分解して EDB データベースに保存し、POP/IMAP クライアントからメッセージが要求されると MAPI プロパティから MIME のメッセージを再構築して渡すという動作をしていました。
その結果、再構築の過程で元のメッセージと一致しないフォーマットで作成されるという問題や、送信元で正しく文字コードなどが設定されていなかった場合に RTF への変換の際に文字化けが起こり、クライアント側でエンコードを選択しなおしても正しく表示できないというようなことも発生していました。
このような問題を解消するために Exchange 2000 および Exchange 2003 で新たに採用されたデータベースが STM データベースです。POP/SMTP クライアントなどからのメールは MIME フォーマットのまま STM データベースに保存されます。(件名など一部のプロパティは EDB にも保存されます。)

変換のタイミング

上記の通り、保存が行われたクライアントにより EDB と STM という別々のデータベースが使われますが、STM に保存されたデータを MAPI クライアントから読み取ったり、EDB に保存されたデータを POP クライアントから読み取ったりする場合には、それぞれ MAPI や MIME への変換が必要になります。
この変換処理はサーバー上で自動的に行われますが、変換されたデータはデータベースに保存されません。これは Outlook と POP クライアントを併用するような環境でデータベースへの書き込みが多発することを防ぐためと思われます。
ただし、STM に保存されているメッセージを Outlook で編集して保存したような場合、MAPI クライアントからの書き込みとなるため、EDB に保存され、STM からは削除されます。

サイズの違いが発生する理由

いよいよ本題です。
サイズの違いが発生する理由のひとつに、MIME フォーマットにおけるバイナリ ファイルの扱いが考えられます。MIME フォーマットはインターネットのメールでさまざまなデータを扱うためのフォーマットですが、インターネットのメールで使用される SMTP では原則として 7 ビットまでの文字しか使えません。7 ビットまでの文字というのは半角の英数字と記号だけであり、半角のカタカナや全角文字、画像のような 8 ビットのデータはそのままでは扱えないということです。
そのため、MIME でメールを送信するときには BASE64 や UUEncode などのエンコードが使用されるのですが、これらのエンコードは 8 ビットのデータを 7 ビットに置き換えるものであり、サイズが元のデータの 1.3 から 1.4 倍になることがあります。
そして、STM データベースでは MIME フォーマットのまま保存を行うので、元のデータの 1.4 倍のサイズのまま保存されることになります。たとえば、SMTP クライアントから 1M の画像ファイルを添付して Exchange に送信した場合、STM には 1.4M ほどのデータとして保存されます。

一方、STM の MIME データを Outlook から参照した場合、上記の「変換のタイミング」にある通り、一時的に MAPI プロパティへの変換が行われ、添付ファイルも元のサイズで Outlook に転送されます。そのため、キャッシュ モードでローカルに保存される添付ファイルのサイズは 1M になり、サーバー上のファイルのサイズは参照されただけでは変更されないので 1.4M のままという状態になるのです。
このような動作により、Exchange サーバー上のメッセージの大半が外部からのメッセージであり、その多くにバイナリのファイルが添付されているという場合、同じアイテムの数でもサーバーのメールボックスのサイズが、ローカルのサイズより 1.4 倍ぐらいになる可能性があります。

この現象が発生したら、アイテムをすべて一旦個人用フォルダに移動し、改めてメールボックスに戻すことで、サーバーのメールボックスのサイズとローカルのメールボックスのサイズの差を小さくすることができます。しかし、このような操作を行うと、Exchange サーバー上で移動したデータと同じ量のトランザクション ログが作成され、サーバーのディスクを圧迫する可能性がありますので、あまり大きいサイズのメッセージはメールボックスには戻さず、個人用フォルダに保存して使うことをお勧めします。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中