EWS:在一个域中模拟来自不同服务器的用户

时间:2011-06-16 14:37:06

标签: impersonation exchangewebservices exchange-server-2007 exchange-server-2010

我有两台服务器: 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以及我应该怎样做才能使其工作?

1 个答案:

答案 0 :(得分:1)

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

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