从本地发送到 Exchange Online 的电子邮件在运行 HCW 后似乎是外部的

原始 KB 数: 4052493

现象

假设出现了下面这种情景:

  • 针对包含边缘服务器的 Exchange Server 2016 或 Exchange Server 2013 环境运行混合配置向导。
  • 用户将本地 Exchange 的电子邮件发送到其他用户的 Exchange Online 帐户。 这两个用户都在你的组织中。

在此方案中,你会注意到接收器端的以下问题:

  • 该消息显示为外部消息。
  • 发件人不会解析为全局地址列表中的收件人(GAL)。

出现问题时出现其他症状:

  • 发送连接器上有一个 出站到 Office 365 TLSCertificateName 属性,用于将消息发送到 Microsoft 365。 出现问题时,属性值不会复制到边缘服务器。

  • 从邮箱服务器运行 start-edgesynchronization 命令时,输出将 配置 类型 显示为“不完整”。 下面是一个示例摘录:

    RunspaceId: RunspaceId
    Result: Incomplete
    Type: Configuration
    Name: userwap
    
  • 以下错误记录在位于该文件夹中的 EdgeSync 日志中 <ExchangeInstallation>\TransportRoles\Logs\EdgeSync

    Date/Time.082Z,c76158dc155c4e2eab69305612c58890,689,EdgeServerName.contoso.com,50636,SyncEngine,Low,请求中的 A 值无效。 [ExDirectoryException];内部异常:请求中的值无效。 [DirectoryOperationException],“未能将条目 CN=Outbound to Office 365,CN=Connections,CN=Exchange 路由组(DWBGZMFD01QNBJR),CN=路由组,CN=Exchange 管理组(FYDIBOHF23SPDLT),CN=管理组,CN=ExchangeOrgName,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=domain,DC=com”,,,

    若要启用 EdgeSync 日志,请运行以下命令:

    Get-EdgeSyncServiceConfig | Set-EdgeSyncServiceConfig -LogLevel high -LogEnabled $true
    

原因

出现此问题的原因如下:

  • 对于存储在边缘服务器上的 ADAM 架构中的 ms-Exch-Smtp-TLS-Certificate 属性,上限设置为 256

  • 第三方证书中以下字符串的长度超过 256 个字符:

    <I>颁发者<S>使用者名称

    若要确定字符串的长度,请运行以下命令:

    ("<I>$((Get-SendConnector 'outbound to Office 365').tlscertificatename.certificateissuer)<S>$((Get-SendConnector 'outbound to Office 365').tlscertificatename.certificatesubject)").length
    

若要解决此问题,请使用以下任一方法。

解决方法 1:将边缘服务器上的上限增加到 1024

  1. 使用“以管理员身份运行”选项打开 Windows PowerShell 窗口。

  2. 运行以下命令安装远程服务器管理工具包:

    Add-WindowsFeature RSAT-ADDS
    
  3. 运行以下命令导入 Active Directory 模块:

    Import-Module ActiveDirectory
    
  4. 运行以下命令验证属性 TLSCertificateName 的上限值:

    Get-ADObject -Filter {name -eq "ms-Exch-Smtp-TLS-Certificate"} -SearchBase ((get-ADRootDSE -Server localhost:50389).schemaNamingContext) -Server localhost:50389 -Properties * | Select-Object rangeupper
    
  5. 运行以下命令设置 1024 上限:

    Get-ADObject -Filter {name -eq "ms-Exch-Smtp-TLS-Certificate"} -SearchBase ((get-ADRootDSE -Server localhost:50389).schemaNamingContext) -Server localhost:50389 -Properties * | Set-ADObject -Replace @{rangeupper=1024}
    
  6. 在 HUB 传输或邮箱服务器上运行以下命令,将更改同步到边缘服务器:

    start-EdgeSynchronization
    

解决方法 2:配置发送连接器使用 FQDN

将发送连接器配置为 不使用 TLSCertificateName 属性来指定要在 TLS 协商期间使用的证书。 请改用 FQDN 根据选择出站匿名 TLS 证书中所述 的证书选择过程选择适当的第三方证书

若要配置发送连接器以使用 FQDN,请执行以下步骤:

  1. 确保将设置为 FQDN 的域名设置为第三方证书的使用者名称或使用者可选名称。

  2. 通过运行以下命令,将发送连接器设置为使用 FQDN。 此命令还会清除 TLSCertificateName 属性。

    Set-SendConnector "outbound to Office 365" -Fqdn "Domain Note in step 1 of option 2" -TlsCertificateName:$null
    
  3. 在 HUB 传输或邮箱服务器上运行以下命令,将更改同步到边缘服务器:

    start-EdgeSynchronization
    

解决方法 3:使用不会导致超出上限的证书

使用不会导致超出上限的证书。 为此,请按照下列步骤进行操作:

  1. 创建证书中的以下字符串小于 256 个字符的证书:

    <I>Issuer<S>SubjectName

  2. 导入证书。

  3. 将证书与相应的服务相关联。

  4. 再次运行混合配置向导以使用新证书。