使用管理工具管理 Exchange 混合环境中的收件人

如果维护本地 Exchange 服务器只是为了在 Exchange 混合环境中管理收件人,即使在将所有收件人移动到Exchange Online后,你也可能能够关闭最后一台 Exchange 服务器并使用 Windows PowerShell 管理收件人。

以前,即使将所有邮箱移动到Exchange Online,仍需要本地 Exchange 服务器来管理这些云收件人属性。 在本地 Active Directory中编辑了 Exchange 服务器上的收件人,其属性已使用目录同步复制到Microsoft Entra ID。 你仍然可以使用此方法管理收件人,即使他们都在云中。 关闭 Exchange 服务器是完全可选的。

注意

无法直接在Microsoft Entra ID 或Exchange Online中修改本地收件人,因此仍需要通过云同步或 Microsoft Entra Connect 工具进行本地 Exchange 服务器和目录同步。 有关详细信息,请参阅 为什么你可能不想从本地停用 Exchange 服务器

这个新方法对我起作用吗?

如果以下所有语句都为 true,则 Exchange 管理工具的更新版本可以消除运行本地 Exchange 服务器的需求:

  • 已将所有邮箱和公用文件夹迁移到Exchange Online (没有本地 Exchange 收件人) 。
  • 使用 AD 进行收件人管理和云同步,或使用 Microsoft Entra Connect 进行同步。
  • 不使用或不需要本地 Exchange 管理中心或 Exchange 基于角色的访问控制 (RBAC) 。
  • 你只对收件人管理使用Windows PowerShell感到满意。
  • 不需要审核或记录收件人管理活动。
  • 你只运行一个本地 Exchange 服务器,并且仅用于收件人管理。
  • 你想要在不运行任何 Exchange 服务器的情况下管理收件人。

使用 Exchange 2019 累积更新 12 或更高版本中的 Exchange 安装程序在任何已加入域的计算机上安装最新的管理工具, (客户端或服务器) 。 有关说明,请参阅 安装 Exchange 管理工具

警告

请勿 卸载最后一台服务器。 可以选择关闭服务器,并使用脚本进行清理,但请勿卸载。 卸载服务器会从 Active Directory 中删除关键信息,从而破坏管理工具包管理 Exchange 属性的能力。 在此处了解详细信息: 重要提示:注意

使用更新的 Exchange 管理工具,域管理员和收件人管理 EMT 组的成员 (通过下面的步骤 6 创建) 可以使用Windows PowerShell运行以下 cmdlet,而无需运行 Exchange 服务器:

  • Set-MailUser、Get-MailUser、New-MailUser、Remove-MailUser、Disable-MailUser 和 Enable-MailUser。
  • Set-MailContact、Get-MailContact、New-MailContact、Remove-MailContact、Disable-MailContact 和 Enable-MailContact。
  • Set-RemoteMailbox、Get-RemoteMailbox、New-RemoteMailbox、Remove-RemoteMailbox、Disable-RemoteMailbox 和 Enable-RemoteMailbox。
  • Set-DistributionGroup、Get-DistributionGroup、New-DistributionGroup、Remove-DistributionGroup、Disable-DistributionGroup 和 Enable-DistributionGroup (不包括 Upgrade-DistributionGroup) 。
  • Get-DistributionGroupMember、Add-DistributionGroupMember、Remove-DistributionGroupMember 和 Update-DistributionGroupMember。
  • Set-EmailAddressPolicy、Get-EmailAddressPolicy、New-EmailAddressPolicy、Remove-EmailAddressPolicy 和 Update-EmailAddressPolicy。
  • Set-User 和 Get-User。

注意

不能直接Microsoft Entra ID 或Exchange Online修改本地收件人。

验证管理工具是否可以在没有Exchange Server

如果环境包含一台仅用于云收件人管理的 Exchange 服务器,请使用本部分中的步骤测试管理工具更新。

准备 Exchange 环境

  1. 通过在 Exchange 命令行管理程序中运行以下命令,验证所有邮箱都位于云中:

    Set-AdServerSettings -ViewEntireForest $true
    Get-Mailbox
    

    注意

    默认情况下,内置管理邮箱不会通过云同步或Microsoft Entra Connect 同步到云。 在继续操作之前,应使用 Disable-Mailbox 禁用这些邮箱。

  2. 运行以下命令,验证Exchange Online租户共存域 (通常类似于“contoso.mail.onmicrosoft.com”) 配置为目标传递域:

    Get-RemoteDomain Hybrid* | Format-List DomainName,TargetDeliveryDomain
    

    如果未将共存域添加为远程域,则可以使用 New-RemoteDomain 添加它。 例如:

    New-RemoteDomain -Name 'Hybrid Domain - M365B434489.mail.onmicrosoft.com' -DomainName 'M365B434489.mail.onmicrosoft.com'
    

    如果未将其设置为目标传递域,可以使用 Set-RemoteDomain 对其进行设置。 例如:

    Set-RemoteDomain -TargetDeliveryDomain: $true -Identity 'Hybrid Domain - M365B434489.mail.onmicrosoft.com'
    

    注意

    如果已删除最后一台 Exchange 服务器或从未有过该服务器,可以通过 Exchange 管理单元访问 Set-RemoteDomain 和 New-RemoteDomain cmdlet。 在任何已加入域的计算机上安装上一个累积更新 2019 Exchange Server Exchange 管理工具,并在 Windows PowerShell 中运行以下命令:

    Add-PSSnapin Microsoft.Exchange.Management.PowerShell.SnapIn
    

    仅此特定情况支持这种手动启用 Exchange 管理单元的方法。

    在从未Exchange Server的环境中安装 Exchange 管理工具将创建新的 Exchange 组织,并将为 Exchange 准备 Active Directory。 如果你有大型 AD 部署,或者由单独的团队管理 AD,请使用以下步骤:为Exchange Server准备 Active Directory 和域来准备 AD。

  3. 使用 Exchange Server 2022 年 4 月累积更新安装程序安装 Exchange 管理工具角色。 更新的工具可以安装在 Exchange 2013 或更高版本 Exchange 组织中的任何已加入域的计算机上。

    注意

    在仅具有 Exchange 2013 和/或 Exchange 2016 的环境中安装更新的 Exchange 管理工具会将 Exchange 组织升级到 Exchange Server 2019,并且将执行 AD 架构更新。 如果你有大型 AD 部署,或者由单独的团队管理 AD,请使用以下步骤:为Exchange Server准备 Active Directory 和域来执行架构更新。

  4. 使用本文中的步骤安装 Windows 远程服务器管理工具: 安装、卸载和关闭/打开 RSAT 工具

  5. 如果已启用脚本代理,请将 ScriptingAgentConfig.xmlExchange Server 上的 $env:ExchangeInstallPath\Bin\CmdletExtensionAgents 复制到安装了 Management Tools 更新的计算机上的 $env:ExchangeInstallPath\Bin\CmdletExtensionAgents 文件夹。

  6. 运行提供的脚本以创建收件人管理 EMT 安全组,该安全组授予没有域管理员权限的用户管理收件人。

    1. 使用“管理工具”更新为“域”管理员并打开Windows PowerShell登录到计算机。

    2. 通过运行以下命令加载收件人管理单元:

      Add-PSSnapin *RecipientManagement
      
    3. 从 $env:ExchangeInstallPath\Scripts 文件夹运行 Add-PermissionForEMT.ps1。 该脚本创建名为“收件人管理 EMT”的安全组。 此组的成员具有收件人管理权限。 需要执行收件人管理的所有没有域管理员权限的管理员都应添加到此安全组。

  7. 使用管理工具更新登录到计算机, (域管理员或收件人管理 EMT) 成员的适当权限登录计算机,并通过运行以下命令加载收件人管理管理单元:

    Add-PSSnapin *RecipientManagement
    

    每次管理收件人时,都需要执行此步骤。

  8. 测试所有收件人管理 cmdlet,并验证是否看到预期结果。

注意

与使用 New-PSSession运行时相比,通过 Powershell Snapin 访问 Cmdlet 时,输出RecipientManagement数据类型将有所不同。 这是意料之中的,应相应地修改依赖于 cmdlet 数据类型的任何脚本。

例如, (Get-Mailbox User).EmailAddresses.GetType() 使用 RecipientManagement SnapIn 时将生成数据类型为 ProxyAddressCollection,其中,在 PSSession 中运行时,作为同一 cmdlet 的数据类型将生成为 ArrayList

  1. 关闭最后一台 Exchange 服务器,并验证所有收件人管理 cmdlet 是否仍按预期工作。

永久关闭最后一个Exchange Server

如果打算永久关闭最后一个Exchange Server,建议使用以下步骤来清理和改进环境的安全状况。

重要

如果将上一个 Exchange 服务器用于收件人管理 (exmaple 以外的任何目的,SMTP 中继) ,请不要将其关闭。

  1. 打开最后一台 Exchange 服务器。

  2. 在混合部署中取消本地 Exchange 服务器的方式和时间中,执行方案 2 的步骤 1 到 8 清理混合配置。

  3. 通过在 Exchange 命令行管理程序中运行以下命令来删除联合身份验证信任:

    Remove-FederationTrust "Microsoft Federation Gateway"
    
  4. 删除联合证书:若要查找证书指纹,请运行:

    $fedThumbprint = (Get-ExchangeCertificate | ?{$_.Subject -eq "CN=Federation"}).Thumbprint
    

    若要删除证书指纹,请运行:

    Remove-ExchangeCertificate -Thumbprint $fedThumbprint
    
  5. 删除为 OAuth 创建的服务主体凭据。 为此,需要确定哪个 KeyId 与 OAuth 证书的密钥值匹配。 若要查找匹配的 KeyId,请执行以下步骤:

    1. 在 Exchange 命令行管理程序中运行以下命令以获取 OAuth credValue:

      $thumbprint = (Get-AuthConfig).CurrentCertificateThumbprint
      $oAuthCert = (dir Cert:\LocalMachine\My) | where {$_.Thumbprint -match $thumbprint}
      $certType = [System.Security.Cryptography.X509Certificates.X509ContentType]::Cert
      $certBytes = $oAuthCert.Export($certType)
      $credValue = [System.Convert]::ToBase64String($certBytes)
      
      
    2. 找到与上面找到$credValue相同的 KeyId,使用 Microsoft Graph PowerShell 以租户管理员身份运行以下命令。

      Import-Module Microsoft.Graph.Applications
      Connect-MgGraph -Scopes "Application.Read.All"
      $ServiceName = "00000002-0000-0ff1-ce00-000000000000"
      $p = Get-MgServicePrincipalByAppId -AppId $ServiceName
      $keyId = (Get-MgServicePrincipal -ServicePrincipalId $p.Id).KeyCredentials $true | ?{$_.Value -eq $credValue}).KeyId
      

      这将提供其值与上面找到的$credValue匹配的键的 KeyId。

    3. 若要删除服务主体凭据,请运行以下命令:

      Import-Module Microsoft.Graph.Applications
      $params = @{
      KeyId = $keyId
      }
      Remove-MgServicePrincipalKey -ServicePrincipalId $p.Id -BodyParameter $params
      
  6. 卸载混合代理。 如果环境具有新式混合配置,请按照以下步骤将其删除。

    1. 在安装了混合代理的计算机中,打开 Exchange 命令行管理程序并将目录更改为脚本 C:\Program Files\Microsoft 混合服务\HybridManagement.psm1 的位置,然后导入混合代理 PowerShell 模块。

      Import-Module .\HybridManagement.psm1
      
    2. 若要删除应用,需要 AppId。 Exchange Online PowerShell 中使用以下任一 cmdlet 查找 AppId。

      Get-OrganizationRelationship ((Get-OnPremisesOrganization).OrganizationRelationship) | Select-Object TargetSharingEpr
      

      输出如下所示:

      TargetSharingEpr
      ----------------
      https://6ca7c832-49a2-4a5d-aeae-a616f6d4b8e7.resource.mailboxmigration.his.msappproxy.net/EWS/Exchange.asmx
      ----------------
      https://6ca7c832-49a2-4a5d-aeae-a616f6d4b8e7.resource.mailboxmigration.his.msappproxy.net/EWS/Exchange.asmx
      

      或者运行:

      Get-MigrationEndpoint "Hybrid Migration Endpoint - EWS (Default Web Site)" | Select-Object RemoteServer
      

      输出如下所示:

      RemoteServer
      ------------
      6ca7c832-49a2-4a5d-aeae-a616f6d4b8e7.resource.mailboxmigration.his.msappproxy.net
      

      在此示例中,6ca7c832-49a2-4a5d-aeae-a616f6d4b8e7 是下一步要使用的 AppId。

    3. 通过运行以下操作删除应用:

      Remove-HybridApplication -appId 6ca7c832-49a2-4a5d-aeae-a616f6d4b8e7 -Credential (Get-Credential)
      

      注意

      仅此示例的 AppId 为 6ca7c832-49a2-4a5d-aeae-a616f6d4b8e7;你的值将有所不同。

    4. 使用以下步骤卸载混合代理: 卸载混合代理

  7. 如果尚未将 MX 和自动发现 DNS 记录指向Exchange Online。 此步骤对于确保邮件流不受影响非常重要。 有关详细信息,请参阅Office 365的外部域名系统记录

  8. 关闭最后一台 Exchange 服务器。

Active Directory 清理

如果计划不再运行本地 Exchange 服务器,建议通过删除不必要的 Exchange 对象来清理 Active Directory。

警告

无法撤消此步骤。 仅当不想再次运行Exchange Server时,才继续。

可以通过运行随管理工具一起提供的 CleanupActiveDirectoryEMT 脚本来完成 AD 清理。 该脚本删除系统邮箱、不必要的 Exchange 容器、域和配置分区上的 Exchange 安全组权限以及 Exchange 安全组。 需要使用域管理员凭据运行此脚本。

此脚本在以下位置提供: $env:ExchangeInstallPath\Scripts\CleanupActiveDirectoryEMT.ps1

重要提示:请注意

警告

关闭最后一台 Exchange 服务器后,Exchange RBAC 将不再正常运行。 属于 Exchange 收件人组或具有允许收件人管理的自定义 Exchange 角色的用户将不再具有权限。 只有域 Add-PermissionForEMT.ps1 管理员和使用脚本分配了权限的用户才能执行收件人管理。

关闭最后一台 Exchange 服务器并执行前面所述的 Exchange 混合和 Active Directory 清理步骤后,应 擦除并重新格式化最后一台 Exchange 服务器请勿卸载Exchange Server

将仅Exchange Server管理工具的角色 (更新为更新的累积更新或安全更新Exchange Server)

你已按照本文中的步骤删除最后一个Exchange Server并且仅使用管理工具角色来管理混合对象。

将管理工具升级到较新的累积更新 (CU)

在此类环境中,如果将“仅管理工具”角色服务器升级到较新的 CU,则可能会失败并出现以下错误:

将管理工具升级到较新的累积更新的屏幕截图。

必须先使用“Setup /PrepareAD”准备 Active Directory,然后才能将Exchange Server管理工具更新为较新的 CU。

若要将管理工具更新为较新的 CU,请执行以下步骤:

  1. 使用以下命令执行 PrepareAD:

    .\Setup.EXE /PrepareAD /IAcceptExchangeServerLicenseTerms_DiagnosticDataON

  2. 使用以下命令升级“仅限管理工具”角色:

    .\Setup.EXE /m:Upgrade /IAcceptExchangeServerLicenseTerms_DiagnosticDataON

  3. 如果之前已根据使用管理工具管理 Exchange 混合环境中的收件人在环境中执行,.\CleanupActiveDirectoryEMT.ps1请再次运行.\CleanupActiveDirectoryEMT.ps1脚本 (,因为 /PrepareAD 会重新创建删除) 的某些对象CleanupActiveDirectoryEMT.ps1

警告

请确保仅在已遵循使用管理工具管理 Exchange 混合环境中的收件人的环境中运行CleanupActiveDirectoryEMT.ps1脚本,并且脚本在 (之前已运行,并且没有运行 Exchange Server) 。 此操作无法撤消。

将管理工具升级到较新的安全更新 (SU)

下载安全更新包并运行它以将管理工具角色更新到较新的 SU。