Freigeben über


残留リンクは OAB 生成プロセスにどんな影響を与えるか

原文の記事の投稿日: 2011 年 9 月 14 日 (水曜日)

Exchange 内に、残留リンクが含まれた配布グループまたは電子メールが有効なセキュリティ グループがあると、OAB (オフライン アドレス帳) 生成プロセスに影響を与え、正常にレプリケートされません。この問題は、Windows 2000 で AD が始まったころから存在していまたが、あまり知られていない問題であり、OAB (オフライン アドレス帳) 生成プロセスの動作と関連があります。

この問題を修正する方法は 2 とおりあります。影響のあるグループを削除してから再作成するか、残留リンクのあるグループが含まれている Active Directory の部分を再ホストする必要があります。

残留リンクとは

Active Directory において "リンク" とはどのようなものか、少し考えてみましょう。

Active Directory でのオブジェクト間の参照の中には、ユーザビリティまたは管理のために逆参照を必要とするものがあります。たとえば、managedBy がオブジェクト属性だとすると、ObjectA を調べて、ObjectA が ObjectB によって管理されていることを確認できます。同様に、ObjectB を調べて、ObjectB がどんなオブジェクトを管理しているのかを知ることができれば便利なこともあるでしょう (たとえば、managedObjects 属性の値)。Active Directory は相互に参照しているオブジェクト間の参照整合性を維持しているので、あるオブジェクトがディレクトリ ツリー内で移動されても、そのオブジェクトと他のオブジェクトの間の参照は維持されます。この参照はリンクされた属性によって達成されます。

リンクされた 2 つの属性は、同じリンク ペア識別子を持っているものとしてスキーマ内でマークされます。つまり、一方は前方リンクとしてマークされ、もう一方は後方リンクとしてマークされます。たとえば、managedBy/managedObjects リンク ペアでは、managedBy が前方リンクです。したがって、ユーザー オブジェクトの managedObjects 属性を調整するには、そのユーザーの managedObjects 値に対して追加または削除するオブジェクトにアクセスし、各オブジェクトの managedBy 値を変更する必要があります。後方リンクの属性は、それらがユーザー操作によって要求されたときに計算されます。

ObjectB が管理している全オブジェクトを見つけるために、リンクが調べられ、リンク ペアが managedBy/managedObjects で後方リンク属性が ObjectB を表している全レコードが検索されます。それらのレコードのリンク ペアから、ObjectB が管理している全レコード (オブジェクト) のデータベース識別子が得られます。

配布リストのメンバーシップは、前方リンクと後方リンク ペアの両方として実装されます。後方リンク オブジェクトは isMemberOfDl 属性を格納するオブジェクトでしょう。前方リンク member 属性は複数の値を持つ属性であり、これによってユーザーが複数の配布リストのメンバーになることができます。後方リンクは常に複数の値を持つリンクでなければなりません。なぜなら、さまざまなオブジェクトへのリンクを作成するユーザーを制限することができないからです。

残留リンクは、もはや Active Directory に存在しないオブジェクトの DN (識別名) が含まれている後方リンクされた属性です。このような問題は、問題のあるドメインの書き込み可能なドメイン コントローラーから確かなレプリケーションを受け取らないグローバル カタログ サーバー (および GC にある読み取り専用部分) から生じます。そのため、GC は壊れた残留リンク値を通常は保持し、書き込み可能な DC は必ずしもその問題を経験しないのです。

問題の症状

OAB 生成プロセスでは、QueryRows 関数を使用して Active Directory から属性値を返します。無効なデータが返された場合、アプリケーション イベント ビューアー内に返されたエラー イベントが存在する可能性があり、OABGen プロセスは完了しません。

この問題に関連するエラー イベント:

イベント ソース

イベント ID

イベント文字列

MSExchangeSA

9126

アドレス一覧 '\Global Address List' のオフライン アドレス一覧を計算しているときに、OALGen により、エラー 8004010e が検出されました。

MSExchangeSA

9330

'\Global Address List' の Active Directory ContosoHUB03 にアクセスしているときに、OALGen により、エラー 8004010e (内部 ID 500139c) が検出されました。

MSExchangeSA

9339

'\Global Address List' のオフライン アドレス一覧を生成しているときに、Active Directory ‘ハブ サーバー ’ により、エラー 8004010e が返されました。Active Directory から最後に返された受信者は 'ユーザー名 ' です。このオフライン アドレス一覧は生成されません。

Justin Turner により最近公開された下記のサポート情報記事には、Exchange への残留リンクの適用に関する詳細情報が書かれています。

Exchange Offline Address Book (OAB) generation failures caused by Attributes containing stale or bad data: events 9126 9330 and 9339 with error 8004010e cited
https://support.microsoft.com/kb/2553698/ja-jp (英語)

トラブルシューティング

Active Directory エンジニアは内部的に repadmin コマンド ライン ツールを使って残留オブジェクトを定期的にクリーンアップしています。これは簡単なプロセスです。Microsoft ADRAP (AD Risk Assessment Program (英語)) は、Microsoft のプレミア顧客を対象にしたサービスです。ADRAP は、Active Directory 環境に残留オブジェクトがあれば報告します。残留オブジェクトのクリーンアップはよく知られたプロセスですが、AD 側から残留オブジェクトを突き止めるのは容易ではありません。しかし、残留オブジェクトを確認できる Exchange ツールとして oabvalidate.exe https://oabvalidate.codeplex.com/ (英語) があります。このツールの作者 (Bill Long) は、Codeplex でこれを精力的に更新しています。OABValidate はコンパクト (800 KB 以下) で、指定の DC に対して実行されます。AD 環境内のオブジェクトの数にもよりますが、通常、実行に要する時間はそれほど長くはなく、結果として対処すべき残留リンクが含まれているグループのリストが得られます。

Exchange をインストールして実行し、環境に残留リンクが持ち込まれると、どんなことが起こるでしょうか。OAB 生成エラーが発生し、それらは対処すべき残留リンクがあることを示している可能性があります。

Mike O’Neill

これはローカライズされたブログ投稿です。原文の記事は「How Lingering Links can impact OAB generation process...」をご覧ください。