Outlook Mobile Access 和 Exchange 2003

 

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

Microsoft Exchange Server 2003 提供了移动浏览解决方案,该方案叫做 Outlook Mobile Access。Outlook Mobile Access 为在已批准的设备列表中的移动设备上显示内容而生成 HTML、xHTML 和 cHTML 标记。无线标记语言 (WML) 也已生成,但 Microsoft 尚未对所有设备和网关配置测试 WML。因此,WML 不受支持。但是,大多数设备都能与 Outlook Mobile Access 配合工作。

默认情况下将安装 Outlook Mobile Access,但它被全局禁用(尽管对所有用户都启用了移动访问支持)。用户体验类似于 Microsoft Outlook Web Access。与 Outlook Mobile Access 的连接通常需要通过一个 URL,即 http://server-name/oma。但是,不像 Microsoft Outlook Web Access,您无法在 URL 中指定具体的用户帐户。这是因为作为会话状态管理的一部分,Outlook Mobile Access 将向 URL 添加唯一标识符。

Outlook Mobile Access 支持以下邮件和协作功能:

  • 电子邮件:包括读取、答复、转发、删除、标记、撰写邮件、导航多个文件夹和查找发件人或其他收件人。
  • 日历:包括接受、拒绝、暂定会议请求,通过日期选取器控件导航,在与会者支持的情况下撰写和编辑约会。
  • 联系人:包括查看、创建、编辑个人联系人,搜索个人和全局地址列表 (GAL) 联系人,将 GAL 联系人保存到个人联系人中,用电子邮件和电话与联系人联系。
  • 任务:包括查看、创建和编辑任务。

Outlook Mobile Access 依存关系

Outlook Mobile Access 有几个依存关系,包括 .NET Framework、IIS、会话状态管理和经过修改的 URL 会话 ID。Outlook Mobile Access 程序建立在 .NET Framework 之上。默认情况下,Windows Server 2003 安装 .NET Framework,而 Windows 2000 Server 则需要添加该框架。如果没有安装框架,则由 Exchange 安装程序处理。Outlook Mobile Access 还要求使用基本身份验证方法,并要求将 OMA.ASPX 作为默认文档,以及将 Outlook Mobile Access 虚拟目录可执行文件路径配置为

aspx,C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG.

Outlook Mobile Access 和 .NET

Outlook Mobile Access 是唯一使用 .NET Framework 的 Exchange 2003 组件。需要对 .NET Framework 有大体认识,才能了解 Outlook Mobile Access 的基础。Outlook Mobile Access 使您能够用移动浏览器查看邮箱。这一部分提供对 .NET Framework 和 ASP.NET 的基本解释,因为它们作为整体应用于 Exchange 2003 Outlook Mobile Access 及移动性。

.NET Framework

.NET Framework 有两个主要组件:公共语言运行库和 .NET Framework 类库。公共语言运行库是 .NET Framework 的基础。运行时是在运行时管理代码的代理。它提供核心服务,例如,内存管理和线程管理,同时,它强制执行严格的类型安全性和其他形式的代码准确性,这些机制可以帮助解决安全性和健壮性问题。实际上,代码管理的概念是运行时的基本原则。以运行时为目标的代码称为托管代码,而不以运行时为目标的代码则称为非托管代码。

类库是全面的、面向对象的可重用类型的集合,用来开发各种应用程序,其范围从常规命令行或图形用户界面 (GUI) 应用程序,到由 ASP.NET Web 表单和 XML Web 服务所提供的基于最新创新的应用程序。

ASP.NET

ASP.NET 使开发人员能够使用 .NET Framework 来开发基于 Web 的应用程序。ASP.NET 不仅仅是一个运行时宿主。ASP.NET 是用于使用托管代码开发网站和 Internet 分布式对象的完整体系结构。Web 表单和 XML Web 服务都使用 IIS 和 ASP.NET 作为应用程序的发布机制。它们都有支持 .NET Framework 中的类的集合。

.NET Framework 还提供了一个类和工具的集合,可以帮助开发移动控件。移动控件用来为手持设备开发应用程序,并且是特定于设备的。移动控件减少了开发时间,并确保将正确标记返回给客户端设备。

ASP.NET Framework 1.1 为用户界面的抽象提供了可用来表示可见内容的基本组件的对象,例如,文本标签和输入框。将该抽象表示方法转换为特定于设备的标记是运行时的任务。

ASP.NET 提供了移动 Web 表单控件,用于代表用户界面的单个组件。这些组件用来定义网页中的用户界面。ASP.NET 以适合于发出请求的设备的标记语言来传递内容。

到目前为止,浏览器所使用的主要客户端协议有两个:cHTML 和 xHTML。ASP.NET 自动针对指定的无线设备呈现正确的元素。

会话管理

这一部分开始时提到过,Outlook Mobile Access 需要进行会话状态管理才能正确操作。HTTP 协议实际上是无状态的,因为它没有为标识或维护 Web 服务器与客户端之间的会话提供机制。这个问题在 ASP 中通过提供会话对象而得到解决,该对象使您能够唯一地标识用户,并存储用户与 Web 服务器的交互所特有的信息。

ASP.NET 提供会话对象的经过更新和改进的版本。该对象使您能够执行以下任务:

  • 通过唯一会话 ID 标识用户
  • 存储特定于用户会话的信息
  • 通过事件处理程序方法来管理会话生存期
  • 在指定的超时之后释放会话数据

Outlook Mobile Access 使用 ASP.NET 默认设置、进程内的会话状态处理机制以及经过修改的会话管理的 URL 方法。

经过修改的 URL 会话 ID

经过修改的 URL 是包含会话 ID 的 URL。会话 ID 采用标准 URL 的形式,并带有在应用程序和网页之间添加的唯一标识符(例如,https://server/oma/(a5db038hclb4b1g5ukhrsu55)/oma.aspx)。Web 服务器接收请求时,它会分析经过修改的 URL 中的会话 ID。然后,运行时就像使用从 cookie 获得的会话 ID 一样使用该会话 ID。如果客户端不支持 cookie,则运行时不会自动使用经过修改的 URL。

note注意:
如果移动设备不支持会话 ID 的经过修改的 URL,那么,这样的移动设备有潜在问题。某些无线浏览器在已经重定向到经过修改的 URL 之后,会在处理相对 URL 时遇到困难。发生问题是因为它们所支持的 URL 长度要比桌面浏览器所支持的 URL 的长度短得多。在嵌套很深的层次结构中的应用程序所需要的 URL 的长度可能超过了某些浏览器所支持的长度。

ASP.NET 设备更新

移动设备更新被合并到 .NET Framework 设备更新中。毕竟,Outlook Mobile Access 是从这些基类派生的。设备更新 (DU) 暂定的日程是每季度更新。为在特定设备上提供正确显示而需要的任何修改都包括在位于浏览目录的根位置的 web.config 中。web.config 被作为设备更新的一部分进行更新。任何自定义都将被覆盖。

管理员和开发人员在修改 Microsoft 尚未测试的设备的 web.config 设置时会感到很困难。在很多情况下,移动设备和 Exchange 之间将没有互操作性问题。但是,对于这样的修改还没有相应的支持,并且最终结果可能使 Outlook Mobile Access 无法调试。

Outlook Mobile Access 体系结构

为了进行数据访问和处理,在 Outlook Mobile Access 进程内部使用了 CDOEX、DAV、Microsoft Outlook Web Access 模板和 system.directory 服务。并且需要读取 Active Directory、注册表、IIS 元数据库和 web.config 文件以获得配置设置。

Outlook Mobile Access 必须通过基本身份验证以明文接收用户凭据。Outlook Mobile Access 不支持或使用 Windows 集成身份验证,即使设备/浏览器支持它。

ASP.NET 与 IIS, .NET Framework 和操作系统所提供的基本安全服务配合,以提供各种身份验证和授权机制。

Outlook Mobile Access 和 Microsoft Outlook Web Access 模板

Web 分布式创作和版本管理 (WebDAV) 让用户能够对驻留在 Exchange 上的大多数数据进行原始访问。某些普通任务(例如,接受会议请求、创建会议请求和解析不明确的电子邮件收件人)很难使用 WebDAV 来实现。通常,Microsoft Outlook Web Access 使用 HTML 页响应用户请求。如果客户端不支持 cookie,则运行时不会自动使用经过修改的 URL。

响应页的格式由模板确定。Outlook Mobile Access 借用了 Microsoft Outlook Web Access 功能。Outlook Mobile Access 使用自定义模板来控制从 Microsoft Outlook Web Access 功能返回的信息和信息的格式。这些模板以类似于 WebDAV 响应的格式返回数据。这使得使用 Microsoft Outlook Web Access 进行数据检索的函数和那些使用 WebDAV 的函数所返回的数据能够具有一致的格式。

WebDAV 是 Outlook Mobile Access Exchange 数据提供程序中的大多数操作的基础。WebDAV 协议是为常规数据访问而设计的,该协议将 HTTP 扩展为 HTTP 1.1。它支持服务器上的数据存储和 HTTP 客户端的检索。基本操作是:

  • 导航文件夹
  • 枚举文件夹项
  • 搜索文件夹中的项目
  • 获得项详细信息
  • 修改邮件、联系人和任务的属性
  • 提交已撰写的邮件

Exchange 数据提供程序类为那些不是从 Microsoft Outlook Web Access 获得的函数提供了与 Exchange Server 的接口。

Outlook Mobile Access 数据源

Outlook Mobile Access 从多种数据源检索配置和其他数据,这些数据源包括 Active Directory、IIS 元数据库、Windows 注册表和 Web.config。通过 WebDAV 和 Microsoft Outlook Web Access 模板为用户检索数据时,要求 Outlook Mobile Access 构造如下所示的 WebDAV/OWA URL:http://<servername>/<virtualdirectoryname>/<mailbox>。在这种情况下,<servername> 的值是从所登录的用户的用户对象中检索的。在整个目录林拓扑中,都是从资源目录林中被禁用的用户帐户读取该信息。<virutaldirectoryname> 是从 ExchangeVDir 注册表检索的。

确定 <mailbox> 是否正确是更为复杂的事情。确定用户邮箱名称的唯一方式是查找该邮箱的用户的 SMTP 地址。可以从用户对象查找该值。但是,该方法存在问题。属性可能包含用户的多个 SMTP 地址。

正确的 SMTP 地址由所考虑的邮箱的 SMTP 域来确定。Microsoft Outlook Web Access、Outlook Mobile Access 和 Exchange ActiveSync 的每个虚拟目录的 SMTP 域均通过 Exchange 系统管理器进行配置。由于同一个前端服务器可以有多个 Outlook Mobile Access 虚拟目录,而每个虚拟目录代表唯一的 SMTP 域,因此这对驻留很有利。该设置以每个 Exchange 服务器上每个虚拟目录一个 SMTP 域的方式存储在目录中。

除了 Exchange ActiveSync 和 Microsoft Outlook Web Access 以外,Outlook Mobile Access 对该属性没有读取访问权。由于访问权是管理员设置,所以它受到限制。DS2MB 进程有读取访问权。邮箱解析过程如下:

  1. Exchange 系统管理器将某个服务器上某个虚拟目录的 SMTP 域值写入 Active Directory。
  2. 该服务器上的 DS2MB 选取该设置,并将它复制到计算机上的 IIS 元数据库。
  3. Outlook Mobile Access 读取它们正在其中运行的虚拟目录的 SMTP 域。
  4. Outlook Mobile Access 查找 Active Directory 用户对象上的 SMTP 地址(在跨目录林拓扑中,从 Exchange 资源目录林中被禁用的用户帐户读取该信息)。
  5. Outlook Mobile Access 选取列表中使用 SMTP 域的 SMTP 地址。
  6. SMTP 地址采用 <mailboxname>@<SMTP Domain> 的格式,Outlook Mobile Access 提取 <mailboxname>。

然后,<servername>、<virtualDirectoryName> 和 <mailbox> 值被链接在一起,以提供后端服务器所需要的 DAV/OWA URL。

Outlook Mobile Access 目录设置

一旦创建新的会话(并且只在创建新会话时),Outlook Mobile Access 将从 Active Directory 中读取配置设置。下面的两个表描述了在 Active Directory 中目录林范围的和特定于用户的 Outlook Mobile Access 配置设置。

目录林范围的 Outlook Mobile Access 目录设置

目录设置 描述

Outlook Mobile Access

位于 Exchange Active Directory 设置下面的 Outlook Mobile Access 根节点。其中包含 Outlook Mobile Access 全局属性和更多 Outlook Mobile Access 设置的容器。

msExchOmaAdminWirelessEnable

对可用移动服务的管理控制权:

Bit 0:OMA Push

Bit 1:OMA Browse

Bit 2:OMA Sync

Bit 30:Browse-with-untested-devices

Bit 31:Push-via-user-specified-SMTP-address

0 = 启用。1 = 禁用。

由 Exchange 安装程序设置的默认值是禁用。

msExchOmaExtendedProperties

为未来功能扩展而保留(不需要 Active Directory 架构更改)

每个用户的 Outlook Mobile Access 目录设置

目录设置 描述

msExchOmaAdminExtendedSettings

受管理员控制的用户设置的空间。示例:允许/不允许访问 Outlook Mobile Access 中诸如日历或联系人这样的功能。

msExchOmaExtendedProperties

为未来功能扩展而保留(不需要 Active Directory 架构更改)

用户对象的属性从用户对象容器继承了三个访问控制列表 (ACL):Domain Admins、Local System on Domain Controllers 和 Account Operators。这些安全规则中的每一个都对用户的设置拥有完整的读/写权限。另外,表 9.8 列出的两个属性是 Public-Information 属性集的一部分,该属性集将读取访问权给予已通过身份验证的用户。Outlook Mobile Access Configuration Container 中的属性是从组织节点继承来的,然后为已通过身份验证的用户添加了读取访问权。

因为这些目录设置在新会话开始时是只读的,因此更改设置不会影响正在进行的会话。例如,禁用 Outlook Mobile Access 的用户不会立即使该用户停止正在进行的会话。直到用户下一次尝试建立新的 Outlook Mobile Access 会话时,用户才会注意到访问权被禁用。

Outlook Mobile Access 和 DS2MB

Exchange 2003 中的 DS2MB 影响所有基于 Web 的 Exchange 应用程序。它们包括 Outlook Web Access、Outlook Mobile Access 和 Exchange ActiveSync。Outlook Mobile Access 的某些配置值依赖于目录,但是删除 Outlook Mobile Access 虚拟目录是解决目录到元数据库复制问题的常用方法。

IIS 从本地元数据库获得正确配置。与 IIS 相关的信息存储在 Active Directory 中,并在从目录到元数据库单方向上由 DS2MB 进程执行复制。在每个运行 Exchange 2000 或更高版本的计算机上,DS2MB 均作为系统助理的一部分运行。DS2MB 接收目录内发生的更改的通知,并指引 DS2MB 执行该工作。

如果您发现本地元数据库没有与目录同步,则可以通过操纵下面的元数据库键来强制进行目录手动更新。

LM\DS2MB\HighWaterMarks\{056BE186-E73F-4EBD-A92D-2D985BC97C63}\61472

如果将该值的数据更改为 0(零)或删除该键,然后重新启动系统助理,那么,将导致目录信息被全部复制到元数据库。系统助理启动时,将把该项以默认值添加到元数据库中。可以通过多种工具操纵元数据库。如果 Exchange 2003 正运行在 Windows Server 2003 上,则可以使用内置的 IISCNFG 工具。如果 Exchange 正运行在 Windows 2000 上,可以使用 MetaEdit 2.2 或更高版本。

Outlook Mobile Access 和 Windows 注册表

Outlook Mobile Access 使用五个注册表项。一个用于性能计数器,其他四个用于配置。一个项与 Exchange ActiveSync 共享,其他三个与 Outlook Web Access 共享。这些项可以在 HKLM\SYSTEM\CurrentControlSet\Services 下面找到。下表说明了这些注册表项。

重要的 Outlook Mobile Access 注册表值

注册表项 描述

MasSync\Parameters\ExchangeVDir

/Exchange 或用 / 开头的其他字符串

指定 ActiveSync 和 Outlook Mobile Access 必须使用什么虚拟目录才能访问用户邮箱所在的 Exchange 后端服务器上的 Outlook Web Access 模板和 WebDAV。如果该键不存在,或为空,则使用默认值 /Exchange。否则,该键包含虚拟目录的名称,包括斜杠 (/)。

MSExchangeWEB\OWA\UseRegionalCharset

1 或任何内容

如果该键设置为“1”,那么 Outlook Web Access 和 Outlook Mobile Access 将使用区域字符集发送电子邮件。如果它不存在,或被设置为其他任何内容,则 Outlook Web Access 和 Outlook Mobile Access 将使用 UTF-8 发送电子邮件。所使用的区域字符集是根据用户所指定的客户端语言来确定的。

MSExchangeWEB\OWA\UseISO8859_15

1 或任何内容

设置为“1”时,在曾经使用 iso-8859-1 的任何地方将使用字符集 iso-8859-15。

MSExchangeWEB\OWA\UseGB18030

1 或任何内容

设置为“1”时,在曾经使用 GB2312 的任何地方将使用字符集 GB18030。

MSExchangeOMA\Performance

N/A

用来发布 Outlook Mobile Access 性能对象和计数器。

Outlook Mobile Access 和 Web.Config

在 Web.config 文件的 <browserCaps> 部分的下面是各种移动浏览器和各种版本的 Internet Explorer的 Outlook Mobile Access 设置。不要调整这些设置,因为它们包括在 .NET Framework 设备更新中。

web.config 文件中有些设置是可由用户配置的,下表描述了这些设置。

Outlook Mobile Access 的 Web.config 设置

部分

设置

描述

<appSettings>

<add key="CredentialsTimeout" value="60"></add>

定义 Outlook Mobile Access 使用于 DAV 和 Outlook Web Access 模板访问的 Kerberos 票证被持续缓存的分钟数。

 

<add key="DefaultConnectionLimit" value="500"></add>

定义 Outlook Mobile Access 可以向各个后端服务器打开的最大同时连接数。

 

<add key="MaxServicePointIdleTime" value="60000"></add>

告诉 Outlook Mobile Access 在超时之前对来自后端服务器的答复要等待多少毫秒。

 

<add key="UnsupportedMessage" value="http://<server>/OMADevices"></add>

定义该消息时,将在不受支持的警告和不受支持的错误页上显示额外的文本。默认情况下该键为空。

<system.web>

<sessionState mode="InProc" cookieless="true" timeout="20" />

指定被 Outlook Mobile Access 使用的会话状态配置。

超时值表示,在最后一个会话请求到达之后,将会话状态保留在内存中多少分钟。

 

<mobileControls SessionStateHistorySize="8">

指定会话状态必须跟踪多少个以前的页面(让用户能够设置设备的向后按钮,并且仍然使页面上的链接能够工作)。

 

<globalization requestEncoding="utf-8" responseEncoding="utf-8" />

定义在不指定字符集的情况下 Outlook Mobile Access 用来发送 HTTP 响应和解释传入请求的默认字符集。

<browserCAPs>

supportsBackNavWithExpiresHeader

确定 Outlook Mobile Access 是否在所有请求上以 10/08/2000 10:28 作为值返回过期头信息。返回过去日期和时间的目的是强制使内容过期。

 

preferredResponseCharset

对于所有请求均将 Response.Charset 设置为该值。

 

preferredResponseCodePage

将 Response.ContentEncoding 设置为指定的整数。在设置 Response.Charset 的同时进行此设置。

 

preferredRequestCodePage

将 Request.ContentEncoding 设置为指定的整数。应当在设置 Response.Charset 的同时进行此设置。

 

supportsOpenwaveUniversalLocalSrc

告诉 Outlook Mobile Access 在链接之前插入访问键。

 

defaultTextboxMaxlength

设置在文本框控件中所允许的字符串的 MaxLength。例如,如果没有该设置,P800 将默认使用 64。

Outlook Mobile Access 客户端请求

Outlook Mobile Access 客户端发出 Web 请求时,将发生以下身份验证和授权事件序列:

  1. 从网络收到 HTTP(S) Web 请求。可以用 SSL 来验证服务器身份。SSL 还提供了安全通道,用于帮助保护在客户端和服务器之间传递的敏感数据。
  2. IIS 使用基本身份验证对调用者进行身份验证。IIS 为通过身份验证的用户创建 Windows 访问令牌。
  3. IIS 批准调用者访问所请求的资源。使用附加到所请求的资源上的访问控件列表 (ACL) 所定义的 NTFS 文件系统权限来授予访问权。
  4. IIS 将通过身份验证的调用者的 Windows Server 访问令牌传递给 ASP.NET。

Outlook Mobile Access 安全体系结构

Outlook Mobile Access 的基本安全体系结构取决于 Exchange 2003 是运行在 Windows Server 2003 上,还是在 Windows 2000 Server 上。在 Windows Server 2003 上,Outlook Mobile Access 运行在专用程序池 ExchangeMobileBrowseApplicationPool 内它自己的进程中。Outlook Mobile Access 使用 Network Service 帐户运行在 ASP.NET 工作进程 (W3WP.EXE) 中。在基于 Windows 2000 的计算机上,Outlook Mobile Access 与同一台计算机上的其他 ASP.Net 应用程序一起运行在一个进程中。Outlook Mobile Access 使用 ASPNET 帐户运行在 ASP.NET 工作进程 (ASPNET_WP.EXE) 中。

ASP.NET ISAPI 扩展 (ASPNET_ISAPI.DLL) 运行在 Inetinfo.exe 下面的进程中。这是由 InProcessIsapiApps 元数据库条目控制的。ASPNET_ISAPI.DLL 负责路由发往 ASP.NET 工作进程的请求。然后,ASP.NET 程序运行在 ASP.NET 工作进程中,在这里,程序域提供了隔离边界。通过配置程序池,IIS 6.0 将 ASP.NET 程序隔离起来,在程序池中,每个池都有它自己的应用程序实例(Outlook Mobile Access 放在 ExchangeMobileBrowseApplication 池中)。