切换到宽版
  • 8485阅读
  • 0回复

解决Exchange 2010收件人更新错误 [复制链接]

上一主题 下一主题
 
只看楼主 倒序阅读 0楼  发表于: 2010-09-20
关键词: 服务器SMTP
 最近在的我工作中遇到一种情况:终端用户报告显示无法修改目录属性,当修改完目录属性后,会自动恢复到默认值或返回不正确的数据。
  在这个例子中,这些客户是信息集中的门户中的客户(如网站客户、服务器终端客户等)。要解决这一问题,只要登陆账户升级即可。举个例子,如果一个女生结婚的话,她需要将名字中的姓改为丈夫的姓。在这个例子中也一样,如果客户的电子邮件名字是由自己的名字+网站名字构成,当网站名字修改后,用户电子邮件的名字也需要把后面网站的名字做升级,修改为新名字即可。
  在Exchange 2003 中,RUS(收件人更新服务)会自动扫描目录,以发现目标基于USN(更新序列号)所做的改变。如果我们发现目标在RUS上的USN改变了,我们需要做出相应的改变。通常情况下,RUS通常利用单一Exchange 服务器计算地址并利用单一域控制器读取目标文件及修改目标文件。
  在 Exchange 2010服务器中,RUS已经变成一个任务过程,而不再仅仅用于自动扫描目录发现目标USN是否做出新的改变。在默认情况下,如果任何任务运行于修改用户目标(如设置用户邮箱,或者设置用户名等),RUS会被该任务调用后执行任务。在这个过程中可利用任何Exchange服务器系统助理或任何域控制器要求执行RUS任务。这样,RUS的调用不再仅限于单一的Exchange服务器或单一的域名控制器。
  在用户提交设置用户或设置邮箱的任务时,任务本身会提供一个用户属性信息,RUS可以在目录中读到这些信息。随后,RUS通过计算,把有效的邮箱地址发送给提交任务者,并对目录做出修改。如果用户提交任务时,使用的是代理服务器,RUS会将代理服务器的地址加入计算过程中,并把计算后的结果发送给任务提交者及写入目录中。其他诸如用户名等属性信息一旦写入目录中后,除非在用户提交修改用户名等特殊的任务命令时,RUS会对目录中的相关信息做出修改,否则一般不会做出对用户名等属性信息的修改。
  在用户提交设置用户或设置邮箱的任务时,我们一般会提供–domainController 转换,以利用静态域控制器。例如,当用户提交设置邮箱的任务时,该任务会通过动态目录站点需找带有邮箱设置功能的服务器。如果在需找的动态目录站点中不存在这种服务器,该任务会自动在其他动态目录站点中寻找,直至占到带有邮箱设置功能的服务器为止。
  让我们举个例子来详细介绍一下,Exchange 服务器由自动扫描目录变为任务扫描后,究竟为何会发生文章开始时,我阐述的那个用户无法修改目录属性的问题吧:
  任务环境:
  两台域控制器:DC1和DC2
  两台Exchange邮箱服务器:MBX1和MBX2
  举例:一位用户名为BARBARA SMITH的用户希望将她的姓中的SMITH改为JONES。那么她的账户属性为:
  givenName: BARBARA
  sn: SMITH
  msExchHideFromAddressList: FALSE
  proxyAddresses (2): smtp:Barbara@domain.com; SMTP: Barbara.Smith@domain.com
  1.当用户提交将BARBARA SMITH修改为BARBARA JOHNS的任务请求后,后台运行会调用的命令符为:set-user –identity Barbara –lastName Jones –domainController DC-2
  2.运行到这一步时,任务命令会浏览目录,并读出BARBARA SMITH的原有账户属性。随后,任务命令符会将修改账户的命令提交给 Exchange服务器,提交的命令中带有当前用户属性信息及修改后的账户属性信息。
  3.RUS会评估任务命令提交上来的用户邮件账户修改信息,并决定该邮件账户需要做出修改。其修改内容包括主SMTP地址改为 Barbara.Jones@domain.com。 Exchange把这一信息反馈给任务命令。
  4.任务命令随后会在静态制定的DC2上执行目录写入操作。其写入部分如下:

以下是代码片段:
    sn: JONES
  proxyAddresses (3): smtp:Barbara@domain.com; SMTP:Barbara.Jones@domain.com; smtp:Barbara.Smith@domain.com


  5.在DC-2上完成目录写入过程之后,任务命令会进一步申请修改邮件账户地址簿参数。(此处需要注意的是,当用户任务中带有目录写入操作时,完成目录修改操作后,不管是否需要,都会自动申请修改邮件账户地址簿参数。)任务命令申请修改邮件账户地址簿参数需要调用的命令符为:set-mailbox –identity BARBARA –hiddenFromAddressList:$FALSE
  6. 执行这一步操作时,任务命令会重新阅读目录并读取账户相关属性。而这一步的任务操作并没限定特定的域控制器。如果任务命令随机选择的是DC1 。任务命令会从DC1上读出原来为修改的账户属性:

以下是代码片段:
    givenName: BARBARA
  sn: SMITH
  msExchHideFromAddressList: FALSE
  proxyAddresses (2): smtp:Barbara@domain.com; SMTP: Barbara.Smith@domain.com


  产生这个错误的原因是,DC1此时还没有从DC2上把写入目录的账户信息复制过来。但用户已经调用修改邮件地址簿参数命令,尽管此时读出的SMTP和原账户信息相同,但邮件地址簿参数已经作出改变,即hiddenFromAddressList已经做出改变。
  7. 当用户命令把从DC1中调出的原用户信息递交给RUS时(注意,此时邮件地址簿参数已经做出改变),RUS对用户账户属性进行重新配置,并最终决定用户电子邮件地址为 barbara@domain.com and barbara.smith@domain.com。最终,用户账户信息被修改为:

以下是代码片段:
    givenName: BARBARA
  sn: JONES
  msexchHideFromAddressList: FALSE
  proxyAddresses (2): smtp:Barbara@domain.com; SMTP: barbara.smith@domain.com


  很明显,用户的姓氏已经由SMITH修改为JONES,但邮件地址却未修改成功。纵观整个修改过程,我们可以发现,其错误在于再修改用户邮件地址过程中,用户命令调用的目录来自于两个DC服务器。
Exchange 常用端口:http://bbs.exchangecn.com/read.php?tid-1591.html
分享到
快速回复
限60 字节
 
上一个 下一个