1

我有两台服务器: S1 是 Exchange2010 S2 是 Exchange 2007

两台服务器在 ActiveDirectory 中的同一个域中。

想法是在 S1 上拥有“服务帐户”,并启用来自两台服务器的用户模拟。我的应用程序正在使用“服务帐户”的凭据,然后开始遍历 smtp 地址列表。它模拟每个 smtp 地址并对该帐户的邮箱内容进行一些处理。

那是一个理论,现在是解决问题的时候了。

我可以作为服务帐户连接并可以访问其邮箱,但是当我尝试访问模拟用户的邮箱时,我收到异常说“SMTP 地址没有与之关联的邮箱”。两台服务器都发生异常。

我开始调试和谷歌搜索可能的原因,我改变了这个:

svc.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, smtpAddress);

进入这个:

svc.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.PrincipalName, smtpAddress);

它的工作原理很奇怪,因为一个月前我只在一台服务器上进行了不同的设置,并且使用 SmtpAddress 枚举有效,而且我的管理员发誓模拟配置完全相同。

现在,如果有人可以向我提供一些提示,说明为什么我不能使用 ConnectingIdType.SmtpAddress 以及我应该怎么做才能使其工作?

4

1 回答 1

1

当然,事实证明管理员为我当前的配置做了一些不同的事情。新环境有一个策略,即帐户名称与帐户的 smtp 地址不同,并且 smtp 在用户的姓名和姓氏之间有一个点。因此,例如在旧配置中,无论我选择什么 ConnectingIdType,我都可以模拟 User100@example.com,但在新环境中,我必须设置正确的 id 类型,具体取决于我使用 smtp 还是帐户名作为模拟 id。

希望它会有所帮助,以防其他人的管理员“也没有改变任何东西”:)

于 2011-06-29T15:52:42.717 回答