通信系统和方法_3

文档序号:8461006阅读:来源:国知局
名,诸如 “d=ipad: v=5.1: s=imap.gmail.com:u=martinirapportive.com”。代理服务器 104 解析该用户名串,并且在连接到消息服务器“imap.gmail.com”时使用“martin@_rapportive.com”作为用户名。替换地,可以使用不透明唯一标识符作为用户名,如果代理服务器104保持从那些标识符到消息服务器106帐户细节的映射的话。可向用户名串添加其他字段。如果没有任何字段将被用户修改,则可使用HMAC (基于哈希的消息认证代码)或其他认证代码来防止用户篡改用户名串。
[0048]在一些实施例中,建议向用户名串中包括关于连接和消息服务器106的信息,并且保持口令串未改变。在一些情况下,用户常常改变其口令,但是很少改变其用户名。在这些情况下,如果消息服务器106拒绝登陆,则代理服务器104可以将该拒绝转送到客户端设备102,并且客户端设备102可以在不改变用户名的情况下提示用户以获得其新口令。当客户端设备102用同一用户名和新口令来重试时,代理服务器104可以在不要求任何特殊处理的情况下将新口令转送到消息服务器106。
[0049]图8根据实施例描述了图示出随着事件可在IMAP代理配置中发生的事件的序列和定时的图800。在建立到IMAP代理服务器的连接之后,客户端设备通常执行TLS (传输层安全)握手以在尝试登陆之前建立安全通道。当IMAP代理服务器接收到证书时,其从用户名字段提取上游服务器主机名,连接到上游服务器,使用TLS来建立安全通道,并且使用上游用户名和口令来尝试登陆。然后可以将上游登陆尝试的成功或失败传递到客户端设备上。
[0050]一旦客户端设备102被认证,则代理服务器104可以在没有修改的情况下安全地通过从客户端设备102接收到的大多数命令并从消息服务器106接收相应响应。在图8中,这用“选择收件箱”命令来举例说明。针对从客户端设备102接收到的FETCH、UID FETCH或APPEND (及可能的其他)命令以及来自消息服务器106的相应响应执行进一步处理,如下所述。
[0051]FETCH命令被客户端设备102用于各种目的,诸如下载邮箱中的所有消息的概要,下载所选消息的全文或下载消息附件。图8图示出FETCH的两个用途,由此,客户端首先下载收件箱中的所有消息的标题,并且然后下载所选消息的全体。在一些实施例中,可使用包含在消息标题中的信息来对补充信息的高速缓存器进行“预先准备”或“预热”,使得可更快地处理用于全体的后续FETCH请求。例如,如果发送者的电子邮件地址正被用来搜索补充信息,则可以从消息标题提取电子邮件地址。此预先准备操作可异步地发生:随着消息标题被返回到客户端设备的同时,补充信息服务可开始处理电子邮件地址。
[0052]当由客户端设备来发送用于消息主体(或消息主体的一部分)的FETCH命令时,如图8中的“获取消息”所示,代理服务器首先从上游服务器获取该消息或消息部分。其然后将该消息传递至代码转换过程,该代码转换过程可访问补充信息服务,其又可利用任何数目的社交简档服务。可在代码转换期间同时地实现到那些社交简档服务的请求,或者可按照独立的时间表实现并高速缓存。然后将代码转换消息返回到客户端。
[0053]在没有任何标题的情况下,FETCH命令允许客户端请求消息的特定部分(“数据项目”),诸如一个特定MIME部分。由特定FETCH命令从客户端设备102请求的数据项目可能不包含代理服务器104所需的所有信息以执行所需消息重写功能。例如,如果要求发送者电子邮件地址,则代理服务器104要求BODY[HEADER.FIELDS (FROM)]数据项目,并且为了正确地对MME结构进行变换,其要求BODYSTRUCTURE数据项目,如果请求中的其他数据项目是用于特定MME部分而不是整个主体的话。如果FETCH请求是用于附件,并且应用程序不要求附件的重写,则可不要求附加数据项目。
[0054]可以以各种方式获得客户端设备102针对特定消息未请求、但代理服务器104针对正确的重写要求的数据项目。一个选项是使代理服务器104通过适当地保持跟踪序列编号的变化和UIDVALIDITY而按序号或WD来保持用于此消息元数据的其自己的持久性储库。如果不期望持久性储库,则代理服务器104可随着从客户端设备102接收的FETCH请求被转送到消息服务器106而向其中插入附加请求数据项目,使得来自消息服务器106的相应响应包含消息的正确重写所需的所有数据项目。在相应响应被转送到客户端设备102之前由代理服务器104从相应响应去除被添加到FETTH请求的任何数据项目以保持协议正确性。
[0055]消息服务器106的一些现有实施方式可能具有缺陷,影响是即使客户端请求附加标题字段,诸如BODY [HEADER.FIELDS (FROM)]数据项目,其也不会被消息服务器106返回。IMAP代理服务器104可通过使用同一序列集向消息服务器106执行附加FETCH请求、仅请求此类标题字段来围绕此类缺陷进行工作。在发布附加命令的代理服务器104的这些实施例中,采取锁(lock)来防止客户端设备102同时地发布IMAP连接的总体状态的命令,诸如SELECT,直至附加命令和响应循环已完成为止。
[0056]由代理服务器104如下处理消息服务器106对FETCH请求的响应。如在下面的关于消息重写的小节中描述的处理的响应中的任何B0DY[]数据项目。以与消息重写规则一致的方式修改响应中的任何BODYSTRUCTURE数据项目,特别地,在这里还反映任何MME部分(诸如用文本/html部分来替换文本/明文部分)的字符编码或内容类型的任何改变。类似地以与消息重写规则一致的方式来修改响应中的任何BODY[HEADER]数据项目,包含内容类型标题。可更新响应中的任何RFC822.SIZE数据项目以在重写已发生之后的消息尺寸。客户端102最初请求的其他数据项目可在没有修改的情况下通过。
[0057]如果应用程序需要消息服务器106所报告的消息集合与由代理服务器104报告给客户端设备102的消息集合之间的严格的一一对应,则可在没有修改的情况下在消息服务器106与客户端设备102之间传递任何消息序列号和WD。然而,如果应用程序要求修改客户端设备102看到的消息集合(例如,当读取特定邮箱的内容时或者为了如下所述地引入虚拟邮箱,应隐藏低重要性的消息),则代理服务器104保持客户端设备102与消息服务器106的序号和WD的各视图之间的映射。另外,代理服务器104在所有命令和响应中对其进行双向的转换。序号服从在序列中未显示出间隙的IMAP的契约,但是由于该映射并不在会话本地,所以其不要求持久性存储。用WD,允许有间隙。因此,只要消息未被代理服务器104隐藏并添加,则代理服务器104可以对与客户端设备102的通信使用与其用于与消息服务器106的通信相同的UID值。如果应用程序需要向客户端设备102呈现在消息服务器106上不存在的消息(诸如适用于此特定客户端设备102的系统通知),则为了服从IMAP协议要求,则代理服务器104针对每个消息持久地存储由消息服务器106呈现的UID和呈现给客户端设备102的WD (其可以是不同的,并且如果由代理服务器104插入或隐藏消息,则UID可不存在)。
[0058]如果应用程序希望引入虚拟邮箱(S卩,对客户端设备102可见但在消息服务器106上不存在的邮箱)或将邮箱重命名(例如,以确保发送的消息被放置在消息服务器106上的指定发送项目文件夹中),则代理服务器104还拦截LIST、SELECT、EXAMINE、STATUS、CREATE、DELETE、RENAME、SUBSCRIBE、UNSUBSCRIBE 以及 LSUB 命令及其关联响应。该虚拟或重命名邮箱名称被插入包含邮箱名称的列表的响应中,并且包括虚拟邮箱名称的请求未被转送到消息服务器106,或者在转送到消息服务器106之前相反地重命名。在虚拟邮箱情形中,应用程序将需要确定用于COPY命令的适当语义和消息标志(例如,\看过和\删除)的传播。
[0059]APPEND命令最常与经由SMTP来发送消息相结合地出现,其在单独的连接上发生。使用IMAP APPEND命令来将消息保存到用户的“已发送邮件”文件夹。用户期待其“已发送邮件”文件夹中的消息与其各接收者接收到的消息(添加在MTA (消息传输代理)中转中的模数标题)相同,因此,由IMAP代理服务器以与下面讨论的由SMTP代理来修改同一消息的相同方式来修改随APPEND —起出现的消息。
[0060]Exchange ActiveSync 代理服务器
在Exchange ActiveSync中,用使用HTTP基本认证方案编码的用户名和口令对用户进行认证。通常在由客户端进行的所有POST请求上都包括授权标题,并且ExchangeActiveSync代理服务器可以简单地将此标题传递至消息服务器1GtlExchange ActiveSync还使用HTTP OPT1NS请求,其通常不包括授权标题。然而,OPT1NS请求仍被ExchangeActiveSync代理服务器转送到消息服务器106,以便检测Exchange服务器版本及其他信息。因此如在IMAP代理服务器的情况下描述的那样对用户名中的消息服务器106名称进行编码是不够的,因为Exchange ActiveSync代理服务器将不知道哪个消息服务器106将用于OPT1NS请求。替代地,所述系统和方法使用HTTP包括主机标题中的全主机名的事实。与通配符DNS记录组合,可以对子域名中的任意信息进行编码。例如,如果消息服务器106是“exchangeOl.upstream, com,,,则首先逸出周期,用“O-,,来替换“.”并用“00”来替换 “O-,,。如果用于 activesync.example, com” 的 DNS 决定 Exchange ActiveSync 代理的IP地址,则现在可以将客户端设备102配置成连接到“exchange0010-upstream-0com.activesync.example, com”。周期的逸出是必需的,因为虽然DNS通配符覆盖多个层级的子域,所以通配符SSL证书覆盖单个层级的子域。通过对仅一个层级的子域的全上游服务器名进行编码,用于
当前第3页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1