通信系统和方法_4

文档序号:8461006阅读:来源:国知局
activesync.example, com”的通配符SSL证书被客户端接受为有效。
[0061]当客户端设备102向Exchange ActiveSync服务器进行请求时,该请求不能被盲目地转送至消息服务器106,因为每个请求包括“Deviceld”参数,并且消息服务器106保持用于用户名和DeviceId的每个组合的同步状态信息。遗憾的是,可能用户具有在同一客户端设备102上配置的用于同一用户的两个电子邮件帐户,一个使用代理服务器,并且一个直接地连接到消息服务器106。如果发生这种事,则客户端设备102认为到两个服务器(即,Exchange ActiveSync代理服务器和消息服务器106)的两个连接具有相互不同的同步状态,但是消息服务器106看到相同的DeviceId,并且因此对两个连接应用同一同步状态。这导致不明确的结果。为了解决此问题,Exchange ActiveSync代理服务器将客户端设备102请求上的DeviceId修改成是某个其他串,不等于同一用户所使用的任何其他客户端设备102。通常,向DeviceId附加任意后缀就足够了。
[0062]因此,在从客户单设备102发送到Exchange ActiveSync代理服务器的每个请求上,替换DeviceId参数,并且将主机标题替换成参考消息服务器的主机名。如果来自消息服务器106的响应包含包括消息服务器的主机名的任何Set-Cookie标题,则ExchangeActiveSync代理服务器将其重写以使用cookie的域字段中的Exchange ActiveSync代理服务器的已编码子域。可以由Exchange ActiveSync代理服务器安全地传递HTTP请求和响应主体,除在Sync、SendMaiK SmartForward以及SmatReply命令上之外,如下所述。
[0063]来自客户端设备102的同步命令可不被Exchange ActiveSync代理服务器修改,而是解析客户端的WBXML (无线应用协议二进制XML)请求主体以确定同步的类型。例如,具有O的值的AirSync:GetChanges可被客户端设备102用来指示特定消息的下载,而不是文件夹内容的同步,并且可以由客户端设备发送AirSyncBase:BodyPreference元素以指示所请求消息格式(纯文本、HTML、RTF或MME)和消息内容的截断。在消息代码转换中使用此信息,以确保以客户端设备102预期的格式向客户端设备102提供消息。
[0064]需要将来自消息服务器106的Sync命令响应中的WBXML解码并搜索作为AirSync: Responses 元素的子元素的任何 AirSync:Fetch 元素以及作为 AirSync: Commands元素的子元素的任何AirSync:Add或AirSync:Change元素。此类元素可包含电子邮件消息或另一类型的消息(例如,会议邀请)。可以通过检查AirSync:Applicat1nData/Email:MessageClass值是否是“ IPM.Note”来检测电子邮件消息。希望仅处理电子邮件消息的应用程序可以在没有修改的情况下连同其他MessageClass值一起传递消息,但是其他应用程序可能希望也增强日历条目及其他类型的消息。
[0065]针对要解析和修改的电子邮件消息,检查内容类型(AirSyncBase: Type ),其可以是纯文本、HTML、RTF或MME。在纯文本或HTML的情况下,使用元素Email:1nternetCPID中的代码页值来确定消息的字符编码,并且如果施加字符编码归一化,则用归一化编码的代码页ID来更新此元素。连同此内容类型信息一起,可以将消息数据(AirSyncBase:Data元素)传递至下面讨论的消息代码转换和增强层。不能安全地修改消息的内容类型,因为返回的消息格式需要与客户端设备102的格式请求匹配,但是可以在将WBXML响应重组并将其发送到客户端设备102之前用增强版本来替换该消息数据。
[0066]当发送消息时,客户端设备102使用SendMail、SmartReply或SmartForward命令。通常,将出站消息包含在ComposeMail:MME元素中的客户端设备请求主体中。此消息被用于到消息接收者的传输和到用户的“已发送邮件”文件夹的保存两者。ExchangeActiveSync代理服务器以与本文讨论的SMTP代理服务器相同的方式修改此消息,并将已修改SendMail、SmartReply或SmartForward请求发送到消息服务器106。
[0067]SMTP代理服务器
SMTP意图允许消息传输中的中间服务器,并且SMTP中间服务器或SMTP代理服务器的使用(例如,出于存档目的)是公共的。这里所述的方法与公共SMTP中间服务器的不同之处在于SMTP代理服务器充当用于客户端设备102的邮件提交代理,并且通常使用另一邮件提交代理作为消息服务器106。在此配置中,接收者的邮件传输代理看到来自用户的正常消息服务器106的消息,其降低了该消息将被标记为垃圾邮件的风险。
[0068]类似于消息服务器106的邮件提交代理通常在允许提交消息之前要求用户用用户名和口令进行认证。这意味着当将客户端设备102配置成连接到SMTP代理服务器时,可以以上文针对IMAP代理服务器所述的相同方式在用户名中对消息服务器的主机名进行编码。当连接到消息服务器106时,SMTP代理服务器从由客户端设备102供应的上游主机名和原始用户名的复合串提取原始用户名。
[0069]在客户端设备102已被连接之后,但是在其已认证之前,SMTP代理服务器独立于任何消息服务器106基于其自己的能力对命令进行响应。在客户端设备102已提供证书且消息服务器106已成功地认证用户之后,SMTP代理服务器将客户端设备的命令转送到消息服务器106,并且将消息服务器的响应转送到客户端设备102。
[0070]遵循来自客户端设备102的DATA命令,SMTP代理服务器以因特网消息格式接受后续消息,并且将其传递到这里讨论的消息代码转换层,指示其正在处理由用户发送的出站消息(而不是由用户接收到的入站消息)。结果得到的已修改消息被连同转送的DATA命令一起发送到消息服务器106。
[0071]消息代码转换
图7A和7B图示出根据实施例的代码转换消息的方法700的流程图。在一些实施例中,由这里讨论的代理服务器104来执行方法700的至少一部分。最初,在702处接收电子邮件消息。方法700在704处确定消息是否采取因特网消息格式。如果消息采取因特网消息格式,则在706处解析消息的MME结构。方法700还在708处将消息主体的编码归一化,并且在710处解析来自MME标题和/或消息主体的元数据。如果在704处消息被确定为未采取因特网消息格式,则方法700在712处将消息主体的字符编码归一化,并在714处解析来自协议上下文和/或消息主体的元数据。
[0072]方法700通过在716处使用已解析元数据来识别与消息相关联的补充信息而继续。这可涉及到与任何数目的补充信息服务器108或数据源118的通信。方法700然后在718处确定该消息是否采取HTML格式。如果该消息未采取HTML格式,则方法700在720处将消息转换成HTML格式,如果消息的协议许可内容类型的改变的话。方法700通过在722处向消息中插入补充信息来增强消息。
[0073]该消息在724处确定消息是否采取因特网消息格式。如果该消息采取因特网消息格式,则方法700在726处用增强消息主体来更新MME容器。如果该消息并未采取因特网消息格式,则方法700在728处用更新消息主体来更新协议容器。方法700通过在730处基于消息协议中的增强上下文而将消息串行化成适当的格式而继续。最后,在732处将消息传送至适当的系统或客户端设备。
[0074]以下示例呈现出消息代码转换程序的特定实施例。消息代码转换和增强层接受从这里所述电子邮件协议代理服务器104中的一个提取的邮件消息作为输入。作为最低限度,代理服务器104支持因特网消息格式、纯文本以及HTML作为输入和输出格式。在出文本和HTML输入的情况下,代理服务器104允许指定字符编码和相关标题字段(诸如消息的发送者和接收者电子邮件地址)。在因特网消息格式的情况下,该信息被包含在消息的标题字段内。代理服务器104支持两个不同的操作模式:入站(由用户接收到的消息)和出站(由用户发送的消息)。在入站消息的情况下,还指定已认证用户帐户、客户端设备类型以及客户端软件版本的细节。
[0075]如果要进行代码转换的消息采取因特网消息格式,则解析其MME结构,如在RFC2045,2046,2047和2049中所述。在多部分消息的情况下,识别由客户端显示的主体部分(即,并非附件的部分或不那么优选的多部分/替换版本等)。这些可见主体部分通常采取纯文本或HTML格式,并且可以与作为纯文本或HTML提供给代码转换层的消息相同的方式对其进行处理,如下所述。
[0076]—旦消息主体采取纯文本或HTML格式,则将其字符编码归一化,以便促进用来自其他源的数据来修改消息。在一些实施例中,将UTF-8 (UCS变换格式一8位)用于字符编码,因为可以无损地将字符编码转换成UTF-8,并且其得到多种客户端设备的支持。解析消息主体以及从消息标题或电子邮件协议获得的元数据(诸如发送者和接收者的电子邮件地址)并用来查询任何数目的数据库或服务以找到可用来增强消息的信息。此类查询可考虑对于已认证用户而言特定的数据。
[0077]接下来,针对包含在消息内(例如,在出站消息的情况下包含在引用答复中)的任何现有增强或增强的片段来分析消息主体。可用在HTML源中使用的特定元素ID或类名或者用文本中的特定不可见Unicode字符序列或适合于应用程序的任何其他不同特征来识别此类增强。可从消息删除或者用替换表示来替换此类现有增强,视情况而定。
[0078]接下来,如果消息采取纯文本格式且如果在允许使用HTML而不是纯文本的背景下执行代码转换,则将纯文本消息转换成等价HTML。由于在HTML中忽视换行符,所以纯文本消息中的换行符在HTML转换中被转换成显式换行符或段落元素。为了允许不同尺寸的屏幕上的
当前第4页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1