有时候,用户会碰到这样的问题,一个用户在域控制器中,使用活动目录用户和计算机管理工具更改了用户密码,他发现该用户仍然可以使用旧密码通过POP3客户端接收邮件,但不能发送邮件,发送时提示用户名和密码出错。为什么客户端能按旧密码继续接收邮件?即使重新启动客户端也没有效果。此时,如果将客户端POP3上的密码更改为任意密码,接收时才会提示密码错误。
  环境:
  服务器端Exchange 2003 SP2;
  客户端Outlook Express,POP3的设置:没要选中“使用安全验证登录”,选中“我的服务器要求身份认证”,如图1所示。
 出现该问题和Exchange 服务器的缓存信息没有被更新有关。在正常情况下,为了获得更好的性能,Exchange 服务器会将用户访问活动目录的信息缓存在本地,当您在DC上修改用户的密码后,DC上的信息会在较短的时间内同步,缺省的同步时间为5分钟。但Exchange 服务器的上的缓存信息在默认情况下大约需要15分钟左右才能被更新。因此,会导致出现上述这种情况。
  通过重启Exchange 服务器,该问题即可解决。
  那么Exchange 服务器为什么包使用目录缓存呢?下面我们将具体介绍目录缓存的作用。我们先要对Exchange 和活动目录做一个简单的回顾。
Exchange Server 2003 与 Active Directory
  Microsoft Exchange Server 2003 完全依赖 Microsoft Active Directory目录服务来实现其目录操作。Active Directory 提供所有邮箱信息、地址列表服务以及其他与收件人有关的信息。大多数 Exchange 2003 配置信息也都存储在 Active Directory 中。系统助理是 Exchange 2003 中的一个负责管理目录访问的组件。系统助理包含不同的内部组件(如 DSAccess 和 DSProxy),这些组件与 Active Directory 通信,并缓存目录信息以提高目录信息的检索速度,同时减小域控制器和全局编录服务器上的工作负荷。
  目录服务访问
  Exchange 2003 服务访问存储在 Active Directory 中的信息,并将信息写入到 Active Directory 中。如果此通信直接发生在每个服务与 Active Directory 之间,那么 Exchange 2003 便可能由于过多的通信请求使 Active Directory 域控制器崩溃。必须通过一个中心组件来组织服务与 Active Directory 之间的通信。该组件就是 DSAccess 模块。
  DSAccess 是一个共享的 API,Exchange 2003 中的多个组件用它来查询 Active Directory 并获取配置信息和收件人信息。DSAccess 在 DSAccess.dll 中实现,后者由包括系统助理、邮件传输代理、Microsoft Exchange Information Store 服务、Exchange Management 服务、Internet 信息服务 (IIS) 以及 Windows Management Instrumentation (WMI) 在内的 Exchange 组件和非 Exchange 组件加载。DSAccess 探查 Active Directory 拓扑、检测域控制器和全局编录服务器,并维护适用于 Exchange 组件使用的一系列有效目录服务器。此外,DSAccess 还维护一个缓存。该缓存使得各个组件发送到 Active Directory 服务器的轻型目录访问协议 (LDAP) 请求数减少,从而最大限度地降低了 Active Directory 上的负载。
  目录访问缓存
  DSAccess 缓存是 Exchange 服务器上的内存缓存,它包含从 Active Directory 中检索到的配置和用户记录。要访问缓存中的记录,可以通过对象的可分辨名称 (DN)、全局唯一标识符 (GUID) 或者基于作用域、BaseDN 和筛选器(用于在 Active Directory 中查找该对象)构造的项。使用同一 DN、GUID 或项的后续访问将在缓存中查找该记录。前面已提到,DSAccess 是一个共享的 API,它由 Exchange Server 2003 计算机上的几个进程使用。下面的表中列出的进程将 DSAccess.dll 加载到其堆中,这些进程是 Active Directory 信息缓存的受益者。
  进程描述
  Mad.exe            Microsoft Exchange System Attendant 服务
  Store.exe          Microsoft Exchange Information  Store 服务
  EMSMTA.exe      Microsoft Exchange MTA Stacks 服务
  ExMgmt.exe       Exchange Management 服务
  RESvc.exe          Exchange Routing Engine 服务
  Inetinfo.exe 或 W3WP.exeIIS 和工作进程
  Winmgmt.exe     Windows Management Instrumentation 服务
  下表列出了使用 DSAccess 来获取用户信息和配置信息的各个 Exchange 组件。
  组件DSAccess 用于
  元数据库更新服务 (DS2MB)更新序号 (USN) 跟踪的目录更改
  Exchange     路由引擎 (RESVC)用户和配置查找
  SMTP            分类程序 (SMTP CAT)拓扑中的全局编录服务器列表
  目录服务代理 (DSProxy)拓扑中的全局编录服务器列表
  Exchange      存储用户和配置查找
  WebDAV        用户和配置查找
  邮件传输代理 (MTA)用户和配置查找
  DSAccess 缓存可以在一段时间内缓存这些组件执行的目录查找。在这段时间内,如果另一个进程请求相同的信息,可以从 DSAccess 缓存中检索该信息,而不必在工作的全局编录上重复相同的查询。除了 MAPI 客户端的通讯簿查找以及 SMTP 入站和出站路由的某些部分以外,其他所有目录访问都通过 DSAccess 进程,并且会被缓存起来。
  默认情况下,目录条目的缓存时间为 15 分钟。用户缓存的默认大小为 140 MB,配置缓存为 50 MB。用户数、最大条目数、最大缓存大小(内存)以及缓存到期时间等参数都可能影响 DSAccess 缓存的最佳大小和性能。