在 Exchange Server 中通过 POP/IMAP 访问共享邮箱时出现“NoPrimarySmtpAddress”错误

症状

请考虑以下情况:

  • 你运行的是Microsoft Exchange Server 2019、Exchange Server 2016 或 2013 Exchange Server。
  • 为 POP/IMAP 访问配置了Exchange Server。
  • Exchange 环境中的共享邮箱配置为启用 POP/IMAP 访问。
  • 向未启用邮件的服务帐户授予对共享邮箱的权限。

在这种情况下,用户无法使用服务帐户通过 POP/IMAP 访问共享邮箱。 此外,POP/IMAP 协议日志中会显示类似于以下内容的错误消息:

“R=”? NO 登录失败:“”;Msg=NoPrimarySmtpAddress”

发生此问题时,服务帐户仍可以通过 Microsoft Outlook、Outlook Web App、Exchange Web Services 或Exchange ActiveSync访问共享邮箱。

原因

出现此问题的原因是 POP/IMAP 身份验证过程要求经过身份验证的用户定义主 SMTP 地址。

解决方案

若要解决此问题,请使用以下方法之一 (,但只能使用一种) 。

方法 1:为服务帐户创建邮箱

使用 Exchange 管理员中心或 Exchange 命令行管理程序为服务帐户创建邮箱。 有关如何为现有用户创建邮箱的详细信息,请参阅在 Exchange Server 中创建用户邮箱

方法 2:将主 SMTP 地址添加到 proxyAddresses 属性

使用 Active Directory 用户和计算机 将主 SMTP 地址添加到服务帐户的 proxyAddresses 属性。 为此,请按照下列步骤操作:

  1. 打开 Active Directory 用户和计算机。

  2. 选择“ 查看>高级功能”。

  3. 查找服务帐户的用户对象。

  4. 右键单击该对象,然后选择“ 属性”。

  5. 选择“属性编辑器”选项卡。

  6. 找到 userPrincipalName 属性,并记下属性值 (, serviceaccount01@contoso.com 例如,) 。

  7. 找到 proxyAddresses 属性,然后选择 “编辑”。

  8. 在“ 要添加的值 ”文本框中,添加以下文本以设置主 SMTP 地址,然后选择“ 添加 ”按钮:

    Smtp:serviceaccount01@contoso.com

  9. 选择“确定”两次,然后关闭Active Directory 用户和计算机。

进行此更改后,请要求用户通过 POP/IMAP 再次访问共享邮箱。