21Vianet が運用するOffice 365を使用した Exchange ハイブリッド展開機能の構成

この記事は、中国の 21Vianet が運営する Microsoft 365 と、Exchange 2013 CU5 以降に更新できないオンプレミスの Exchange 組織にのみ適用されます。

オンプレミスの Exchange 2013 CU5 組織と Microsoft 365 サービス間のフル機能のハイブリッド展開がサポートされるようになりました。 ただし、オンプレミスのorganizationで Exchange 2013 CU5 にアップグレードまたはインストールできない場合でも、オンプレミスの Exchange とExchange Online組織間で、空き時間情報の予定表共有を構成できます。

オンプレミスおよびExchange Online組織でこのハイブリッド展開機能を有効にするには、次の手順に従います。

手順 1: Exchange Online organizationの承認サーバー オブジェクトを作成する

この手順では、Exchange Online organizationの検証済みドメインを指定する必要があります。 このドメインは、クラウドベースの電子メール アカウントに使用されるプライマリ SMTP ドメインと同じドメインにする必要があります。 このドメインは、次の手順<検証済みドメイン>と呼ばれます。

オンプレミスの Exchange organizationの Exchange 管理シェル (Exchange PowerShell) で次のコマンドを実行します。


New-AuthServer -Name "MicrosoftAzureACS" -AuthMetadataUrl https://accounts.accesscontrol.chinacloudapi.cn/<your tenant initial domain>/metadata/json/1

New-AuthServer -Name "EvoSTS" -Type AzureAD -AuthMetadataUrl "https://login.chinacloudapi.cn/<your tenant initial domain>/federationmetadata/2007-06/federationmetadata.xml"

手順 2: Exchange Online organizationのパートナー アプリケーションを有効にする

オンプレミスの Exchange organizationの Exchange PowerShell で次のコマンドを実行します。


Get-PartnerApplication | Where-Object {$_.ApplicationIdentifier -eq "00000002-0000-0ff1-ce00-000000000000"-and $_.Realm -eq ""} | Set-PartnerApplication -Enabled $true

手順 3: オンプレミスの承認証明書をエクスポートする

この手順では、PowerShell スクリプトを実行してオンプレミスの承認証明書をエクスポートし、次の手順でExchange Online organizationにインポートする必要があります。

という名前の PowerShell スクリプト ファイルに次のテキストを保存します (例: ExportAuthCert.ps1)。


$thumbprint = (Get-AuthConfig).CurrentCertificateThumbprint
if((Test-Path $env:SYSTEMDRIVE\OAuthConfig) -eq $false)
{
   New-Item -Path $env:SYSTEMDRIVE\OAuthConfig -Type Directory
}
Set-Location -Path $env:SYSTEMDRIVE\OAuthConfig
$oAuthCert = (dir Cert:\LocalMachine\My) | Where-Object {$_.Thumbprint -match $thumbprint}
$certType = [System.Security.Cryptography.X509Certificates.X509ContentType]::Cert
$certBytes = $oAuthCert.Export($certType)
$CertFile = "$env:SYSTEMDRIVE\OAuthConfig\OAuthCert.cer"
[System.IO.File]::WriteAllBytes($CertFile, $certBytes)

オンプレミスの Exchange organizationの Exchange PowerShell で、前の手順で作成した PowerShell スクリプトを実行します。 次に例を示します。


.\ExportAuthCert.ps1

手順 4: オンプレミスの承認証明書を Microsoft Entra Access Control Server (ACS) にアップロードする

注意

この手順で説明する手順は廃止され、間もなく非推奨に設定されます。 この手順をスキップし、代わりに、このサポート記事で説明されている手順に従って 、専用の Exchange ハイブリッド アプリケーション を構成してください。 このセクションの手順を使用して認証証明書を既にアップロードしている場合は、その証明書を削除することを強くお勧めします。 これを行うには、「 専用 Exchange ハイブリッド アプリの展開」のドキュメントで説明されている手順に従います。

次に、Windows PowerShellを使用して、前の手順でエクスポートしたオンプレミスの承認証明書を Microsoft Azure Active Directory Access Control Services (ACS) にアップロードする必要があります。 これを行うには、Windows PowerShell コマンドレットのMicrosoft Azure Active Directory (AD) モジュールをインストールする必要があります。 インストールされていない場合は、https://aka.ms/aadposh に移動してMicrosoft Azure AD モジュールをインストールします。 Microsoft Azure AD モジュールがインストールされたら、次の手順を実行します。

[Microsoft Azure Active Directory Module for Windows PowerShell ショートカット] をクリックして、Microsoft Azure AD コマンドレットがインストールされているWindows PowerShell ワークスペースを開きます。 この手順のすべてのコマンドは、Microsoft Azure Active Directory コンソールのWindows PowerShellを使用して実行されます。

という名前の PowerShell スクリプト ファイルに次のテキストを保存します (例: UploadAuthCert.ps1)。


Connect-MsolService
Import-Module msonlineextended
$CertFile = "$env:SYSTEMDRIVE\OAuthConfig\OAuthCert.cer"
$objFSO = New-Object -ComObject Scripting.FileSystemObject
$CertFile = $objFSO.GetAbsolutePathName($CertFile)
$cer = New-Object System.Security.Cryptography.X509Certificates.X509Certificate$cer.Import($CertFile)
$binCert = $cer.GetRawCertData()
$credValue = [System.Convert]::ToBase64String($binCert)
$ServiceName = "00000002-0000-0ff1-ce00-000000000000"
$p = Get-MsolServicePrincipal -ServicePrincipalName $ServiceNameNew-MsolServicePrincipalCredential -AppPrincipalId $p.AppPrincipalId -Type asymmetric -Usage Verify -Value $credValue

前の手順で作成した PowerShell スクリプトを実行します。 次に例を示します。


.\UploadAuthCert.ps1

スクリプトを開始すると、資格情報ダイアログ ボックスが表示されます。 Microsoft Online Microsoft Azure AD organizationでテナント管理者アカウントの資格情報を入力します。 スクリプトを実行した後、Microsoft Azure Active Directory セッションのWindows PowerShellを開いたままにします。 これを使用して、次の手順で PowerShell スクリプトを実行します。

手順 5: 外部オンプレミスの Exchange HTTP エンドポイントのすべてのホスト名機関を Microsoft Entra ID に登録する

これには、パブリックにアクセス可能なオンプレミスの Exchange organization内の各エンドポイントに対してスクリプトを実行する必要があります。 可能であれば、ワイルド カードを使用することをお勧めします。 たとえば、Exchange が https://mail.contoso.com/ews/exchange.asmx で外部から使用できるものとします。 この場合、単一のワイルドカード *.contoso.com を使用できます。 これは、autodiscover.contoso.com エンドポイントと mail.contoso.com エンドポイントについて説明します。 ただし、最上位ドメイン ( contoso.com) には対応していません。 Exchange 2013 クライアント アクセス サーバーに最上位のホスト名機関を使用して外部からアクセスできる場合は、このホスト名機関も contoso.com として登録する必要があります。 追加の外部ホスト名機関を登録するための制限はありません。

オンプレミスの Exchange organizationの外部 Exchange エンドポイントがわからない場合は、オンプレミスの Exchange organizationの Exchange PowerShell で次のコマンドを実行して、外部構成済みの Web サービス エンドポイントの一覧を取得できます。


Get-WebServicesVirtualDirectory | FL ExternalUrl

次のスクリプトを正常に実行するには、前のセクションの手順 4 で説明したように、Microsoft Azure Active DirectoryのWindows PowerShellが Microsoft Online Microsoft Azure AD テナントに接続されている必要があります。

という名前の PowerShell スクリプト ファイルに次のテキストを保存します (例: RegisterEndpoints.ps1)。 この例では、ワイルドカードを使用して、contoso.com のすべてのエンドポイントを登録します。 contoso.com を、オンプレミスの Exchange organizationのホスト名機関に置き換えます。


$externalAuthority="*.contoso.com"
$ServiceName = "00000002-0000-0ff1-ce00-000000000000"
$p = Get-MsolServicePrincipal –ServicePrincipalName $ServiceName
$spn = [string]::Format("{0}/{1}", $ServiceName, $externalAuthority)
$p.ServicePrincipalNames.Add($spn)
Set-MsolServicePrincipal –ObjectID $p.ObjectId –ServicePrincipalNames $p.ServicePrincipalNames

Microsoft Azure Active DirectoryのWindows PowerShellで、前の手順で作成した PowerShell スクリプトを実行します。 次に例を示します。


.\RegisterEndpoints.ps1

手順 6: オンプレミスのorganizationから Microsoft 365 に IntraOrganizationConnector を作成する

Exchange Onlineでホストされるメールボックスのターゲット アドレスを定義する必要があります。 このターゲット アドレスは、Microsoft 365 テナントの作成時に自動的に作成されます。 たとえば、Microsoft 365 テナントでホストされているorganizationのドメインが "contoso.com" の場合、ターゲット サービス アドレスは "contoso.partner.mail.onmschina.cn" になります。

Exchange PowerShell を使用して、オンプレミスのorganizationで次のコマンドレットを実行します。


New-IntraOrganizationConnector -name ExchangeHybridOnPremisesToOnline -DiscoveryEndpoint https://partner.outlook.cn/autodiscover/autodiscover.svc -TargetAddressDomains <your service target address>

手順 7: Microsoft 365 テナントからオンプレミスの Exchange organizationに IntraOrganizationConnector を作成する

オンプレミスのorganizationでホストされているメールボックスのターゲット アドレスを定義する必要があります。 organizationのプライマリ SMTP アドレスが "contoso.com" の場合、これは "contoso.com" になります。

また、オンプレミスのorganizationの外部自動検出エンドポイントも定義する必要があります。 会社が "contoso.com" の場合、これは通常、次のいずれかです。

  • https://autodiscover.<プライマリ SMTP ドメイン>/自動検出/自動検出.svc
  • プライマリ SMTP ドメイン>/自動検出/自動検出.svc を https://<します

オンプレミステナントと Microsoft 365 テナントの両方で Get-IntraOrganizationConfiguration コマンドレットを使用して、 New-IntraOrganizationConnector コマンドレットで必要なエンドポイント値を決定できます。

Windows PowerShellを使用して、次のコマンドレットを実行します。


$UserCredential = Get-Credential

$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://partner.outlook.cn/powershell-liveid/ -Credential $UserCredential

Import-PSSession $Session

New-IntraOrganizationConnector -name ExchangeHybridOnlineToOnPremises -DiscoveryEndpoint <your on-premises-Autodiscover endpoint> -TargetAddressDomains <your on-premises target address>

手順 8: Exchange 2013 SP1 より前のサーバーの AvailabilityAddressSpace を構成する

Exchange 2013 以前のorganizationでハイブリッド展開を構成する場合は、少なくとも 1 つの Exchange 2013 SP1 以降のサーバーを、既存の Exchange organizationにクライアント アクセスサーバーとメールボックス サーバーの役割を持つサーバーをインストールする必要があります。 Exchange 2013 クライアント アクセス サーバーとメールボックス サーバーは、フロントエンド サーバーとして機能し、既存の Exchange オンプレミス organizationとExchange Online organization間の通信を調整します。 この通信には、オンプレミスとExchange Online組織間のメッセージ トランスポートとメッセージング機能が含まれます。 ハイブリッド展開機能の信頼性と可用性を高めるために、オンプレミスのorganizationに複数の Exchange 2013 サーバーをインストールすることを強くお勧めします。

Exchange 2013/2010 または Exchange 2013/2007 との混在展開では、オンプレミスのorganization用のすべてのインターネットに接続するフロントエンド サーバーは、Exchange 2013 SP1 以降を実行しているクライアント アクセス サーバーであることが推奨されます。 Microsoft 365 および Exchange Online から送信されるすべての Exchange Web サービス (EWS) 要求は、オンプレミス展開の Exchange 2013 クライアント アクセス サーバーに接続する必要があります。 さらに、Exchange Onlineのオンプレミスの Exchange 組織で発生するすべての EWS 要求は、Exchange 2013 SP1 以降を実行しているクライアント アクセス サーバーを介してプロキシする必要があります。 これらの Exchange 2013 クライアント アクセス サーバーは、この追加の受信および送信 EWS 要求を処理する必要があるため、処理負荷を処理し、接続の冗長性を提供するために十分な数の Exchange 2013 クライアント アクセス サーバーを使用できるようにする必要があります。 必要なクライアント アクセス サーバーの数は、EWS 要求の平均量によって異なり、organizationによって異なります。

次の手順を完了する前に、以下を確認してください。

  • フロントエンド ハイブリッド サーバーは Exchange 2013 SP1 以降です
  • Exchange 2013 サーバーの一意の外部 EWS URL があります。 Microsoft 365 テナントは、ハイブリッド機能のクラウドベースの要求が正しく機能するためには、これらのサーバーに接続する必要があります。
  • サーバーには、メールボックス サーバーとクライアント アクセス サーバーの両方の役割があります
  • 既存の Exchange 2010/2007 メールボックスサーバーとクライアント アクセス サーバーには、最新の累積的な更新プログラム (CU) または Service Pack (SP) が適用されています。

既存の Exchange 2010/2007 メールボックス サーバーは、ハイブリッド以外の機能接続のフロントエンド サーバーに Exchange 2010/2007 クライアント アクセス サーバーを引き続き使用できます。 Exchange 2013 サーバーに接続する必要があるのは、Microsoft 365 テナントからのハイブリッド展開機能の要求のみです。

Exchange 2013 より前のサーバーの送信 Exchange Web サービス プロキシを構成する

オンプレミスの Exchange 2013 SP1 クライアント アクセス サーバーの Exchange Web サービス エンドポイントを指す AvailabilityAddressSpace を構成する必要があります。 このエンドポイントは、手順 5 で説明したのと同じエンドポイントであるか、オンプレミスの Exchange 2013 SP1 クライアント アクセス サーバーで次のコマンドレットを実行して判断できます。


Get-WebServicesVirtualDirectory | FL AdminDisplayVersion,ExternalUrl

仮想ディレクトリ情報が複数のサーバーから返される場合は、Exchange 2013 SP1 クライアント アクセス サーバーで返されるエンドポイントを使用してください。 AdminDisplayVersion パラメーターには 15.0 (ビルド 847.32) 以上が表示されます。

AvailabilityAddressSpace を構成するには、Exchange PowerShell を使用し、オンプレミスのorganizationで次のコマンドレットを実行します。


Add-AvailabilityAddressSpace -AccessMethod InternalProxy –ProxyUrl <your on-premises External Web Services URL> -ForestName <your Office 365 service target address> -UseServiceAccount $True

これが機能したことを知る方法

OAuth 構成が正しいことを確認するには、Test_OAuthConnectivity コマンドレットを使用します。 このコマンドレットは、オンプレミスの Exchange エンドポイントとExchange Online エンドポイントが相互に要求を正常に認証できることを確認します。

重要

リモート PowerShell を使用してExchange Online organizationに接続する場合は、Import-PSSession コマンドレットで AllowClobber パラメーターを使用して、最新のコマンドをローカル PowerShell セッションにインポートする必要があります。

オンプレミスの Exchange organizationがExchange Onlineに正常に接続できることを確認するには、オンプレミスのorganizationで Exchange PowerShell で次のコマンドを実行します。


Test-OAuthConnectivity -Service EWS -TargetUri https://partner.outlook.cn/ews/exchange.asmx -Mailbox <On-Premises Mailbox> -Verbose | fl

Exchange Online organizationがオンプレミスの Exchange organizationに正常に接続できることを確認するには、リモート PowerShell を使用してExchange Online organizationに接続し、次のコマンドを実行します。


Test-OAuthConnectivity -Service EWS -TargetUri <external hostname authority of your Exchange On-Premises deployment> -Mailbox <On-Premises Mailbox> -Verbose | fl

重要

"SMTP アドレスにメールボックスが関連付けられていない" というエラーは無視できます。 ResultTask パラメーターが Success の値を返すのが重要です。 たとえば、テスト出力の最後のセクションは次のようになります。


ResultType: Success

Identity: Microsoft.Exchange.Security.OAuth.ValidationResultNodeId

IsValid: True

ObjectState: New