Internet 信息服务

 

上一次修改主题: 2005-05-23

Internet 信息服务 (IIS) 是每一台运行 Exchange 2003 Server 的服务器所必不可少的部分。IIS 可主控 Exchange Server 2003 行使邮件系统功能所必须具有的基本组件。使用 Exchange Server 2003 添加到 Web 服务中的 Internet 服务器应用程序编程接口 (ISAPI) 应用程序,如 Outlook Web Access、Outlook Mobile Access 和 Exchange ActiveSync,用户可以通过各种基于 HTTP 的协议来访问 Exchange。如果您的用户使用 RPC over HTTP 通信机制来通过 Internet 访问其邮箱,而不是通过虚拟专用网络 (VPN) 连接来访问,则 Web 服务还负责 RPC over HTTP 通信。IIS 驻留 SMTP 服务,该服务实现 Exchange 2003 的中心传输引擎。IIS 还驻留 NNTP、IMAP4 和 POP3 协议引擎,这些引擎使 Internet 用户可以通过大部分 Internet 访问协议来访问邮件数据。文件传输协议 (FTP) 服务是唯一与 Exchange 2003 无关的 IIS 协议服务,因为 FTP 不是邮件协议。

下图说明了 SMTP、NNTP、IMAP4、POP3、Outlook Web Access、Outlook Mobile Access 和 Exchange ActiveSync 如何集成到 IIS 6.0 的体系结构中。

a38725fa-3a9e-424a-bae7-f0649065f150

Exchange Server 2003 依赖 IIS 6.0 中的下列关键组件:

  • Inetinfo.exe:Inetinfo.exe 是运行主 IIS 进程的用户模式组件,它驻留 IIS 6.0 的大部分协议引擎。这些组件包括 FTP、SMTP、NNTP、IMAP4 和 POP3。Admin 服务也可在 Inetinfo.exe 进程环境中运行。但是,要知道 World Wide Web Publishing 服务并不在 Inetinfo.exe 中运行。出于容错、性能和安全性等方面的考虑,已重新设计 IIS 6.0 的体系结构,使它可以在自己的处理环境中运行 Web 服务。

  • 元数据库:元数据库是存放 IIS 配置数据的数据存储。元数据库是纯文本的 .xml 文件,既可以进行手动编辑,也可以通过编程的方式来进行编辑。metabase.xml 文件位于 \Windows\System32\Inetsrv 目录中。有关元数据库的详细信息,请参阅 Exchange Server 2003 中的协议虚拟服务器

  • IIS Admin 服务:IIS Admin 服务 (IIS Admin) 管理 IIS 元数据库,并更新 Web 服务、FTP 服务、SMTP 服务、POP3 服务、IMAP4 服务和 NNTP 服务的注册表项。其他应用程序(例如,作为系统助理内部组件的元数据库更新服务)还可以通过 IIS Admin 访问 IIS 配置信息。有关元数据库更新服务的详细信息,请参阅 Exchange Server 2003 与 Active Directory
    IIS Admin 服务的注册表项为 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\IISAdmin。IIS Admin 依赖远程过程调用 (RPC) 服务和安全帐户管理器服务。其他所有 IIS 服务都依赖于 IIS Admin 服务。IIS Admin 在 Iisadmin.dll 中实现,后者默认情况下位于 \Windows\System32\Inetsrv 目录中。

    note注意:
    IIS Admin 服务必须运行在每一台 Exchange Server 2003 服务器上。
  • SMTP 服务:SMTP 服务运行 SMTP 协议引擎。该引擎默认情况下在 TCP 端口 25 上接受传入的 SMTP 邮件,并使用 SMTP 将邮件发送到其他主机。在运行 Exchange Server 2003 的服务器上,SMTP 服务还控制核心传输引擎。SMTP 服务包含在 Windows Server 2003 中,并由 Exchange Server 2003 进行了扩展。有关 SMTP 传输体系结构的详细信息,请参阅 SMTP 传输体系结构
    SMTP 服务的注册表项为 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SMTPSvc。SMTP 服务运行在 Inetinfo.exe 进程的上下文中,并依赖于事件日志服务和 IIS Admin 服务。SMTP 服务在 Smtpsvc.dll 中实现,Smtpsvc.dll 默认情况下位于 \Windows\System32\Inetsrv 目录中。

    note注意:
    虽然没有其他服务依赖于 SMTP 服务,但是 SMTP 服务必须运行在每一个 Exchange Server 2003 上,因为整个 Exchange Server 2003 邮件系统都依赖它。
  • POP3 服务:POP3 服务包含在 Exchange Server 2003 中,它使 Internet 用户可以通过邮局协议版本 3 来访问其邮箱。如果用户有必要的权限,并且 Exchange Server 服务器上运行了 POP3 服务,Outlook Express 等客户端便可以通过 POP3 来下载邮件。通过 POP3 服务只能访问收件箱文件夹,不能访问其他邮箱文件夹或公用文件夹。
    POP3 服务的注册表项为 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\POP3Svc。POP3 服务运行在 Inetinfo.exe 进程的上下文中,它依赖于 IIS Admin 服务,因此可以在 IIS 中对它进行控制。POP3 服务在 Pop3svc.dll 中实现,Pop3svc.dll 默认情况下位于 \Program Files\Exchsrvr\Bin 目录中。POP3 服务默认情况下被禁用。

    note注意:
    由于没有其他 Exchange 服务依赖于 POP3 服务,因此,如果用户不使用 POP3 客户端来访问其邮箱,POP3 服务便不必运行。
  • NNTP 服务:NNTP 服务使 Exchange Server 2003 服务器可以驻留基于公用文件夹的 NNTP 新闻组(如讨论组)。由于此功能完全遵守 NNTP 协议,因此用户可以使用任何新闻阅读器客户端来参与新闻组讨论。如果 NNTP 服务运行在 Exchange Server 2003 服务器上,NNTP 服务还可以用于通过新闻复制与其他 NNTP 主机相互复制新闻组。NNTP 服务包含在 Windows Server 2003 中,并由 Exchange Server 2003 进行了扩展。
    NNTP 服务的注册表项为 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NNTPSvc。NNTP 服务运行在 Inetinfo.exe 进程的上下文中,并依赖于事件日志服务和 IIS Admin 服务。NNTP 服务在 Nntpsvc.dll 中实现,后者默认情况下位于 \Windows\System32\Inetsrv 目录中。NNTP 服务默认情况下被禁用。

    note注意:
    由于没有其他 Exchange 服务依赖于 NNTP 服务,因此,如果您不与其他 NNTP 主机相互复制新闻组,并且用户不使用新闻阅读器客户端来访问公用文件夹,便不必运行 NNTP 服务。
  • IMAP4 服务:IMAP4 服务包含在 Exchange Server 2003 中,它使 Internet 用户可以通过 Internet 邮件访问协议版本 4 来访问其邮箱和公用文件夹。如果用户有必要的权限,并且 Exchange Server 服务器上运行了 IMAP4 服务,Outlook Express 等客户端便可以通过 IMAP4 来下载邮件。IMAP4 用户还可以直接在服务器上处理邮件。
    IMAP4 服务的注册表项为 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\IMAP4Svc。IMAP4 服务运行在 Inetinfo.exe 进程的上下文中,并依赖于 IIS Admin 服务。IMAP4 服务在 IMAP4svc.dll 中实现,后者默认情况下位于 \Program Files\Exchsrvr\Bin 目录中。IMAP4 服务默认情况下被禁用。

    note注意:
    由于没有其他 Exchange 服务依赖于 IMAP4 服务,因此,如果用户不使用 IMAP4 客户端来访问其邮箱,IMAP4 服务便不必运行。
  • World Wide Web Publishing 服务:World Wide Web Publishing 服务包含在 Windows Server 2003 中,它是用户模式的配置和进程管理器,负责管理处理 HTTP 请求并运行 Web 应用程序(如 Outlook Web Access、Outlook Mobile Access 和 Exchange ActiveSync)的 IIS 组件。该 Web 服务还是一个监视组件,它定期检查 Web 应用程序,确定这些应用程序是在运行还是被意外停止。Web 服务是 Windows Server 2003 自带的。Exchange Server 2003 在该服务中另外增加了用于 Outlook Web Access、Outlook Mobile Access 和 Exchange ActiveSync 的 ISAPI 组件。
    World Wide Web 服务的注册表项为 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3Svc。与其他所有 IIS 服务不同,Web 服务并不运行在 Inetinfo.exe 进程的上下文中。如果检查 W3Svc 注册表项下面的 ImagePath 参数,您会看到 Web 服务运行在 Svchost.exe 进程的上下文中,该进程是在 DLL 中实现的服务的常规主机进程。Web 服务在 Iisw3adm.dll 中实现。
    Web 服务运行在名为 IISSvcs 的 Svchost.exe 服务组中。Svchost.exe 使用服务组来实现在一个 Svchost.exe 实例中同时运行多个不同的服务。一个服务器上可以运行 Svchost.exe 的多个实例,并且每个 Svchost.exe 会话都可以包含单独的一组服务。Svchost 组在下面的注册表项中列出:。
    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Svchost.
    该注册表项下面的每个条目都是代表一个单独的 Svchost 组的 REG_MULTI_SZ 参数。其中的每个值都包含共同在一个服务组中运行的服务的名称。如果检查 IISSvcs 条目的值,您会看到 Web 服务是 IISSvcs 组中唯一的服务。

  • World Wide Web 工作进程:所有 Web 应用程序处理(包括加载 ISAPI 筛选器和扩展以及身份验证和授权)都是由 World Wide Web 工作进程来完成的。工作进程可执行文件的名称为 w3wp.exe。每个工作进程都将系统组件以及其他 Web 应用程序完全隔离开来,并直接从 HTTP.sys 内核模式驱动程序接收请求。

  • 应用程序池:应用程序池是 HTTP.sys(由一个或多个工作进程使用)中的一个请求队列。也就是说,应用程序池可以处理对一个或多个唯一的 Web 应用程序的请求。这些 Web 应用程序是基于其 URL 被分配到应用程序池中的。每个应用程序池都通过进程边界与其他应用程序池分隔开来。分配给一个应用程序池的应用程序不会受其他应用程序池的影响,并且该应用程序在由当前应用程序池处理时不会被路由到其他应用程序池。
    所有必要的 HTTP 应用程序运行时服务(如 ISAPI 扩展支持)都可平等地用于任何应用程序池。这种设计有助于防止运行异常的 Web 应用程序或网站破坏由该服务器上的其他工作进程处理的其他 Web 应用程序(或其他网站)。现在可以在不停止整个 Web 服务的情况下卸载进程内组件。可以在不影响其他正与 Web 浏览器或其他 Web 应用程序通信的工作进程的情况下暂停主机工作进程。应用程序池还能够利用可以在进程级别使用的其他操作系统服务(例如,CPU 遏制)。

    note注意:
    在服务器运行过程中,可以通过 IIS 管理器管理单元将应用程序分配给其他应用程序池。IIS 最多可以为每一台服务器上的 20,000 个应用程序池提供支持。
  • HTTP.sys:这是用于实现 HTTP 侦听、路由、排队和缓存的内核模式组件。HTTP.sys 是所有传入 HTTP 请求的一个连接点。它为 HTTP 服务器应用程序提供高性能的连接。该驱动程序位于 TCP/IP 的顶层,它针对收到传入连接请求的所有 Windows 套接字(IP/端口组合)进行自我注册。HTTP.sys 还负责总的连接管理、带宽遏制以及 Web 服务器日志记录。
    HTTP.sys 对每个应用程序池都维护一个相应的队列,这样每个 HTTP 请求都可以分别路由到正确的用户模式工作进程(处理应用程序池)。在用户模式工作进程意外退出的情况下,只要 Web 服务仍然运行,HTTP.sys 便会继续接受请求并将请求排队。HTTP.sys 继续接受请求并将其在相应的队列中排队,直到没有队列可用、队列中没有剩余空间,或者 Web 服务关闭。在 Web 服务注意到工作进程失败后,如果有未完成的请求等待工作进程的应用程序池处理,便会启动新的工作进程。这样,虽然用户模式请求处理可能存在暂时性的中断,但是用户觉察不出来,因为系统内部继续接受请求并将请求排队。