共用方式為


設定 OWA for Devices 的發送通知代理

適用於:Exchange Server 2013

針對適用於裝置的 OWA 啟用推播通知 (適用於 iPhone 的 OWA,以及針對 Microsoft Exchange 2013 內部部署啟用 OWA for iPad) ,可讓使用者在其適用於 iPhone 的 OWA 和 iPad 的 OWA 上接收 Outlook Web App 圖示上的更新,指出使用者收件匣中未顯示的訊息數目。 如果未設定並啟用推播通知,則具有 裝置的 OWA 的使用者在未啟動該應用程式的情況下,便無法得知收件匣中有未讀郵件。 有新的郵件送達時,使用者裝置上的 裝置的 OWA 徽章會更新,看起來就像下列徽章。

裝置用 OWA 徽章。

如何啟用推播通知?

若要啟用推播通知,內部部署 Exchange 2013 伺服器必須連線到 Microsoft 365 或 Office 365 推播通知服務,才能將推播通知傳送至 iPhone 和 iPad。 Exchange 2013 內部部署伺服器會透過 Microsoft 365 或 Office 365 通知服務路由傳送其更新通知,以移除使用第三方推播通知服務註冊開發人員帳戶的需求。 下圖顯示 iPhone 和 iPad 使用者如何取得未讀郵件之徽章更新的程序。

推播通知的程式。

若要啟用推播通知,系統管理員必須:

  1. 在 Microsoft 365 或 Office 365 註冊您的組織。

  2. 將所有內部部署伺服器更新為 Exchange Server 2013 累計更新 3 (CU3) 或更新版本。

  3. 將內部部署 Exchange 2013 設定為 Microsoft 365 或 Office 365 驗證。

  4. 啟用從內部部署 Exchange Server 2013 到 Microsoft 365 或 Office 365 的推播通知,並確認推播通知正常運作。

在 Microsoft 365 或 Office 365 註冊您的組織

Microsoft 365 和 Office 365 是雲端式服務,其設計目的是要協助滿足貴組織對於強固安全性、可靠性和用戶生產力的需求。 各種可用的訂用帳戶方案包括 Office 應用程式的存取權,以及透過因特網 (雲端服務) 啟用的其他生產力服務,例如 Lync Web 會議和 Exchange Online 裝載的商務用電子郵件。

許多 Microsoft 365 和 Office 365 方案也包含最新 Office 應用程式的桌面版本,使用者可以跨多部電腦和裝置安裝。 所有 Microsoft 365 和 Office 365 方案都是以訂閱為基礎、每月或每年支付。 若要深入瞭解或註冊貴組織的 Office 365,請參閱什麼是商務用 Microsoft 365?。 如需透過 Microsoft 365 和 Office 365 所提供之每個服務的詳細資訊,請參閱 Microsoft 365 和 Office 365 服務描述。

更新為 CU3 或更新版本

Exchange Server 2013 的累計更新 3 (CU3) 可解決 Exchange Server 2013 自發行 RTM 版之後所發現的問題。 此更新包含 CU1 和 CU2 中的所有問題和修正,以及 CU2 發行後的其他修正和更新。 強烈建議所有 Exchange Server 2013 內部部署客戶採用此更新,且需要有此更新才能使用推播通知。 若要了解累計更新 (包括 CU3),請參閱 更新 Exchange 2013

將內部部署 Exchange 2013 設定為 Microsoft 365 或 Office 365 驗證

伺服器對伺服器驗證的單一標準化方法是 Exchange Server 2013 所使用的方法。 Exchange Server 2013 (和 Lync Server 2013SharePoint 2013) 和 Office 2013 支援適用於伺服器對伺服器驗證和授權的 OAuth (Open Authorization) 通訊協定。 使用 OAuth,許多主要網站使用的標準授權通訊協定,使用者認證和密碼不會從一部計算機傳遞至另一部電腦。 相反地,驗證和授權是以 OAuth 安全性令牌為基礎;這些令牌會在一段特定時間內授與特定資源集的存取權。

OAuth 驗證通常與三個元件有關:一個授權伺服器以及兩個需要彼此通訊的領域。 安全性權杖是由授權伺服器 (也稱為安全性權杖伺服器) 發行給兩個需要通訊的領域;這些權杖會確認源自其中一個領域的通訊應受到另一個領域的信任。 例如,授權伺服器發行的權杖可確認來自特定 Lync Server 2013 領域的使用者能夠存取指定的 Exchange 2013 領域 (反之亦然)。

提示

領域是安全性容器。

不過,對於內部部署伺服器對伺服器驗證,不需要使用第三方令牌伺服器。 各項伺服器產品 (如 Lync Server 2013 和 Exchange 2013) 都有內建的權杖伺服器,可用於驗證其他支援伺服器對伺服器驗證的 Microsoft 伺服器 (如 SharePoint Server)。 例如,Lync Server 2013 可以自行發行並簽署安全性權杖,然後使用該權杖來與 Exchange 2013 通訊。 在這類情況下,不需要第三方令牌伺服器。

若要設定伺服器對伺服器驗證,讓內部部署實作 Exchange Server 2013 至 Microsoft 365 或 Office 365,您必須完成兩個步驟:

  • 步驟 1 - 將憑證指派給內部部署 Exchange Server 的內建令牌簽發者:首先,如果之前未建立憑證,內部部署 Exchange 系統管理員必須使用下列 Exchange 管理命令介面腳本來建立憑證,並將它指派給內部部署 Exchange Server 的內建令牌簽發者。 此程式是一次性程式;建立憑證之後,該憑證應該重複用於其他驗證案例,而不是被取代。 請務必將 $tenantDomain 的值更新為網域的名稱。 若要這麼做,請複製並貼上下列程式碼。

    注意:將程式代碼複製並貼到記事本之類的文本編輯器中,並使用 .ps1 擴充功能儲存它,可讓您更輕鬆地執行Shell腳本。

    # Make sure to update the following $tenantDomain with your Microsoft 365 or Office 365 organization domain.
    
    $tenantDomain = "Fabrikam.com"
    
    # Check whether the cert returned from Get-AuthConfig is valid and keysize must be >= 2048
    
    $c = Get-ExchangeCertificate | ?{$_.CertificateDomains -eq $env:USERDNSDOMAIN -and $_.Services -ge "SMTP" -and $_.PublicKeySize -ge 2048 -and $_.FriendlyName -match "OAuth"}
    If ($c.Count -eq 0)
    {
        Write-Host "Creating certificate for oAuth..."
        $ski = [System.Guid]::NewGuid().ToString("N")
        $friendlyName = "Exchange S2S OAuth"
        New-ExchangeCertificate -FriendlyName $friendlyName -DomainName $env:USERDNSDOMAIN -Services Federation -KeySize 2048 -PrivateKeyExportable $true -SubjectKeyIdentifier $ski
        $c = Get-ExchangeCertificate | ?{$_.friendlyname -eq $friendlyName}
    }
    ElseIf ($c.Count -gt 1)
    {
        $c = $c[0]
    }
    
    $a = $c | ?{$_.Thumbprint -eq (get-authconfig).CurrentCertificateThumbprint}
    If ($a.Count -eq 0)
    {
        Set-AuthConfig -CertificateThumbprint $c.Thumbprint
    }
    Write-Host "Configured Certificate Thumbprint is:"(get-authconfig).CurrentCertificateThumbprint
    
    # Export the certificate
    
    Write-Host "Exporting certificate..."
    if((test-path $env:SYSTEMDRIVE\OAuthConfig) -eq $false)
    {
        md $env:SYSTEMDRIVE\OAuthConfig
    }
    cd $env:SYSTEMDRIVE\OAuthConfig
    
    $oAuthCert = (dir Cert:\LocalMachine\My) | where {$_.FriendlyName -match "OAuth"}
    $certType = [System.Security.Cryptography.X509Certificates.X509ContentType]::Cert
    $certBytes = $oAuthCert.Export($certType)
    $CertFile = "$env:SYSTEMDRIVE\OAuthConfig\OAuthCert.cer"
    [System.IO.File]::WriteAllBytes($CertFile, $certBytes)
    
    # Set AuthServer
    $authServer = Get-AuthServer MicrosoftSts;
    if ($authServer.Length -eq 0)
    {
        Write-Host "Creating AuthServer Config..."
        New-AuthServer MicrosoftSts -AuthMetadataUrl https://accounts.accesscontrol.windows.net/metadata/json/1/?realm=$tenantDomain
    }
    elseif ($authServer.AuthMetadataUrl -ne "https://accounts.accesscontrol.windows.net/metadata/json/1/?realm=$tenantDomain")
    {
        Write-Warning "AuthServer config already exists but the AuthMetdataUrl doesn't match the appropriate value. Updating..."
        Set-AuthServer MicrosoftSts -AuthMetadataUrl https://accounts.accesscontrol.windows.net/metadata/json/1/?realm=$tenantDomain
    }
    else
    {
        Write-Host "AuthServer Config already exists."
    }
    Write-Host "Complete."
    

    結果應該類似下列輸出:

設定的憑證指紋為:7595DBDEA83DACB5757441D44899BCDB9911253C
匯出憑證...
完成。

注意事項

繼續之前,需要適用於 Windows PowerShell Cmdlet 的 Azure Active Directory 模組。 如果先前稱為適用於 Windows PowerShell) 的 Microsoft Online Services 模組 (的適用於 Windows PowerShell Cmdlet 的 Azure Active Directory 模組尚未安裝,您可以使用 Windows PowerShell 從管理 Microsoft Entra ID 安裝它。

  • 步驟 2 - 設定 Microsoft 365 或 Office 365 與 Exchange 2013 內部部署通訊:設定與 Exchange Server 2013 通訊的 Microsoft 365 或 Office 365 伺服器成為合作夥伴應用程式。 例如,如果 Exchange Server 2013 內部部署需要與 Microsoft 365 或 Office 365 通訊,您必須將 Exchange 內部部署設定為合作夥伴應用程式。 合作夥伴應用程式就是 Exchange 2013 可以與其直接交換安全性權杖,而不必經過協力廠商安全性權杖伺服器的應用程式。 內部部署 Exchange 2013 系統管理員必須使用下列 Exchange 管理命令介面腳本來設定 Microsoft 365 或 Office 365 組織,讓 Exchange 2013 與 之通訊成為合作夥伴應用程式。 在執行期間,提示輸入 Microsoft 365 或 Office 365 組織網域 (的系統管理員使用者名稱和密碼, administrator@fabrikam.com 例如,) 。 如果不是從先前的腳本建立,請務必將 $CertFile 的值更新為憑證的位置。 若要這麼做,請複製並貼上下列程式碼。

    # Make sure to update the following $CertFile with the path to the cert if not using the previous script.
    
    $CertFile = "$env:SYSTEMDRIVE\OAuthConfig\OAuthCert.cer"
    
    If (Test-Path $CertFile)
    {
        $ServiceName = "00000002-0000-0ff1-ce00-000000000000";
    
        $objFSO = New-Object -ComObject Scripting.FileSystemObject;
        $CertFile = $objFSO.GetAbsolutePathName($CertFile);
    
        $cer = [System.Security.Cryptography.X509Certificates.X509Certificate2]::new($CertFile)
        $binCert = $cer.GetRawCertData();
        $credValue = [System.Convert]::ToBase64String($binCert);
    
        Write-Host "Please enter the administrator username and password of the Microsoft 365 or Office 365 organization domain..."
    
        Write-Host "Adding a key to Service Principal..."
    
        $p = Get-MgServicePrincipal -Filter "AppId eq '$ServiceName'"
        $params = @{
          keyCredential = @{
              type = "AsymmetricX509Cert"
              usage = "Verify"
              key = $credValue
              endDateTime = $cer.GetExpirationDateString()
              startDateTime = $cer.GetEffectiveDateString()
          }
        }
    
        Add-MgServicePrincipalKey -ServicePrincipalId $p.Id -BodyParameter $params
    
    }
    Else
    {
        Write-Error "Cannot find certificate."
    }
    

    結果應該類似下列輸出:

    請輸入 Microsoft 365 或 Office 365 組織網域的系統管理員使用者名稱和密碼...
    將金鑰新增至服務主體...
    完成。

啟用推播通知代理

遵循上述步驟成功設定 OAuth 驗證之後,內部部署系統管理員必須使用下列腳本來啟用推播通知 Proxy。 請務必將 $tenantDomain 的值更新為網域的名稱。 若要這麼做,請複製並貼上下列程式碼。

$tenantDomain = "Fabrikam.com"
Enable-PushNotificationProxy -Organization:$tenantDomain

預期的結果應該類似下列輸出:

RunspaceId        : 4f2eb5cc-b696-482f-92bb-5b254cd19d60
DisplayName       : On Premises Proxy app
Enabled           : True
Organization      : fabrikam.com
Uri               : https://outlook.office365.com/PushNotifications
Identity          : OnPrem-Proxy
IsValid           : True
ExchangeVersion   : 0.20 (15.0.0.0)
Name              : OnPrem-Proxy
DistinguishedName : CN=OnPrem-Proxy,CN=Push Notifications Settings,CN=First Organization,CN=Microsoft
                    Exchange,CN=Services,CN=Configuration,DC=Domain,DC=extest,DC=microsoft,DC=com
Guid              : 8b567958-58a4-403c-a8f0-524d7f1e9279
ObjectCategory    : fabrikam.com/Configuration/Schema/ms-Exch-Push-Notifications-App
ObjectClass       : {top, msExchPushNotificationsApp}
WhenChanged       : 8/27/2013 7:23:47 PM
WhenCreated       : 8/14/2013 1:30:27 PM
WhenChangedUTC    : 8/28/2013 2:23:47 AM
WhenCreatedUTC    : 8/14/2013 8:30:27 PM
OrganizationId    :
OriginatingServer : server.fabrikam.com
ObjectState       : Unchanged

確認推播通知可以運作

完成上述步驟之後,推播通知會由下列其中一項進行測試:

  • 將測試電子郵件傳送到使用者的信箱:

    1. 在行動裝置上於「裝置的 OWA」中設定帳戶,以便訂閱通知。

    2. 返回裝置主畫面,將「裝置的 OWA」退到背景中。

    3. 從其他裝置 (如電腦) 傳送電子郵件,使其送至在行動裝置上設定之帳戶的收件匣。

    4. 如此一來,應用程式圖示應該就會在幾分鐘內顯示未讀郵件計數。

  • 啟用監視。 測試推播通知或調查通知失敗原因的替代方法,是在組織的信箱伺服器上啟用監視。 內部部署 Exchange 2013 伺服器管理員必須使用下列腳本來叫用推播通知 Proxy 監視。 若要這麼做,請複製並貼上下列程式碼。

    # Send a push notification to verify connectivity.
    
    $s = Get-ExchangeServer | ?{$_.ServerRole -match "Mailbox"}
    If ($s.Count -gt 1)
    {
        $s = $s[0]
    }
    If ($s.Count -ne 0)
    {
        # Restart the monitoring service to clear the cache from when push was previously disabled.
        Restart-Service MSExchangeHM
    
        # Give the monitoring service enough time to load.
        Start-Sleep -Seconds:120
    
        Invoke-MonitoringProbe PushNotifications.Proxy\PushNotificationsEnterpriseConnectivityProbe -Server:$s.Fqdn | fl ResultType, Error, Exception
    }
    Else
    {
        Write-Error "Cannot find a Mailbox server in the current site."
    }
    

    預期的結果應該類似下列輸出:

    ResultType:Succeeded
    錯誤:
    例外: