目錄整合及 Exchange Server 2003

 

上次修改主題的時間: 2005-12-15

Active Directory 中的 Exchange Server 2003 資訊,包括收件者的相關資訊,以及郵件組織的組態資訊。Active Directory 為 Exchange Server 2003 提供了一套安全性子系統。Active Directory 安全性可以確保僅有經過授權的使用者才可以存取信箱,並且僅有經過授權的管理員才可以修改組織中的 Exchange 組態。

在 Active Directory 中,Exchange 相關資料是儲存在下列三個目錄磁碟分割內:

  • 網域目錄磁碟分割   Exchange 收件者及系統物件是儲存在 Active Directory 內的網域目錄磁碟分割中。網域目錄磁碟分割會複寫到指定網域中的每一個網域控制站。
  • 組態目錄磁碟分割   Exchange 組態物件 (如系統管理群組、通用設定、收件者原則、系統原則,以及通訊清單或地址資訊) 都是儲存在組態目錄磁碟分割中。組態目錄磁碟分割會複寫到樹系內所有的網域控制站。
  • 架構目錄磁碟分割   Exchange 架構的修改 (例如,類別與屬性) 是儲存在架構目錄磁碟分割中。架構目錄磁碟分割會複寫到樹系內所有的網域控制站。
note附註:
並非所有組態資訊都是儲存在 Active Directory 中。Exchange 也會使用本機登錄及 IIS Metabase;在某些特殊情況下,還會使用組態檔。

Active Directory 中的 Exchange 類別與屬性

Active Directory 架構定義了可在目錄中建立的物件類別,以及可指派給每一個物件執行個體的屬性。在 Active Directory 樹系中安裝第一部 Exchange 2003 伺服器的期間,Exchange 必須修改這個架構,Active Directory 才能儲存 Exchange 特有的收件者及組態資訊。Exchange 安裝程式中的 ForestPrep 處理程序會擴充 Active Directory 架構。您也可以使用 Setup/ForestPrep 命令列直接執行此處理程序,如此不用真的安裝伺服器,就可將 Exchange 特有的類別與屬性新增到 Active Directory 架構。如果 Exchange Server 2003 的安裝人員沒有架構管理員權限,便需要額外執行這項步驟。

Exchange Server 2003 安裝程式會將一系列的 .ldf 檔案匯入到 Active Directory 中,藉以擴充 Active Directory 架構。除了 Exschema.ldf 之外,所有的 .ldf 檔案都是位於產品 CD 的 \Setup\i386\Exchange 目錄中。Exschema.ldf 則是位於 \Setup\i386\Exchange\Bin 目錄中。

下表列出了各種定義 Exchange Server 2003 物件及屬性的 .ldf 檔案。

包含 Active Directory 架構擴充的 Exchange Server 2003 安裝檔案

檔案名稱 描述

Schema0.ldf

包含收件者物件的架構擴充,例如 Exchange 擴充屬性的定義,您可使用它將標準屬性所未涵蓋的資訊指派給收件者物件。

Schema1.ldf

包含 Active Directory 連接器的架構擴充,您可以使用它來將 Exchange Server 5.5 組織及 Active Directory 整合在一起。

Schema2.ldf

包含網際網路存取通訊協定、目錄同步處理及 Exchange 儲存區組態物件的架構擴充。

Schema3.ldf

包含系統監視、Lotus Notes 連接器組態物件、離線通訊錄設定及 X.400 連接器專屬設定的架構擴充。

Schema4.ldf

包含路由群組、Bridgehead 伺服器、通訊協定容器、郵件資料庫、通訊清單服務及 Microsoft Exchange MTA 組態物件的架構擴充。

Schema5.ldf

包含通訊協定容器、路由群組連接器及可延伸式儲存引擎 (ESE) 相關參數的架構擴充。

Schema6.ldf

包含通訊協定虛擬伺服器、系統管理群組、郵件連接器及 Exchange 儲存區的架構擴充。

Schema7.ldf

包含郵件資料庫及信箱管理員的架構擴充。

Schema8.ldf

包含信箱管理員、系統監視、公用資料夾及 SMTP 傳輸組態物件的架構擴充。

Schema9.ldf

包含行事曆連接器、Novell GroupWise 連接器、動態通訊群組清單、郵件資料夾及 Outlook Mobile Access 的架構擴充。

note附註:
Schema1.ldf 到 Schema8.ldf 對於 Exchange 2000 Server 與 Exchange Server 2003 來說都是一樣。Schema9.ldf 則包含 Exchange Server 2003 中新增的架構擴充。

Exschema.ldf

將 Object-GUID、Replication-Signature、Unmerged-Attributes 及 ADC-Global-Names 屬性新增至架構,以將 Exchange 2000 Service Pack 1 之前版本的架構,更新為包含 Exchange Server 2003 所需的資訊。

note附註:
您可以搭配使用 .ldf 檔案與低階的 Active Directory 工具 (如 Ldifde.exe),以便修復損毀的 Active Directory 架構。不過,Active Directory 架構的疑難排解方法不在本書所討論的範圍內。請注意,架構變更可能會重設通用類別目錄;該種情況下,您必須將所有的收件者物件重新複寫到通用類別目錄。在大型的組織中,這會導致資料流量的大幅增加。

目錄服務存取

Exchange 2003 服務會存取 Active Directory 中儲存的資訊,並會將資訊寫入 Active Directory 中。如果每一項服務都直接對 Active Directory 進行這樣的通訊,那麼所產生的 Exchange 2003 通訊要求將對 Active Directory 網域控制站造成嚴重的負荷。此時,便需要一個中央元件來簡化與 Active Directory 的通訊。這個元件就是 DSAccess 模組。

DSAccess 是一個供 Exchange 2003 中多個元件使用的共用 API。它的用途在於查詢 Active Directory 並取得組態及收件者資訊。DSAccess 是在 DSAccess.dll 中實作,而 Exchange 元件及非 Exchange 元件都可載入這個檔案;這些元件包括系統服務員、郵件傳輸代理程式、Microsoft Exchange Information Store 服務、Exchange Management 服務、網際網路資訊服務 (IIS) 及 Windows Management Instrumentation (WMI)。DSAccess 會搜索 Active Directory 拓撲、偵測網域控制站及通用類別目錄伺服器,並維護一份適合供 Exchange 元件使用的有效目錄伺服器清單。此外,DSAccess 還會維護快取,藉此降低個別元件傳送給 Active Directory 伺服器的輕量型目錄存取通訊協定 (LDAP) 要求數目,以減輕 Active Directory 的負荷。

important重要事項:
DSAccess.dll 是實作 DSAccess 的主要 DLL。若要正常運作,DSAccess.dll 版本和搭配使用的 DLL 檔案版本必須符合。搭配使用的 DLL 檔案 (Dscmgs.dll 及 Dscperf.dll) 分別會儲存事件日誌訊息字串及效能物件提供者。

DSAccess 將可用的目錄服務伺服器分割為下列三個 (可能會重疊) 類別:

  • 通用類別目錄伺服器   Exchange Server 2003 必須存取通用類別目錄伺服器,以取得樹系中所有收件者物件的完整地址資訊。只有通用類別目錄伺服器會有網域中所有物件的完整複本,以及樹系中所有物件的部份複本。Exchange 伺服器目前所使用的通用類別目錄伺服器,稱為工作通用類別目錄伺服器。
    幾乎所有 Exchange Server 2003 使用者內容的目錄服務交易,都是以通用類別目錄為目標。無論本機 Active Directory 站台內有多少台通用類別目錄伺服器,工作通用類別目錄清單中最多可以有十個通用類別目錄伺服器。如果本機站台中沒有任何通用類別目錄伺服器,或是本機站台中的通用類別目錄伺服器都沒有通過適合性測試,則 DSAccess 會改用站台外成本最低的通用類別目錄伺服器 (最多可使用 200 個)。因為用於通用類別目錄的目錄服務伺服器,本身也是網域控制站,所以這部伺服器可以同時提供兩種類型的目錄。
  • 網域控制站   當提出要求的服務對於所發出搜尋中要求的使用者物件具備足夠的位置資訊,網域控制站就會用於使用者內容要求。這些網域控制站亦稱為工作網域控制站。工作網域控制站是本機網域內,可以接受網域命名內容查詢的網域控制站。不論本機 Active Directory 站台內有多少個網域控制站,工作網域控制站清單中最多可以有十個網域控制站。如果本機站台內沒有網域控制站,或者本機站台內的網域控制站都沒有通過適合性測試,則 DSAccess 會改用站台外成本最低的網域控制站。
    對工作網域控制站所做的查詢,會經過循環配置資源的方式來保持負載平衡,如此可避免對單一網域控制站造成太大的負荷。如果未在登錄中明確指定工作網域控制站,則每隔 15 分鐘,就會執行拓撲搜索處理程序及適合性測試,來重新評估並重新產生工作網域控制站清單。
  • 組態網域控制站   Exchange Server 2003 可從多個網域控制站讀取資料。為避免對 Active Directory 套用組態變更時造成衝突,Exchange Server 2003 會將它的組態資訊寫入一個特殊的網域控制站,稱為組態網域控制站。在從工作網域控制站清單中選擇組態網域控制站時,DSAccess 會優先選擇網域控制站,而非通用類別目錄伺服器。此外,DSAccess 會優先使用本機站台內的目錄伺服器,而非次要站台內的目錄伺服器。
    如果組態網域控制站基於任何因素,無法供 Exchange Server 2003 使用時,DSAccess 就會選擇另一個工作網域控制站來當作組態網域控制站。DSAccess 每 8 個小時就會執行一組適合性測試來重新評估組態網域控制站。如果測試成功,DSAccess 就會繼續使用同一個組態網域控制站。如果測試失敗,DSAccess 就會從工作網域控制站清單中選擇另一個網域控制站作為組態網域控制站。

Exchange Server 2003 的核心元件須仰賴 DSAccess 來提供最新的 Active Directory 伺服器清單。例如,郵件傳輸代理程式 (MTA) 會透過 DSAccess 層,將 LDAP 查詢路由傳送到 Active Directory。為了連接資料庫,儲存區處理程序會使用 DSAccess 從 Active Directory 取得組態資訊。為了路由傳送郵件,傳輸處理程序會使用 DSAccess 取得連接器排列的資訊。

只要偵測到目錄服務的狀態發生變更,DSAccess 就會更新可用的通用類別目錄及網域控制站的清單。此清單可以共用給其他未將 DSAccess 當作目錄服務存取閘道的目錄取用者 (例如,DSProxy 及系統服務員中的其他元件) 使用。而要求此清單的服務,則須負責偵測後續的目錄服務狀態變更。

note附註:
除非在登錄中明確指定網域控制站及通用類別目錄伺服器,否則,會使用拓撲搜索程序及適合性測試,每隔 15 分鐘就重新評估並重新產生一次通用類別目錄伺服器及網域控制站清單。

LDAP 連線負載平衡與容錯移轉

在 Exchange Server 2003 中,DSAccess 會判定 Active Directory 拓撲、開啟適當的 LDAP 連線,並解決伺服器失敗問題。對於每一個可用的目錄服務伺服器,DSAccess 會開啟 LDAP 連線,這些連線完全專屬於每一個會用到 DSAccess 的處理程序。DSAccess 會使用它偵測到的目錄服務狀態資訊 (開啟、慢或關閉) 來更新這些 LDAP 連線。DSAccess 會使用這項狀態資訊來決定要使用哪一個 LDAP 連線來將要求轉送給 Active Directory。將連至可用網域控制站及通用類別目錄伺服器的 LDAP 連線,及其相關狀態集合在一起,就形成了 DSAccess 設定檔。

DSAccess 支援一種負載平衡機制,可以透過循環配置資源的方式,將使用者內容目錄服務要求,分散到 DSAccess 設定檔中的 LDAP 連線。負載平衡可以確保可靠性及延展性。您可以在登錄中靜態設定所有的設定檔,以僅使用特定的一組目錄服務伺服器。不過,這些連線的實際狀態與負載平衡可能會依不同的處理程序 (設定檔) 而有所不同。但若是組態內容要求,則不是這樣的情況。

note附註:
因為所有 Exchange Server 2003 與 IIS 的服務都使用相同的安全性範圍 (LocalSystem 帳戶),所以 DSAccess 可以針對不同的要求,重複使用 LDAP 連線。在啟動或拓撲發生變更時,DSAccess 會開啟 LDAP 連線,連到拓撲中所有適當的網域控制站及通用類別目錄伺服器。

當 Microsoft Windows 型的 LDAP (WLDAP) 實作傳回 LDAP 作業錯誤時,DSAccess 會分析並判定這是否表示目錄伺服器目前發生錯誤。如果是,則會立即將該目錄伺服器標示為不適合,並且自動在其他伺服器上嘗試重新執行使用者作業。只要拓撲中至少有一個工作網域控制站,DSAccess 就可以繼續正常作業。

為了確認網域控制站或通用類別目錄伺服器的適合性,DSAccess 會判定伺服器是否可透過連接埠 389 (網域控制站) 及連接埠 3268 (通用類別目錄伺服器) 進行存取,以及是否位於使用 DomainPrep 準備的網域中。DomainPrep 可以確保群組原則系統存取控制清單 (ACL) 經過正確設定,讓 Exchange Server 2003 服務獲得所需的權限來存取 Active Directory。本節後面會討論伺服器的適合性檢查。

tip秘訣:
若想在應用程式事件日誌中取得適合性報告,您可以在 Exchange 系統管理員中啟用對 DSAccess 服務拓撲類別的診斷記錄。

DSAccess 拓撲一定會包含兩個清單:站台內清單及站台外清單。其中一個清單 (站台內清單) 包含 Exchange 伺服器的本機 Active Directory 站台中的伺服器,而另一個清單 (站台外清單) 則包含其他 Active Directory 站台中的伺服器。剛開始時,DSAccess 僅會使用本機站台中的伺服器,但是遇到屬於特定類別的所有本機伺服器 (例如,通用類別目錄伺服器) 都處於不適合的狀況時,DSAccess 就會立即開始使用站台外清單。接著,DSAccess 會每隔 5 分鐘檢查一次本機站台,並儘快於錯誤後回復。此時,使用者要求會立即在站台外的伺服器上重新執行,而使用者並不會感覺到有任何變化。

有些 Exchange Server 2003 元件 (如 Exchange 路由引擎服務) 還會註冊到 Active Directory,以便讓 Active Directory 自動通知它關於組態資訊的一切變更。此通知機制可免除輪詢的需要,但事件註冊是依目標伺服器而定。如果 DSAccess 將目標伺服器標示為關閉,則 DSAccess 就會重新發出事件註冊,並將所發生的變更通知用戶端處理程序 (如路由引擎服務);這是因為選擇新的網域控制站或通用類別目錄伺服器的時候,監視的值可能已改變了。

DSAccess 拓撲搜索

啟動時,DSAccess 會先使用搜索程序來識別 Active Directory 拓撲,然後評估網域控制站及通用類別目錄伺服器的可用性。啟動完成之後 (及之後每隔 15 分鐘的時間),DSAccess 會使用幾乎相同的處理程序重新搜索拓撲,並檢查伺服器可用性是否有所變更。

note附註:
如果您明確指定 DSAccess 所使用的目錄伺服器 (如下所述),則 DSAccess 會略過搜索程序,而只檢查伺服器的適合性。

下列的連續清單概述了整個搜索程序,並指出初始搜索與重新搜索之間的差異:

  1. 啟動期間,系統服務員處理程序 (Mad.exe) 會產生 DSAccess.dll 的執行個體,同時加以初始化。
  2. DSAccess 會從本機網域中隨機選擇一個網域控制站,然後開啟 LDAP 連線以連到該網域控制站。這個伺服器稱為啟動程序載入伺服器。
  3. DSAccess 會讀取本機登錄,以判定拓撲是否已明確指定。如果拓撲已明確指定,則搜索程序會停止。如果未偵測到明確指定,則 DSAccess 會繼續進行搜索程序。
  4. DSAccess 會查詢啟動程序載入伺服器,以識別本機網域控制站及通用類別目錄伺服器。接著 DSAccess 會判定伺服器的適合性,然後指派伺服器角色。
  5. DSAccess 會查詢啟動程序載入伺服器,以判定是否有任何次要站台連線至本機站台。如果有次要站台進行連線,DSAccess 就會將每個站台的 SiteLink 物件,按成本從低到高來排序。然後 DSAccess 就會將成本最低的站台放到次要拓撲清單中。
  6. DSAccess 會查詢啟動程序載入伺服器,以識別次要拓撲站台中的網域控制站及通用類別目錄伺服器。
  7. DSAccess 會識別完整的拓撲,並編譯出一份工作網域控制站的清單,以及一份工作通用類別目錄伺服器的清單。

依預設,啟動期間 DSAccess 的初始化必須在 1 分鐘內完成,否則 DSAccess 就會停止。通常,1 分鐘已足夠 DSAccess 作初始化。如果初始化時間超過 1 分鐘,則表示網路或拓撲組態可能有問題。雖然您可以設定登錄機碼來延長逾時參數,但您應該先判定初始化時間變長的原因。若要設定逾時,請使用下列登錄設定。

位置

HKEY_LOCAL_MACHINE\SYSTEM \CurrentControlSet\Services\MSExchangeDSAccess

TopoCreateTimeoutSecs

類型

REG_DWORD

描述

設定 DSAccess 初始化程序的逾時值 (以秒為單位),如 0x200。預設值為 0x3C 秒 (1 分鐘)。

note附註:
如果您將 MSExchangeDSAccess 服務之所有類別的診斷記錄級別都設定為 [最高],則 Exchange 系統管理員會自動取得關於 DSAccess 初始化的詳細資訊,並將該資訊放到應用程式事件日誌中。

初始搜索及後續進行的重新搜索

DSAccess 搜索完 Active Directory 拓撲之後,就會判定搜索到的工作網域控制站及通用類別目錄伺服器清單是否適合使用。在初始搜索及後續進行的重新搜索期間,DSAccess 會執行一系列的適合性測試,來判定伺服器的適合性。適合性測試有兩種類別:硬性測試及軟性測試。硬性測試會判定網域控制站或通用類別目錄是否為可用的待選伺服器。如果伺服器未通過硬性測試,則會視其為無法使用,並從搜索的伺服器清單中移除,而此時就不會執行軟性測試。

DSAccess 會執行下列硬性適合性測試:

  • 通用類別目錄功能   DSAccess 可藉由判定伺服器上 RootDSE 物件的 isGlobalCatalogReady 屬性是否設為 TRUE,來判定這個目錄伺服器是否已將自己指定為通用類別目錄伺服器。如果這個屬性是設為 TRUE,則判定這個目錄伺服器是有效且可用的通用控制站。

  • **可連接性   **DSAccess 會使用「網際網路控制訊息通訊協定 (ICMP)」來 Ping 每個伺服器,藉此確認伺服器的可用性。DSAccess 還會確認目錄伺服器是否可以透過連接埠 389 (針對網域控制站) 及連接埠 3268 (針對通用類別目錄伺服器) 來連接。
    如果您是使用 ICMP 來判定伺服器的可用性,那麼在網路中所有連線皆不支援 ICMP 的情況下,就可能會遭遇問題。例如,Exchange 伺服器可能是在周邊網路中,而其中在 Exchange 伺服器與網域控制站之間並沒有 ICMP 連線能力。在這樣的情況下,您就應該停用 ICMP 檢查,並將下列登錄參數設為 0。

    位置

    HKEY_LOCAL_MACHINE\SYSTEM \CurrentControlSet\Services\MSExchangeDSAccess

    LdapKeepAliveSecs

    類型

    REG_DWORD

    值資料

    0x0

    描述

    如果登錄機碼不存在或未設為 0,則 DSAccess 會使用 Ping 通訊協定。

    如需 LdapKeepAliveSecs 登錄機碼的相關資訊,請參閱 Microsoft 知識庫文件 - 320529<XADM: Using DSAccess in a Perimeter Network Firewall Scenario Requires a Registry Key Setting>(英文)。

    Caution注意:
    編輯登錄錯誤可能會導致嚴重的問題,使得您必須重新安裝作業系統。因編輯登錄錯誤所造成的問題可能無法解決。因此請在編輯登錄之前,備份所有重要的資料。
  • 群組原則 SACL 權限   安裝程式會連同一般的存取控制清單 (ACL) 權限,將安全性存取控制清單 (SACL) 存取權限,授與所有執行 Exchange 2003 Server 的伺服器,以讓它們能夠檢視 ntSecurityDescriptor 屬性。權限是透過 SeSecurityPrivilege 權限進行授與。DSAccess 會讀取伺服器上組態目錄磁碟分割物件的安全性描述元,藉此確認是否可以讀取 SACL。如果無法讀取 SACL,DSAccess 就會將這個伺服器視為不適合。

  • **重要資料   **目錄伺服器必須位於執行過 DomainPrep 的網域中。該網域的 Exchange 組態容器中,必須包含 Exchange Server 2003 伺服器物件。

  • **同步處理   **DSAccess 會藉由判定伺服器上 RootDSE 物件的 isSynchronized 屬性是否設為 TRUE,來確認伺服器是否已同步處理。

  • Netlogon   DSAccess 會對目錄伺服器發出 DSGetDcName 遠端程序呼叫 (RPC),以測試目錄伺服器整體的適合性。目錄伺服器如果尚未進行同步處理、磁碟空間不足,或發生其他問題,就不會將自己識別為目錄伺服器。
    在不允許 RPC 傳輸的周邊網路中,將無法進行 NetLogon 檢查。不過,NetLogon 檢查會繼續發出 RPC,直到失敗為止,這將花上很長的時間。因為重複執行 NetLogon 檢查會降低效能,所以您應讓 DSAccess 停止進行 NetLogon 檢查,方法是建立下列登錄機碼。

    位置

    HKEY_LOCAL_MACHINE\SYSTEM \CurrentControlSet\Services\MSExchangeDSAccess

    DisableNetLogonCheck

    類型

    REG_DWORD

    值資料

    0x0

    描述

    如果登錄機碼不存在或未設為 0,則 DSAccess 會執行 Netlogon 檢查。

    如需相關資訊,請參閱 Microsoft 知識庫文件 - 320228<XGEN: The "DisableNetLogonCheck" Registry Value and How to Use It>(英文)。

  • **作業系統的版本   **Exchange Server 2003 僅能使用執行 Microsoft Windows Server 2003 或 Windows 2000 Server Service Pack 3 (含) 以上版本的網域控制站及通用類別目錄伺服器。DSAccess 會判定目錄伺服器是否符合這些要求。

完成硬性測試之後,DSAccess 會執行一系列軟性測試,以判定哪些目錄伺服器可以承受 Exchange Server 2003 所施加的負載。為了做出此判定,DSAccess 會執行下列軟性適合性測試:

  • DNS 權數   DSAccess 會根據每個伺服器在 DNS 中的 (SRV) 資源記錄,使用網域控制站及通用類別目錄伺服器的權數值,來判定用戶端應該選擇的伺服器。權數越高,DSAccess 選擇該伺服器的可能性越大。如果 DSAccess 無法讀取權數,就會使用預設權數 (100)。
  • FSMO 主要網域控制站角色擁有者   如果您的拓撲包含執行 Windows NT Server 的伺服器,則具備彈性單一主機操作 (FSMO) 主要網域控制站 (PDC) 角色的目錄伺服器將會承受很重的負載,使它無法成為理想的待選目錄伺服器以供 Exchange Server 2003 使用。因此,DSAccess 會執行軟適合性測試來尋找 PDC FSMO 角色擁有者,以便從適合的目錄伺服器清單中移除。
  • 回應時間   DSAccess 會對目錄伺服器執行 LDAP 查詢,以便檢查其回應時間。如果回應時間大於 2 秒,就算軟性適合性測試失敗。
    note附註:
    DSAccess 會提供完整的循環配置資源負載平衡,以及容錯移轉到其他目錄伺服器的支援,來預防目前伺服器失效的狀況。在網域控制站或通用類別目錄伺服器上執行 Exchange Server 2003 時,會停用這些功能。

明確指定 DSAccess 伺服器

DSAccess 可以讓管理員靜態設定 DSAccess 可使用的特定網域控制站及通用類別,並且停用自動拓撲搜索程序。這些明確指定的項目是使用 Exchange 系統管理員的 DSAccess 使用者介面來設定,如下圖所示。

3c5b4709-c63d-4bb4-a68f-489625736030

初始化時,DSAccess 會讀取登錄,以判定是否有任何網域控制站或通用類別目錄伺服器是以靜態方式設定。如果有任何網域控制站或通用類別目錄伺服器是以靜態方式設定,就不會執行動態拓撲偵測。如果未發現任何靜態目錄伺服器,DSAccess 就會動態偵測拓撲中的目錄服務伺服器。

當 DSAccess 是以靜態方式設定時,就不會使用 DSAccess 中的負載平衡及容錯移轉功能,也不會使用或偵測其他的網域類別目錄或通用類別目錄。因此,如果所有靜態設定的網域類別目錄或通用類別目錄都處於離線狀態,或是無法連線,DSAccess 作業就會失敗。如果通用類別目錄是以靜態方式設定,但是登錄中未指定網域類別目錄,則會動態偵測並使用任何可用的網域控制站。同樣地,如果網域類別目錄是用靜態方式設定,但是登錄中未指定通用類別目錄,則會動態偵測並使用任何可用的通用類別目錄。如果組態網域控制站不是用靜態方式設定,則會將其從可用網域控制站清單中移除 (無論此清單是採動態還是靜態方式設定)。

DSAccess 設定檔

用於回應使用者內容要求的網域控制站及通用類別目錄,需要設定檔才能運作。因此,可以在 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\MSExchangeDSAccess\Profiles\Default 子機碼下找到這些設定的登錄值。靜態設定 DSAccess 所使用的網域控制站及通用類別目錄伺服器時,需要下列登錄機碼。

位置

MSExchangeDSAccess\Profiles\Default\<Name of DC>

IsGC

類型

REG_DWORD

值資料

0x0

位置

MSExchangeDSAccess\Profiles\Default\<Name of DC>

HostName

類型

REG_SZ

值資料

<name of DC>

位置

MSExchangeDSAccess\Profiles\Default\<Name of DC>

DSType

類型

REG_SZ

值資料

0

位置

MSExchangeDSAccess\Profiles\Default\<Name of DC>

PortNumber

類型

REG_DWORD

值資料

0x00000185 (389)

位置

MSExchangeDSAccess\Profiles\Default\<Name of GC>

IsGC

類型

REG_DWORD

值資料

0x1

位置

MSExchangeDSAccess\Profiles\Default\<Name of GC>

HostName

類型

REG_SZ

值資料

<name of GC>

位置

MSExchangeDSAccess\Profiles\Default\<Name of GC>

DSType

類型

REG_SZ

值資料

0

位置

MSExchangeDSAccess\Profiles\Default\<Name of GC>

PortNumber

類型

REG_DWORD

值資料

0x00000cc4 (3268)

指定組態網域控制站

DSAccess 所使用的組態網域控制站可透過下列三種方式之一來設定:

  • 在登錄中靜態設定   組態網域控制站是由所有設定檔共用。因此,組態網域控制站的登錄設定是在 \Instance0 子機碼下所指定,如下所示。

    位置

    MSExchangeDSAccess\Instance0

    ConfigDCHostName

    類型

    REG_SZ

    值資料

    <Name of config DC>

    位置

    MSExchangeDSAccess\Instance0

    ConfigDCPortNumber

    類型

    REG_DWORD

    值資料

    0x00000185 (389)

  • 動態偵測   如果未靜態指定組態網域控制站,則 DSAccess 會使用動態拓撲搜索來尋找組態網域控制站。DSAccess 會使用所選取的組態網域控制站 8 個小時,之後再隨機選擇新的組態網域控制站。如果重新啟動系統服務員,或目前選取的組態網域控制站失敗或關閉,則 DSAccess 會提早選擇新的組態網域控制站。

  • 系統服務員啟動時   在 Exchange Server 2003 中,系統服務員處理程序只有在首次啟動服務時,才會選擇組態網域控制站,而這個時間點通常是在進行安裝或升級時。無論如何,只要在登錄中靜態設定了組態網域控制站,就會忽略系統服務員所做的選擇。DSAccess 會將靜態的組態網域控制站項目當作建議選項。因此,只要您靜態設定了組態網域控制站,DSAccess 就會優先使用它來回應組態內容要求。如果該網域控制站變成無法使用,就會在工作網域控制站清單中選擇替代的網域控制站。在這樣的情況下,DSAccess 會選擇一個可用的網域控制站,將組態網域控制站做容錯移轉並繼續運作,就好像組態網域控制站的登錄資訊不存在一樣。

DSAccess 如何指派伺服器角色

下列範例描述不同的 Active Directory 組態,並說明在每種情況下,DSAccess 是如何指定伺服器角色。這些範例假設所有的網域控制站及通用類別目錄,都是執行 Windows 2000 Server (Service Pack 3 或更新版本)、已通過所有的適合性測試,而且沒有明確指定靜態網域控制站 (也就是說 DSAccess 會執行動態拓撲搜索)。

範例 1 – 簡單的單一網域拓撲

下圖是由單一網域所形成的樹系,這個網域包含兩個站台。站台 A 包含一個網域控制站及一個通用類別目錄,而站台 B 則包含三個網域控制站及兩個通用類別目錄。

a9531fbe-3b39-4438-a1da-9f9ca4b19466

站台 A 中 Exchange Server 2003 伺服器上執行的 DSAccess 將偵測到下表所示的拓撲。

站台 A 的拓撲

網域控制站類型 伺服器

組態網域控制站

網域控制站 1 或通用類別目錄 1

工作網域控制站

網域控制站 1 及通用類別目錄 1

工作通用類別目錄

通用類別目錄 1

站台 B 中 Exchange Server 2003 伺服器上執行的 DSAccess 將偵測到下表所示的拓撲。

站台 B 的拓撲

網域控制站類型 伺服器

組態網域控制站

網域控制站 2、3 及 4

通用類別目錄 2 或 3

工作網域控制站

網域控制站 2、3 及 4

通用類別目錄 2 及 3

工作通用類別目錄

通用類別目錄 2 及 3

無論是在哪一種情況中,所列示伺服器的順序很重要。這是因為這些伺服器的列出及使用順序,是根據 DSAccess 發現伺服器並判定其為適合伺服器的先後順序而來。

範例 2 – 複雜的網域拓撲

下圖是較複雜的拓撲,其中包括兩個網域及兩個站台,而站台 A 橫跨兩個網域。

1131b948-94d0-4f6e-9f5b-2e97bd608f96

網域 1 及站台 A 中 Exchange Server 2003 伺服器上執行的 DSAccess,將偵測到下表所示的拓撲。

網域 1 及站台 A 的拓撲

網域控制站類型 伺服器

組態網域控制站

網域控制站 1、2、3 及 4

通用類別目錄 1、2 或 3

工作網域控制站

網域控制站 1、2、3 及 4

通用類別目錄 1、2 及 3

工作通用類別目錄

通用類別目錄 1、3 及 2

網域 2 及站台 A 中 Exchange Server 2003 伺服器上執行的 DSAccess,將偵測到下表所示的拓撲。

網域 2 及站台 A 的拓撲

網域控制站類型 伺服器

組態網域控制站

網域控制站 1、2、3、4

通用類別目錄 1、2 或 3

工作網域控制站

網域控制站 1、2、3 及 4

通用類別目錄 1、2 及 3

工作通用類別目錄

通用類別目錄 2、1 及 3

網域 2 及站台 B 中 Exchange Server 2003 伺服器上執行的 DSAccess,將偵測到下表所示的拓撲。

網域 2 及站台 B 的拓撲

網域控制站類型 伺服器

組態網域控制站

網域控制站 5

通用類別目錄 4

工作網域控制站

網域控制站 5

通用類別目錄 4

工作通用類別目錄

通用類別目錄 4

同樣的,這些伺服器的列出及使用順序,是根據伺服器被發現並判定其為適合伺服器的先後順序而來。

目錄存取快取

DSAccess 快取為 Exchange 伺服器上存在於記憶體內的快取,它會包含從 Active Directory 擷取的組態及使用者記錄。存取快取中的記錄時,是透過物件的辨別名稱 (DN)、全域唯一識別項 (GUID),或是機碼 (包含範圍、BaseDN 及用來在 Active Directory 中尋找此物件的篩選)。後來只要再使用相同的 DN、GUID 或機碼,就可找到快取中的記錄。如前所述,DSAccess 是一個共用的 API,Exchange Server 2003 電腦上的多個處理程序都會使用。下表列出會將 DSAccess.dll 載入堆集,而從 Active Directory 資訊快取功能獲益的處理程序。

載入 DSAccess.dll 的處理程序

處理程序 描述

Mad.exe

Microsoft Exchange System Attendant 服務

Store.exe

Microsoft Exchange Information Store 服務

EMSMTA.exe

Microsoft Exchange MTA Stacks 服務

ExMgmt.exe

Exchange Management 服務

RESvc.exe

Exchange 路由引擎服務

Inetinfo.exe 或 W3WP.exe

IIS 及工作者處理序

Winmgmt.exe

Windows Management Instrumentation 服務

下表列出各種使用 DSAccess 以取得使用者及組態資訊的 Exchange 元件。

使用 DSAccess 的 Exchange 元件

元件 使用 DSAccess 進行下列操作

Metabase 更新服務 (DS2MB)

根據更新序列號碼 (USN) 追蹤的目錄變更

Exchange 路由引擎 (RESVC)

使用者和組態查閱

SMTP 分類程式 (SMTP CAT)

拓撲中的通用類別目錄伺服器清單

Directory Service Proxy (DSProxy)

拓撲中的通用類別目錄伺服器清單

Exchange 儲存區

使用者和組態查閱

WebDAV

使用者和組態查閱

郵件傳輸代理程式 (MTA)

使用者和組態查閱

DSAccess 快取可將這些元件執行過的目錄查閱,放在快取中一段時間。這段期間內,如果有其他處理程序要求相同的資訊,則它們可擷取 DSAccess 快取中的資訊,而無需重新對工作通用類別目錄執行相同的查詢。除了從 MAPI 用戶端執行的通訊錄查閱及 SMTP 輸入與輸出路由的某些部份之外,所有的目錄存取動作都會透過 DSAccess 處理程序執行並快取。

目錄項目預設會停留在快取中 15 分鐘。使用者快取的預設大小為 140 MB,而組態快取的預設大小為 50 MB。使用者數目、項目數量上限、快取大小上限 (記憶體) 及快取過期時間,都是影響 DSAccess 快取最佳大小與效能的因素。

下列登錄機碼 (預設都不存在) 可針對 DSAccess 快取中的組態資料,提供低階的控制。

位置

MSExchangeDSAccess\Instance0

CacheTTLConfig

類型

REG_DWORD

值資料

0x384 (900 seconds)

描述

用於指定組態資料在快取中的存留時間 (TTL)

位置

MSExchangeDSAccess\Instance0

MaxEntriesConfig

類型

REG_DWORD

值資料

0 (no limit)

描述

用於指定快取中組態資料的數目上限

下列登錄機碼 (預設都不存在) 可針對 DSAccess 快取中的使用者資料,提供低階的控制。

位置

MSExchangeDSAccess\Instance0

CacheTTLUser

類型

REG_DWORD

值資料

0x258 (600 seconds)

描述

用於指定使用者資料在快取中的存留時間 (TTL)

位置

MSExchangeDSAccess\Instance0

MaxEntriesUser

類型

REG_DWORD

值資料

0 (no limit)

描述

用於指定快取中使用者資料的數目上限

預先載入 DSAccess

您應預先載入搜尋篩選,以避免同時對 Active Directory 執行多個搜尋執行個體時發生問題 (對同一使用者物件執行多個搜尋篩選時會發生)。您可透過下列登錄機碼來啟用預先載入功能,這些機碼定義範圍、基本辨別名稱 (BaseDN) 及搜尋篩選。

Caution注意:
編輯登錄錯誤可能會導致嚴重的問題,使得您必須重新安裝作業系統。因編輯登錄錯誤所造成的問題可能無法解決。因此請在編輯登錄之前,備份所有重要的資料。

下列登錄值可用來預先載入 DSAccess 快取。

位置

MSExchangeDSAccess

PreloadBaseDNs

類型

REG_MULTI_SZ

值資料

BaseDN value (for example, DC=contoso,DC=com)

描述

識別用作查詢根目錄的容器物件。此為多字串設定。每個 BaseDN 都必須與一個預先載入的篩選關聯。這表示 BaseDN 與篩選字串必須完全相符。

位置

MSExchangeDSAccess\

PreloadFilters

類型

REG_MULTI_SZ

值資料

A filter string, for example, legacyExchangeDN=%

描述

DSAccess 會讀取這個登錄,並將百分比符號 (%) 解譯為待決定的開放參數。實際執行搜尋時,則會剖析從目錄傳回的記錄,並將此屬性的值 (在預先載入的篩選中指定) 插入到搜尋項目。然後,會設定指向適用使用者記錄的指標。就像所有的登錄動作一樣,更新登錄時也要非常謹慎。DSAccess 跟其他 Exchange 服務一樣,不會檢查登錄所指定之 Active Directory 伺服器的有效性,亦不會檢查是否有拼字錯誤或是其他可能的錯誤。為預先載入而填入的那些值,已針對最常見的 Exchange 搜尋作最佳設定。

許多 Exchange 交易皆可觸發預先載入事件,但前提是要符合特定準則。這些預先載入事件會按下列順序發生:

  1. 執行 Active Directory 搜尋。如果搜尋符合下列三個條件,就會載入 DSAccess 快取:
    • 必須從使用者目錄磁碟分割搜尋中傳回辨別名稱。
    • 傳回的識別名稱必須包含預先載入的登錄設定中指定的 BaseDN。例如,如果實際搜尋所指定的 BaseDN 比預先載入的 BaseDN 更廣泛,便不會執行預先載入。
    • 此時,傳回的記錄會經過剖析,並擷取預先載入的搜尋字串中指定的屬性。建構搜尋篩選時所需的屬性必須存在。在下列多工搜尋範例中,必須至少存在其中一個屬性:
      (|(objectGuid=%) (msExchMailboxGuid=%))
      由於傳回結果難以預測,所以預先載入篩選字串中的屬性不能有多重值。例如,proxyAddresses = % 不是有效的預先載入搜尋篩選,因為 proxyAddresses 是多重值屬性,而 DSAccess 會不知道要用哪個值當作開放值。
  2. 搜尋項目中包含範圍、BaseDN、屬性及篩選字串,並會連結到快取中的這個識別名稱項目。例如:
    [scope = Whole Subtree] / [baseDN = DC=mydom,DC=com] / [filter = (objectClass=myclass)]

DSAccess 會使用快取而不是 Active Directory,來根據預先載入的篩選及 BaseDN,處理以後的 Active Directory 搜尋要求。