目标邮箱在邮箱迁移中没有匹配的 smtp 代理

问题

假设你在 Microsoft 365 中具有本地Microsoft Exchange Server 和 Exchange Online 的混合部署。 尝试将邮箱从本地环境移动到 Exchange Online 时,会收到以下错误消息:

目标邮箱没有与“domain.mail.onmicrosoft.com>”<匹配的 smtp 代理

原因

如果满足以下条件之一,则可能会出现此问题:

  • 源邮箱未标记为具有 <domain.mail.onmicrosoft.com> smtp 地址。
  • 代理地址 <domain.mail.onmicrosoft.com> 不会同步到相应云邮件用户对象的 Microsoft 365。

解决方案

若要查找问题原因并确定从哪个邮箱 <中缺少 domain.mail.onmicrosoft.com> 电子邮件地址,请在 Exchange 命令行管理程序和 Exchange Online PowerShell 中运行以下命令:

方案 1: <本地源邮箱中缺少 domain.mail.onmicrosoft.com> 电子邮件地址 (Exchange 命令行管理程序)

若要解决此问题,请将 <domain.mail.onmicrosoft.com> 电子邮件地址添加到本地源邮箱。

如果本地邮箱 (应用了电子邮件地址策略,即 EmailAddressPolicyEnabled 参数值为 True ,或者为 Exchange 管理中心或 Exchange 管理控制台) 中的用户选中了“ 基于应用于此收件人的电子邮件地址策略自动更新电子邮件地址 ”复选框,这意味着电子邮件地址策略不包含辅助 SMTP <域>电子邮件地址策略模板中的 .mail.onmicrosoft.com 域。 可以通过在 Exchange 命令行管理程序中运行以下命令来仔细检查此策略:

Get-EmailAddressPolicy | FL Identity, EnabledEmailAddressTemplates  

在这种情况下,请将 domain.mail.onmicrosoft.com> 添加到<电子邮件地址策略。 为此,请按照下列步骤操作:

  1. 在本地 Exchange 服务器上打开 Exchange 管理中心。

  2. 单击“ 邮件流”,然后单击“ 电子邮件地址策略”。

  3. 选择要更改的电子邮件地址策略,然后单击“ 编辑”。

  4. 电子邮件地址格式中,将域 (<domain.mail.onmicrosoft.com) >添加到策略中,单击“ 保存”,然后单击“ 应用到 ”,将更改应用于收件人。

  5. 现在,运行以下命令时, <应会看到 domain.mail.onmicrosoft.com> SMTP 地址已标记在本地邮箱上:

    Get-Mailbox <AffectedUser> | FL EmailAddresses, EmailAddressPolicyEnabled
    
  6. 等待目录同步运行。 或者,强制增量目录同步。 有关如何执行此操作的详细信息,请参阅 启动计划程序

如果本地邮箱没有应用电子邮件地址策略 (即,则 EmailAddressPolicyEnabled 参数值为 False 或未为 Exchange 管理中心或 Exchange 管理控制台) 的用户选中“ 基于应用于此收件人的电子邮件地址策略自动更新电子邮件地址 ”复选框,或者出于任何原因, 电子邮件地址策略不会在收件人上标记或应用 user@domain.mail.onmicrosoft.com smtp 地址,你必须手动在用户上添加 <domain.mail.onmicrosoft.com> 电子邮件地址,然后将更改同步到 Microsoft Entra ID。 为此,请按照下列步骤操作:

  1. 在本地 Exchange 服务器上打开 Exchange 管理中心。

  2. 依次单击“收件人”和“邮箱”

  3. 选择并双击要更改的本地邮箱。

  4. “电子邮件地址”中,单击“添加”图标 () 将电子邮件地址添加到 user@domain.mail.onmicrosoft.com 用户的电子邮件地址。

  5. 单击 “确定”,然后单击“ 保存”。

  6. 运行以下命令时, <现在应会看到在本地邮箱上标记了 domain.mail.onmicrosoft.com>:

    Get-Mailbox <AffectedUser> | FL EmailAddresses
    
  7. 等待目录同步运行。 或者,强制增量目录同步。 有关如何执行此操作的详细信息,请参阅 启动计划程序

方案 2: <域>.mail.onmicrosoft.com 电子邮件地址在本地源邮箱上标记,但云邮件用户对象 (Exchange Online PowerShell)

在这种情况下,你可能有同步问题。 确定目录同步是否有效,以及是否有Microsoft Entra Connect 工具或 Microsoft 365 管理中心报告的任何同步错误。 有关如何执行此操作的详细信息,请参阅 在 Microsoft 365 中查看目录同步错误

如果已有标记电子邮件地址的云用户对象 user@domain.mail.onmicrosoft.com ,则也可能有用户验证错误。

若要查看此错误,必须连接到 Microsoft 365 PowerShell ,然后运行以下命令之一,具体取决于是连接到 MSOnline (MSOL) 服务,还是Microsoft Windows PowerShell 的 Entra ID:

(Get-MsolUser -UserPrincipalName <AffectedUserUPN>).Errors.ErrorDetail.ObjectErrors.ErrorRecord.ErrorDescription
(Get-AzureADUser -ObjectId <AffectedUserUPN>).Errors.ErrorDetail.ObjectErrors.ErrorRecord.ErrorDescription

注意

自 2024 年 3 月 30 日起,Azure AD 和 MSOnline PowerShell 模块已弃用。 若要了解详细信息,请阅读 弃用更新。 在此日期之后,对这些模块的支持仅限于Microsoft Graph PowerShell SDK 和安全修补程序的迁移帮助。 弃用的模块将继续运行到 2025 年 3 月 30 日。

建议迁移到 Microsoft Graph PowerShell ,以Microsoft Entra ID (以前的 Azure AD) 进行交互。 有关常见的迁移问题,请参阅 迁移常见问题解答注意: MSOnline 1.0.x 版可能会在 2024 年 6 月 30 日之后遇到中断。

有关详细信息,请参阅在 Microsoft 365 门户或适用于 Windows PowerShell 的 Azure Active Directory 模块中看到用户的验证错误

然后,在 Microsoft 365 PowerShell 中,检查 Microsoft Entra ID 中的代理地址是否包含电子邮件地址 user@domain.mail.onmicrosoft.com。 为此,请运行以下命令之一:

(Get-MsolUser -UserPrincipalName <AffectedUserUPN>).ProxyAddresses
(Get-AzureADUser -ObjectId <AffectedUserUPN>).ProxyAddresses

如果在 user@domain.mail.onmicrosoft.com 命令结果中找到用户的 smtp 地址,但使用 Get-MailUser 命令在 Exchange Online PowerShell 中仍然没有此电子邮件地址,这意味着目录同步工具已成功将地址引入Microsoft Entra ID,并且你可能在 Microsoft Entra ID 和 Exchange Online 之间出现同步问题。

另一个原因可能是在本地用户上标记的 domain.mail.onmicrosoft.com smtp 域不正确。 例如,Microsoft 365 租户或 Exchange Online 接受的域中不存在域。 有关接受域的详细信息,请参阅 查看接受域

如果无法确定问题原因,请向Microsoft支持团队提出支持案例,以进一步调查。

更多信息

有关电子邮件地址策略和 Exchange 混合部署的详细信息,请参阅云的“电子邮件地址策略”部分, 了解你的条款 (第一部分) :部署混合 博客文章。

有关如何编辑电子邮件地址策略的详细信息,请参阅 编辑电子邮件地址策略

有关混合配置向导添加的共存域的详细信息,请参阅 混合配置向导中的“域”条目。

仍然需要帮助? 转到 Microsoft 社区Exchange TechNet 论坛