MAPI 和 RPC over HTTP

 

上次修改主題的時間: 2005-05-23

在 Microsoft Outlook 中設定 Exchange Server 傳輸服務時,Outlook 會使用 MAPI,與 Exchange Information Store 服務進行通訊。這些 MAPI 呼叫皆為 RPC 型。雖然 RPC 呼叫在 LAN 或 WAN 環境中運作良好,但基於防火牆及其他安全性考量,通常並不建議在網際網路使用 RPC 呼叫。在舊版 Exchange 中,外部 Outlook 使用者如果要以 MAPI 存取 Exchange,必須先建立連到組織私人網路的 VPN 連線。

RPC Proxy 執行於 IIS 電腦。它可以接受來自網際網路的 RPC 要求,有效透過網際網路連到 RPC 伺服器程式,且不需要 VPN 連線就可以執行遠端程序呼叫。它也可以不開啟防火牆上多個連接埠,即執行驗證、確認以及存取檢查。這是透過中繼 (稱為 RPC-over-HTTP Proxy 或 RPC Proxy) 的協助所完成。

如果要求通過所有測試,RPC Proxy 會將要求轉寄到執行實際處理的 RPC 伺服器。若使用 RPC over HTTP,RPC 用戶端就無法直接與伺服器進行通訊。相反地,它們會以 RPC Proxy 作為中繼。

RPC over HTTP

RPC over HTTP 讓用戶端程式得以使用網際網路來執行程序,此程序是由遠端網路上伺服器程式所提供。RPC over HTTP 會透過已建立的 HTTP 連接埠對其呼叫進行路由。因此,其呼叫可以穿越用戶端以及伺服器網路的網路防火牆。RPC Proxy 位於 RPC 伺服器的網路上。RPC Proxy 會建立並維護與 RPC 伺服器的連線。它是一種 Proxy,會將遠端程序呼叫發送給 RPC 伺服器,並將伺服器的回應透過網際網路傳回到用戶端程式。

RPC over HTTP 同時具有伺服器端和用戶端需求,詳細資料如下表所示。

實作 RPC over HTTP 的需求

用戶端需求

Microsoft Windows XP Professional (Service Pack 1 或更新版本)

來自 Microsoft 知識庫 331320 的 Hotfix

Microsoft Office Outlook 2003

伺服器端需求

Exchange 伺服器上執行 Microsoft Windows Server 2003

所有前端和後端伺服器上均執行 Exchange Server 2003

通用類別目錄伺服器上執行 Windows Server 2003

RPC Proxy 伺服器上執行 Windows Server 2003

當用戶端程式將 HTTP 當作傳輸工具發出 RPC 時,用戶端上的 RPC 執行階段程式庫會連絡 RPC Proxy。RPC 用戶端將根據它使用的是 HTTP 還是 HTTPS,來決定應使用 TCP 連接埠 80 或 TCP 連接埠 443。RPC Proxy 會連絡 RPC 伺服器程式並建立一個 TCP/IP 連線。用戶端與 RPC Proxy 會透過網際網路維護其 HTTP 或 HTTPS 連線。

如果防火牆存在,用戶端到 RPC Proxy 的 HTTP 或 HTTPS 連線便可穿越防火牆 (不過須有適當存取權限)。然後伺服器可以執行 RPC,並使用此連線透過 RPC Proxy 回應用戶端。

如果用戶端或伺服器因為任何原因中斷連線,RPC Proxy 就會偵測到該連線已經中斷,而結束 RPC 工作階段。但只要工作階段繼續,RPC Proxy 就會一直維持與用戶端及伺服器的連線。它會從用戶端將 RPC 轉寄到伺服器,並將伺服器的回應傳送到用戶端。

RPC 用戶端程式可以透過網際網路對其 RPC 呼叫進行路由,方法是建立下列格式的字串繫結:

[object_uuid@]ncacn_http:rpc_server[endpoint,HttpProxy=proxy_server:http_port,'rpcproxy'=rpc_proxy:rpc_port]

其中:

  • object_uuid 指定 RPC 物件的通用唯一識別元 (UUID)。
  • ncacn_http 選取 RPC over HTTP 的通訊協定順序規格。
  • rpc_server 是執行 RPC 伺服器處理程序的電腦網路位址。必須以 RPC Proxy 電腦 (而非用戶端) 可以檢視並瞭解的格式指定伺服器位址。由於用戶端不會直接連到伺服器,所以不會解析伺服器名稱或建立與伺服器的連線。RPC Proxy 會代表用戶端建立連線。因此,rpc_server 必須是 RPC Proxy 可以辨識的名稱。
  • endpoint 指定 RPC 伺服器處理程序用來接聽 RPC 的 TCP/IP 連接埠。
  • HttpProxy 可在 RPC 用戶端的網路上,選擇性地指定 HTTP Proxy 伺服器 (如 Microsoft Proxy Server)。如果選取 Proxy 伺服器時未指定連接埠編號,RPC 虛設常式預設會使用連接埠 80 (若未要求使用 SSL) 或連接埠 443 (若指定使用 SSL)。
  • RPCProxy 指定連到 RPC 伺服器時,用來作為 Proxy 的 IIS 電腦位址和連接埠編號。只有當 RPC 伺服器處理程序位於 RPC Proxy 以外的電腦上時,才需指定此值。如果沒有指定連接埠編號,RPC 用戶端虛設常式預設會使用連接埠 80 (若未要求使用 SSL) 或連接埠 443 (若指定使用 SSL,即 HTTPS)。

RPC 虛擬目錄

雖然 RPC over HTTP 是 Windows Server 2003 的功能而非 IIS 功能,但它仍會以網際網路伺服器應用程式設計介面 (ISAPI) 延伸的形式實作,並在通訊協定虛擬伺服器內執行。安裝 RPC Proxy 服務時,[預設的網站] 下會建立 RPC 虛擬目錄。您應該搭配使用 SSL 及基本驗證。

RPC over HTTP 以及 Microsoft Exchange Information Store 服務

雖然 RPC over HTTP 以通訊協定虛擬伺服器的形式實作,不過在通訊處理程序中,並不使用 ExIPC。由於使用 RPC over HTTP 的 Outlook 用戶端被視為傳統的 MAPI 用戶端,所以這些用戶端會使用 Exchange 資訊儲存庫的 MAPI 介面,與 Microsoft Exchange Information Store 服務進行通訊。