Partager via


Exchange 2003 SP2 から Exchange 2010 SP1 へメールボックスを移動時のエラーに関する事例紹介

多くの方に Exchange 2003 から 2010 への移行をご検討いただいており、移行に関する多くのお問い合わせをいただくようになりました。
今回は Exchange 2003 SP2 から Exchange 2010 SP1 へメールボックスを移動する際にエラー : 0x80040102 により失敗した事例をご紹介いたします。

 

エラー : 0x80040102 でメールボックスの移動が失敗する現象について

 

- 現象の概要

Exchange 2003 SP2 から Exchange 2010 SP1 へのメールボックス移動要求を作成すると、イベント ログ (アプリケーション ログ) に次のようなエラーが発生し、メールボックスを移動できないことがあります。

-----------------------------------------------------
ログの名前: Application
ソース: MSExchange Mailbox Replication
イベント ID: 1100
タスクのカテゴリ: 要求
レベル: エラー
キーワード: クラシック
ユーザー: N/A
説明:
要求 'test.local/Users/testuser' (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) が失敗しました.
エラー コード: -2147221246
MapiExceptionNoSupport: IExchangeFastTransferEx.TransferBuffer failed (hr=0x80040102, ec=-2147221246)
-----------------------------------------------------

- 現象の原因

このエラーは、Exchange 2003 SP2 上の移動対象となるメールボックスのフォルダに不正なアクセス権が付与されている場合に発生します。

Exchange 2010 RTM では、メールボックスの検索フォルダに対してアイテムを閲覧可能なアクセス権を他のユーザーに付与すると、検索フォルダ以外のフォルダにアクセス権を付与していないにも関わらずアイテムを 閲覧できるようになる不具合がありました。
Exchange 2010 SP1 ではこの不具合の修正のため、メールボックスの移動の際に、フォルダ タイプが [検索フォルダ (FOLDER_SEARCH)] であるフォルダのアクセス権を確認する処理が追加されました。
なお、アクセス権の確認をしないように設定することはできません。

メールボックスを移動する際に、このタイプのフォルダのアクセス権の状態が不正な状態であると、アクセス権の確認の際に前述のエラーが表示され Exchange 2010 SP1 へメールボックスを移動できません。
事例では、アクセス権の状態が後述いたします [Missing Anonymous] の状態であるとメールボックスを移動できないことを確認しております。

この現象はフォルダ タイプが FOLDER_SEARCH の場合にのみ発生いたします。事例のようにアクセス権が [Missing Anonymous] になる原因は特定できておりませんが、Outlook のみでの操作では、このフォルダ タイ プのアクセス権を操作できません。このため通常はこの現象は発生いたしません。

フォルダ タイプおよびアクセス権の状態の確認と修正方法を次にご案内いたします。

 

 

 

現象の事前の確認と回避方法について

MFCMAPI を使用することでフォルダのタイプを確認できます。また Microsoft Exchange Server Public Folder DAV-based Administration Tool (PFDAVAdmin) を使用することで、メールボックスのフォルダのアクセス権の確認と修正ができます。なおフォルダのタイプを変更することはできません。この 2 つのツールはマイクロソフトのサポートとしても多くご案内し、情報の確認のためにご利用いただいているツールになります。

移動前にフォルダのタイプと不正なアクセス権が付与されていないか確認することで、前述のエラーが発生するかご確認いただけます。
もし不正な状態であれば、アクセス権の修正を行うことでメールボックスを移動できるようになる可能性があります。

- MFCMAPI によるメールボックスのフォルダタイプの確認方法

1) MFCMAPI をダウンロードする

MFCMAPI は以下のページよりダウンロードできます。
Outlook の動作するマシンにダウンロードしてファイルを解凍します。

Title: MFCMAPI
URL: https://github.com/stephenegriffin/mfcmapi/releases
※ "MFCMAPI ~ bit executable - ~" をクリックしてダウンロード

2) フォルダのタイプを確認する

メールボックスのフォルダのタイプが FOLDER_SEARCH であるか MFCMAPI を使用して確認します。

2-1. Outlook にてフォルダ タイプを確認するアカウントのキャッシュ モードをオフに設定します。
キャッシュ モードのオフについては以下のウェブ ページをご参考ください。

Title: Exchange キャッシュ モードのオンとオフを切り替える
URL (Outlook 2007): https://office.microsoft.com/ja-jp/outlook-help/HP001232935.aspx
URL (Outlook 2010): https://office.microsoft.com/ja-jp/outlook-help/HP010355560.aspx

2-2. MFCMAPI を起動します。
2-3. メニューバーより [Session] - [Logon and Display Store Table] をクリックします。
2-4. 手順 2-1 で設定したキャッシュ モードをオフにしたアカウントのプロファイルを選択し [OK] をクリックします (図1)。


図 1 プロファイルの選択

2-5.[Display Name] が [メールボックス - <ユーザー名>] の項目をダブルクリックします (図2)。


図 2 メールボックスの選択

2-6. 新しいウィンドウが開きます。左ペインを展開するとメールボックスのフォルダ名が表示されます。右ペインに左ペインで選択したフォルダのプロパティが表示されます (図3)。


図 3 フォルダ名とプロパティ

2-7. 左ペインより、確認するフォルダ名をクリックします。
2-8. 右ペインより [Property Name(s)] が [PR_FOLDER_TYPE, PidTagFolderType, ptagFolderType] の行を探しダブル クリックします。
2-9. プロパティのウィンドウが表示されます。[Smart View] の項目の値が [Flags: FOLDER_SEARCH] であるか確認します (図4)。例えば、検索フォルダを使用している場合に作成される [Finder] の子フォルダや [ アラーム] フォルダは [FOLDER_SEARCH] タイプのフォルダになります。


図 4 PR_FOLDER_TYPE プロパティの確認

 

- PFDAVAdmin によるメールボックスのフォルダのアクセス権の確認と修正方法

1) PFDAVAdmin をダウンロードする

PFDAVAdmin は以下のページよりダウンロードできます。
ダウンロードしてファイルを解凍します。

Title: Microsoft Exchange Server Public Folder DAV-based Administration Tool
URL: https://www.microsoft.com/downloads/details.aspx?FamilyID=635be792- d8ad-49e3-ada4-e2422c0ab424&DisplayLang=en

2) すべてフォルダのアクセス権を確認する

メールボックスのフォルダに不正なアクセス権が付与されているか PFDAVAdmin を使用して確認します。

2-1. PFDAVAdmin を起動します。
2-2. メニューバーより [File] - [Connect] をクリックします。
2-3. [Exchange Server] に Exchange 2003 SP2 のサーバー名を記入します。(図5)


図 5 ユーザー名の入力

2-4. [Global Catalog] にグローバル カタログの役割を持つドメイン コントローラーのサーバー名を記入します。
2-5. 手順 a) で作成したユーザー アカウント情報を指定します。[Authenticate as currently logged-on user] にチェックがある場合は、ログオンしているユーザー アカウントが使用されます。異なるユーザー ア カウントを使用する場合にはチェックを外し、[User]、[Password]、[Domain] を適宜入力します。
2-6. [All Mailboxes] を選択します。
2-7. [OK] をクリックします。
2-8. 左ぺインより [Mailboxes] を右クリックします (図6)。


図 6 メールボックスへ接続された状態

2-9. [Check DACL state] をクリックします (図7)。


図 7 [Check DACL state] を選択

2-10.ポップアップが表示されるため [はい(Y)] をクリックします。
2-11.新しいウィンドウにアクセス権を確認した結果が表示されます。フォルダのアクセス権に [DACL is good.] と表示されていれば、アクセス権が正しく付与されています。不正なアクセス権が付与されている場合 には、その内容 ([Missing Anonymous] など) が表記されます (図8)。
該当のフォルダを右クリックし [Folder permissions] をクリックすると設定されているアクセス権を確認できます (図9)。図9 は、このフォルダのアクセス権の状態が [Missing Anonymous] である例を示します。 [Missing Anonymous] の状態は、匿名でアクセスするユーザーを示す [NT AUTHORITY\ANONYMOUS LOGON] (Outlook から確認できるアクセス権の名前は [匿名]) のアクセス権が付与されていない状態で、他のユーザー のアクセス権が付与されている状態になります。図 9 では、[Everyone] (Outlook から確認できるアクセス権の名前は [既定]) に対して [None] のアクセス権のみ付与されているため [Missing Anonymous] になりま す。
PFDAVAdmin で確認可能なアクセス権のその他の状態については以下のページをご参考ください。

Title: Microsoft Exchange Server Public Folder DAV-based Administration Tool
URL: https://technet.microsoft.com/ja-jp/library/bb508858(EXCHG.65).aspx

 


図 8 フォルダのアクセス権を確認した結果


図 9 アクセス権の表示 (Missing Anonymous)

3) すべてのフォルダのアクセス権を修正する

もし手順 2) で [DACL is good.] 以外の結果のフォルダがある場合には、以下の手順でフォルダのアクセス権の修正を試みることができます。
以下の手順を実行することで、[DACL is good.] でないフォルダのアクセス権を修正変更し [DACL is good.] にできる可能性があります。既定以外のアクセス権をフォルダに付与して運用している場合には、アクセス 権が変更されうることについて事前に十分に影響をご確認ください。
運用環境でアクセス権の修正を実行する場合には、念の為に事前にデータベースのバックアップを採取いただいたうえで実行ください。

3-1. PFDAVAdmin を起動します。
3-2. メニューバーより [File] - [Connect] をクリックします。
3-3. [Exchange Server] に Exchange 2003 SP2 のサーバー名を記入します。
3-4. [Global Catalog] にグローバル カタログの役割を持つドメイン コントローラーのサーバー名を記入します。
3-5. 手順 a) で作成したユーザー アカウント情報を指定します。[Authenticate as currently logged-on user] にチェックがある場合は、ログオンしているユーザー アカウントが使用されます。異なるユーザー ア カウントを使用する場合にはチェックを外し、[User]、[Password]、[Domain] を適宜入力します。
3-6. [All Mailboxes] を選択します。
3-7. [OK] をクリックします。
3-8. 左ぺインより [Mailboxes] を右クリックします。
3-9. [Fix folder DACLs] をクリックします。
3-10.ポップアップより、[The selected folder and all subfolders] と [Read-Write] を選択します。(図10)


図 10 ポップアップの選択

3-11.[Execute] をクリックし実行します。
3-12. 表示されるウィンドウで [Operation complete.] と表示されることを確認します (図11)。
該当のフォルダを右クリックし [Folder permissions] をクリックすると設定されているアクセス権を確認できます。この例では [Everyone] に対する [None] のアクセス権が削除され、[DACL state] が Good になり ました (図12)。


図 11 アクセス権の修正の実行


図 12 フォルダのアクセス権の修正結果