EP1683314A1 - Caching in an electronic messaging system - Google Patents

Caching in an electronic messaging system

Info

Publication number
EP1683314A1
EP1683314A1 EP04798344A EP04798344A EP1683314A1 EP 1683314 A1 EP1683314 A1 EP 1683314A1 EP 04798344 A EP04798344 A EP 04798344A EP 04798344 A EP04798344 A EP 04798344A EP 1683314 A1 EP1683314 A1 EP 1683314A1
Authority
EP
European Patent Office
Prior art keywords
messaging
message
client
messages
server
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
EP04798344A
Other languages
German (de)
French (fr)
Inventor
Justin Marston
Andrew Stuart Hatch
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Bluespace Group Ltd
Original Assignee
Bluespace Group Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US10/789,461 external-priority patent/US20040260710A1/en
Application filed by Bluespace Group Ltd filed Critical Bluespace Group Ltd
Publication of EP1683314A1 publication Critical patent/EP1683314A1/en
Withdrawn legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/083Network architectures or network communication protocols for network security for authentication of entities using passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/42Mailbox-related aspects, e.g. synchronisation of mailboxes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/289Intermediate processing functionally located close to the data consumer application, e.g. in same machine, in same home or in same sub-network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload

Definitions

  • This invention pertains in general to electronic messaging and in particular to delivery and caching of secure messages via a network such as the Internet.
  • Email is an extremely important communications tool in today's business environment. To a large extent, email has replaced regular mail, telephones, and facsimiles as the preferred method of communication. A typical person in a business or other enterprise can send and receive dozens or hundreds of emails a day. Moreover, the volume of email traffic continues to increase year-after-year.
  • An enterprise thus needs to manage a large, and increasing, volume of email.
  • Most enterprises utilize dedicated email servers to process their email.
  • most email servers do not scale to support large numbers of end-users and/or heavy email traffic.
  • Large enterprises having many end-users must therefore have multiple email servers, with each server serving a subset of the total email users. For example, a very large company might have more than 1000 separate email servers.
  • Email server has parameters and policies that must be independently managed. Furthermore, each server also acts as the primary store for its end-users' content, and thus must be backed up regularly. Moreover, it is difficult to perform functions such as auditing and searching because the email content is distributed over multiple locations.
  • Centralized data centers have been used to overcome some of the difficulties inherent in managing multiple email servers.
  • a "server farm" is utilized to run multiple instances of email servers under a single management system.
  • a scalable back end is added to the email server, thereby allowing the server to support a greater number of users than conventional servers.
  • a centralized server for an enterprise is likely to be remote from a large subset of the end-users. Since every email sent or received by an end-user must pass over the connection between the end-user's email client and the central server, the network connection utilized by the central server must support high bandwidth.
  • Another undesirable characteristic of centralized mail servers is the high latency for interactions with the email clients.
  • the most common communications protocols utilized between email servers and email clients utilized by enterprises are not optimized for use with wide area networks such as the internet.
  • a central server is located on a wide area network, such as when the server is supporting an enterprise having multiple geographic locations, the speed of individual email transactions can be quite slow. This slowness detracts from the end-user experience and may hamper the efficiency of the enterprise.
  • a computer- implemented method of delivering electronic messages comprising: providing a messaging client with information identifying electronic messages available to the messaging client; caching copies of the electronic messages close to the messaging client; and responsive to a request from the messaging client for the identified electronic messages, providing the cached copies of the electronic messages to the messaging client.
  • An advantage of such a method is that problems of the prior art may at least be reduced.
  • the skilled person will appreciate that such a method will provide a number of technical advantages which address problems in the prior art.
  • the method may provide any one or more of the following, non- exhaustive, list of advantages: increased scalability; easier maintenance; reduced bandwidth requirement; reduction in the latency associated with sending and/or receiving an email.
  • a computer system adapted to be used in a messaging system, comprising: a cache management module adapted to manage a cache, the cache storing messages exchanged by the messaging system; and an interface module adapted to interface with a messaging client and a messaging server, the interface module adapted to receive messages from the server and provide messages to the client, wherein messages received from the server are stored in the cache and messages provided to the client are provided from the cache.
  • Such a system may provide any of the technical advantages associated with the first aspect of the invention.
  • the system may also help to reduce the load on the messaging server which may have the further advantage of reducing the hardware requirement for the messaging server.
  • Messaging client (116, 616) requests for messages are served from the cache (120, 618) rather than from the messaging server (112, 612).
  • the messages can be secured using security information (920) stored at the messaging server (112, 612) .
  • the messaging server (112, 612) sends the security information directly to the messaging clients (116, 616).
  • FIG. 1 is a high-level block diagram of an environment including an embodiment of a caching messaging system.
  • FIG. 2 is a high-level block diagram showing a computer system for acting as a messaging server, proxy server, and/or messaging client according to one embodiment.
  • FIG. 3 is a high-level block diagram illustrating modules within the messaging server according to one embodiment.
  • FIG. 4 is a high-level block diagram illustrating modules within the proxy server according to one embodiment.
  • FIG. 5 is a flow diagram illustrating transactions between a messaging client, a proxy server, and a messaging server according to one embodiment.
  • FIG. 6 is a high-level block diagram illustrating an environment including an embodiment of a relational messaging system using caching.
  • FIG. 7 is a block diagram illustrating a representation of a message exchanged according to an embodiment of the relational messaging system.
  • FIG. 8 illustrates a set of interactions that explain the relationship among messages, current submessages, and history submessages.
  • FIG. 9 is a high-level block diagram illustrating modules within the messaging server according to one embodiment of the relational messaging system.
  • FIG. 10 is a high-level block diagram illustrating modules within the proxy server according to one embodiment of the relational messaging system.
  • FIG. 11 is a high-level block diagram illustrating modules within the messaging client according to one embodiment of the relational messaging system.
  • FIG. 12 is a flow diagram illustrating transactions between a messaging client, a proxy server, and a messaging server according to one embodiment of the relational messaging system.
  • FIG. 13 is a flow diagram illustrating transactions between a messaging client, a proxy server, and a messaging server according to one embodiment of the relational messaging system.
  • FIG. 1 is a high-level block diagram of an environment 100 including an embodiment of a caching messaging system.
  • the messaging system is utilized by an enterprise to manage messages received by end-users associated with the enterprise.
  • a company can use the messaging system to manage messages received by employees of the company.
  • an Internet Service Provider ISP can use the messaging system to manage messages received by end-users of the ISP.
  • ISP Internet Service Provider
  • the environment 100 includes a network 110 connected to a messaging server 112 and two proxy servers 114.
  • one proxy server 114A is connected to two messaging clients 116 A, 116B, and the other proxy server 114B is connected to one messaging client 116C.
  • Only two proxy servers 114 and three messaging clients 116 are shown in FIG. 1 for purposes of clarity, but those of skill in the art will recognize that embodiments of the messaging system can have many proxy servers 114 and or messaging clients 116.
  • FIG. 1 and the other figures use like reference numerals to identify like elements.
  • end-users of messaging clients 116 use the messaging system to exchange messages with other end-users.
  • the term "message” refers to a data communication sent by one end-user to one or more end-users of the messaging system.
  • the messages are emails.
  • the messages are Short Message Service (SMS) messages, Instant Messages (TMs), Multi- Media Message (MMS) and/or other types of messages.
  • SMS Short Message Service
  • TMs Instant Messages
  • MMS Multi- Media Message
  • the term “message” can also include media files, such as discrete and/or streaming audio and/or video, still images, etc.
  • a message is a container having relational links.
  • a message sent by an end-user includes a message body that contains text, images, audio and/or other types of data.
  • a message can also include one or more attachments, which are typically data files associated with the message that a receiving end-user can separate from the message body.
  • An end-user can perform various actions on messages, including composing, sending, reading, replying to, and forwarding.
  • the network 110 enables data communication between and among the entities connected to the network and allows the entities to exchange messages.
  • the network 110 is the Internet.
  • the network 110 can also utilize dedicated or private communications links that are not necessarily part of the Internet.
  • the network 110 uses standard communications technologies and/or protocols.
  • the network 110 can include links using technologies such as Ethernet, 802.11, integrated services digital network (ISDN), digital subscriber line (DSL), asynchronous transfer mode (ATM), etc.
  • the networking protocols used on the network 110 can include multiprotocol label switching (MPLS), the transmission control protocol/Internet protocol (TCP/IP), the User Datagram Protocol (UDP), the hypertext transport protocol (HTTP), the simple mail transfer protocol (SMTP), the file transfer protocol (FTP), as were the various messaging protocols described below.
  • MPLS multiprotocol label switching
  • TCP/IP transmission control protocol/Internet protocol
  • UDP User Datagram Protocol
  • HTTP hypertext transport protocol
  • SMTP simple mail transfer protocol
  • FTP file transfer protocol
  • the data exchanged over the network 110 can be represented using technologies and/or formats including the hypertext markup language (HTML), the extensible markup language (XML), etc.
  • all or some of links can be encrypted using conventional encryption technologies such as the secure sockets layer (SSL), Secure HTTP and/or virtual private networks (VPNs).
  • the entities can use custom and/or dedicated data communications technologies instead of, or in addition to, the ones described above.
  • the messaging server 1 12 acts as a central repository for messages received by the end-users of the messaging system.
  • the messaging server 112 can communicate with the messaging clients 116 and proxy servers 114 via the network 110.
  • the messaging server 112 can communicate with messaging servers and clients outside of the enterprise messaging system via the network 110.
  • the messaging server 112 receives messages sent from outside the enterprise to end-users within the enterprise and messages sent by end-users within the enterprise to other end-users within the enterprise.
  • the messaging server 112 provides interfaces that allow other entities in the enterprise, such as the proxy servers 114 and/or messaging clients 116 to retrieve messages from it.
  • the messaging server 1 12 includes a message store database 118 that stores a copy of each message exchanged using the messaging system, or at least a designated subset of the messages exchanged nsing the system.
  • Each message in the database 118 is identified by a unique message identification (MID).
  • MID generally corresponds to the "Message-ID" specified in RFC 2111.
  • database refers to an information store and does not imply that the data within the database are organized in a particular structure beyond that described herein.
  • FIG. 1 Although only a single database 118 is illustrated in FIG. 1, embodiments of the messaging server 112 can utilize multiple databases.
  • the database 118 can be local or remote to the messaging server 112.
  • the database 118 is illustrated as being local to the messaging server 112 for purposes of clarity.
  • a proxy server 114 communicates with the messaging server 112 via the network 110.
  • the proxy server 114 communicates with one or more messaging clients 116 via the network 110.
  • FIG. 1 shows a direct connection between the proxy server 114 and the messaging clients 116, those of skill in the art will recognize that this connection can be made over the network 110.
  • the proxy server 114 is close to its messaging client 116 in the network sense. The closeness means that the proxy server 114 can usually communicate with the messaging clients 116 at a higher bandwidth and/or lower latency than could the messaging server 112.
  • close may or may not mean physically close.
  • close means that a cache is located at a location that is better situated to communicate with the messaging client than is the server. This may for example mean that the cache is physically located closer to the messaging client than the server.
  • the cache may be connected to the messaging client with a higher bandwidth connection than is the server.
  • the cache may be connected to the messaging client via fewer network hops than is the server.
  • the cache may be connected to the messaging client via a link having a lower latency than is the server.
  • an advantage of caching copies of the electronic messages close to the messaging client is that a user will experience quicker access to his/her emails than if those messages were stored on the server. This has other technical advantages as discussed elsewhere herein.
  • the proxy server 114 acts as a messaging server with respect to the messaging clients 116 and acts as a messaging client with respect to the messaging server 112. Accordingly, the proxy server 114 can exchange messages with the messaging clients 116 and with the messaging server 112.
  • the proxy server 114 includes a message cache 120 for storing messages passing through the proxy server 114.
  • the message cache 120 stores local copies of messages held in the message store database 118.
  • the proxy server 114 seeks to fulfill the request using a copy of the message stored in the message cache 120. This arrangement decreases the latency of providing the message to the messaging client, and reduces both the processing and bandwidth requirements for the messaging server 112.
  • the messaging client 116 is a device utilized by an end-user to compose, view, and perform other tasks with the messages.
  • the messaging client 116 is connected to the network 110 and can communicate with the proxy server 114, messaging server 112, and/or other entities coupled to the network, h one embodiment, the messaging client 116 is a computer system executing standard messaging software, such as MICROSOFT OUTLOOK or LOTUS NOTES. Depending upon the embodiment, some or all of the clients 116 can be other types of electronic devices, such as personal digital assistants (PDAs), cellular telephones with text messaging functionality, portable email devices, etc.
  • PDAs personal digital assistants
  • a messaging client 116 identifies a message using a client ID (CID) (the CID is known as the "unique ID" or "UTD" in IMAP). The CID uniquely identifies a message only with respect to the messaging client 116 that receives the message, and different clients can use the same CID to identify different messages.
  • CID client ID
  • the CID uniquely identifies a message only with respect to the messaging client 116 that receives the message, and different clients can use the
  • the messaging server In an embodiment of the system described above, the messaging server
  • FIG. 2 is a high-level block diagram showing a computer system 200 for acting as a messaging server, proxy server, and/or messaging client according to one embodiment. Illustrated are at least one processor 202 coupled to a bus 204.
  • a memory 206 Also coupled to the bus 204 are a memory 206, a storage device 208, a keyboard 210, a graphics adapter 212, a pointing device 214, and a network adapter 216.
  • a display 218 is coupled to the graphics adapter 212.
  • Computer systems acting in different roles may have different and/or additional elements than the ones shown in FIG. 2.
  • a computer system 200 acting as a messaging server 112 may have greater processing power and a larger storage device than a computer system acting as a messaging client 116.
  • a computer system acting as a proxy server 114 may lack devices such as a display 218 and/or keyboard 210 that are not necessarily required to operate the proxy server.
  • the processor 202 is a general-purpose processor such as an INTEL x86,
  • the memory 206 is, for example, firmware, read-only memory (ROM), non- volatile random access memory (NVRAM), and/or RAM, and holds instructions and data used by the processor 202.
  • the pointing device 214 is a mouse, track ball, pressure sensitive pad or other type of pointing device, and is used in combination with the keyboard 210 to input data into the computer system 200.
  • the graphics adapter 212 displays images and other information on the display 218.
  • the network adapter 216 couples the computer system 200 to the network 110.
  • the storage device 208 is a hard disk drive and/or another device capable of storing data, such as a solid-state memory device.
  • the computer system 200 is adapted to execute computer program modules.
  • module refers to computer program logic for providing the specified functionality.
  • a module can be implemented in hardware, firmware, and/or software.
  • the modules are stored on the storage device 208. When utilized, the modules are loaded into the memory 206 and executed by the processor 202.
  • FIG. 3 is a high-level block diagram illustrating modules within the messaging server 112 according to one embodiment.
  • modules within the messaging server 112 according to one embodiment.
  • Those of skill in the art will understand that other embodiments of the messaging server 112 and the other entities can have different and/or other modules than the ones described herein.
  • the functionalities can be distributed among the modules in a manner different than described herein.
  • the messaging server 112 includes a message interface module 310 for exchanging messages with other entities.
  • the message interface module 310 supports standard protocols for receiving messages from other entities on the network. These message-receiving protocols include, for example, the Simple Mail Transfer Protocol (SMTP), Messaging Application Program Interface (MAPI), and/or Notes Remote Procedure Call (NRPC).
  • the message interface module 310 supports standard protocols for sending messages to other entities on the network. These message-sending protocols include, for example, the Internet Message Access Protocol (IMAP), Post Office Protocol 3 (POP3), MAPI, and/or NRPC. Through these protocols, the message interface module 310 can send some or all of a message, such as just the header or just the message body.
  • the messaging server 112 includes an authentication module 312 for authenticating end-users of the messaging system.
  • the authentication module 312 maintains a login/password pair for each end-user. If an end-user supplies a correct login and password pair, the end-user is granted access to the messages of the end-user having the login. Other embodiments use different authentication schemes.
  • a message structure module 314 holds structural information related to the end-users' messages. This structural information includes, for example, the end-users' mail folders, folder contents, message flags, and/or control information pertaining to the end-user and/or end-users' messages. In one embodiment, the structural information includes the MID for each message.
  • FIG. 3 also illustrates the message store database 118. Some or all of the information described above, such as the structural information, is stored in the message store database 118 in one embodiment. In other embodiments, other databases are used to store the information.
  • FIG. 4 is a high-level block diagram illustrating modules within the proxy server 114 according to one embodiment.
  • the proxy server 114 includes a message interface module 410 for exchanging messages with other entities.
  • the message interface module 410 of the proxy server 114 supports the same general functionality as the corresponding module 310 of the messaging server, although the two modules need not be the same.
  • the message interface module 410 stores messages received from the messaging server 112 in the message cache 120 and provides messages stored in the cache to the messaging clients.
  • a message mapping module 412 tracks mappings between MIDs used by the messaging server 112 and CIDs used by the messaging clients 116.
  • the message mapping module 412 monitors communications between messaging clients 116 and the messaging server 112 and establishes a state object for each communications session.
  • the message mapping module 412 stores the MID and CID mappings in the state object.
  • the data in the message mapping module 412 can be used by the message interface module 410 to identify the MID, and message, corresponding to that client's CID.
  • a cache management module 414 manages the operation of the message cache 120.
  • the cache management module 414 implements a caching policy according to rules established by an administrator or other entity.
  • the caching policy specifies information such as what types of data are cached, how long data are retained in the cache, and/or whether to proactively obtain data for the cache.
  • the caching policy can operate the cache 120 in one or more of at least two modes: pull and push.
  • pull mode when the proxy server 114 receives a message request from a messaging client 116 it inspects the cache 120 to determine whether it already contains the message. If the cache 120 does not contain the message, the cache obtains the message from the messaging server 112.
  • push mode the cache 120 receives some or all messages from the messaging server 112 in advance of requests from the messaging clients 116. Thus, in push mode the cache 120 is likely to already have a message before a client 116 asks for it.
  • FIG. 5 is a flow diagram illustrating transactions between a messaging client 116, a proxy server 114, and a messaging server 112 according to one embodiment.
  • the three entities are labeled at the top of the figure and are represented by vertical lines descending from the labels. Horizontal lines represent interactions between the entities and text boxes represent actions performed by the entities. In general, time flows from top to bottom in the figure.
  • a person of skill in the art will recognize that embodiments of the messaging system can perform the illustrated transactions in orders different than the one shown in FIG. 5. Moreover, other embodiments can include different transactions instead of, or in addition to, the ones described here.
  • the proxy server 114 acts as an intermediary between the messaging client 116 and the messaging server 112.
  • the messaging client 116 interacts with the proxy server 114 and the proxy server behaves as if it were the messaging server 114.
  • the messaging server 112 interacts with the proxy server 114 and the proxy server behaves as if it were the messaging client 116.
  • the messaging client 116 and the messaging server 112 exchange 510 authentication information in order to authenticate the end-user of the messaging client.
  • the proxy server 114 monitors this transaction and, upon successful authentication, creates 512 a session object for tracking state related to the communications session between the messaging client 116 and messaging server 112. After being authenticated, the messaging client 116 typically requests and receives 514 the structural information from the messaging server 112. The proxy server 114 transparently passes the structural information to the messaging client 116.
  • the messaging client 116 requests and receives header information 516. This transaction can occur as part of the structural information transfer and/or as a separate request.
  • the header information includes the headers of any messages sent to the end-user of the messaging client 116 and includes the messages' MTDs.
  • the proxy server 114 As the header information passes through the proxy server 114, the proxy server 114 generates and assigns CIDs to each message represented by the headers.
  • the proxy server 114 stores 518 the MID to CID mappings.
  • the proxy server 114 proactively contacts the messaging server 112 and requests one or more messages associated with end-users of messaging clients 116 in communication with the proxy server 114.
  • the messaging server 112 provides the messages, ' and the proxy server 114 stores them in its message cache 120.
  • the messaging client 116 requests a message 524 from the messaging server 112.
  • the client 116 references this message by its CID.
  • the proxy server 114 receives the message request and uses the mappings to determine the MID of the message.
  • the proxy server 114 determines 526 if the message identified by the MID is stored in the message cache 120. If the message is not cached, the proxy server 114 requests the message 528 from the messaging server 112 and the messaging server provides the message 530.
  • the proxy server 114 caches 532 the received message.
  • the proxy server 114 provides 534 the cached message to the messaging client 116. In one embodiment, if multiple messaging clients 116 request the same message, the proxy server 114 will provide the cached version of the message rather than obtain a new copy of the message from the messaging server 112. This situation may be encountered, for example, when an email is sent to multiple end-users utilizing the same proxy server 114. The proxy server 114 and cache 120 thus reduce the load on the messaging server 112.
  • the caching policy specifies when the proxy server
  • the caching policy can specify removing the messages after a certain time period, after a certain number of other messages have been cached, after a certain aggregate size of messages have been cached, etc.
  • FIG. 6 is a high-level block diagram illustrating an environment 600 including an embodiment of a relational messaging system using caching.
  • the environment 600 of FIG. 6 includes a network 610, messaging server 612, multiple proxy servers 614, and multiple messaging clients 616. End-users of messaging clients 616 use the messaging system to send messages to other end-users.
  • the messages are stored by the messaging server 612, and components of the messages are stored in caches 618 at the proxy servers.
  • FIG. 6 illustrates the messaging clients 616 directly coupled to the network 610 because in one embodiment the messaging clients directly contact the messaging server 612. However, this difference between FIGS. 1 and 6 does not necessarily mean there are differences in the network structure of the two embodiments.
  • the messaging system shares characteristics with the system described in U.S. Patent Application no. 10/789,461, which is incorporated by reference herein. As described in that application, the messaging system uses a relational model to represent and store messages exchanged among the end-users. Thus, the system of FIG. 6 is referred to as a "relational messaging system.”
  • FIG. 7 is a block diagram illustrating a representation of a message 700 exchanged according to an embodiment of the relational messaging system.
  • a message can be thought of as a container with relational links.
  • the container itself does not contain content, but rather points to submessages and/or attachments in which content resides.
  • an end-user composes and sends a message, she is actually composing a submessage, and then sending a message 700 containing a reference to the submessage 700 to other end-users.
  • the submessage composed and sent by the end-user is called the "current submessage.” Any submessages that were previously in the message are called “history submessages.” For example, if an end-user receives a message containing one submessage, at the time of receipt the single submessage is the current submessage. When the end-user composes and sends a reply, the submessage containing the reply becomes the current submessage, and the other submessage becomes a history submessage.
  • the end-user can also associate one or more attachments with a submessage. In one embodiment, the attachments are relationally linked within a message in the same manner as submessages.
  • the exemplary message 700 of FIG. 7 contains one current submessage 710 and two history submessages 712, 714 representing previously sent submessages within the message 700.
  • FIG. 8 illustrates a set of interactions that explain the relationship among messages 700, current submessages 710, and history submessages 712, 714.
  • the figure illustrates three people, Alice 810, John 812, and Peter 814.
  • Alice 810 composes a message 816 containing submessage A and sends it to John 812.
  • John 812 replies 818 and also copies the message to Peter 814.
  • submessage B is the current submessage and submessage A becomes a history submessage.
  • Alice 810 replies to both John 812 and Peter 814 and sends a third version 820 of the message having a new current submessage C, and two history submessages B and C.
  • FIG. 9 is a high-level block diagram illustrating modules within the messaging server 612 according to one embodiment of the relational messaging system.
  • the messaging server includes a messaging module 910, an auditing module 912, a security module 914, and a governance module 922. These modules respectively contain a message database 916, an audit information database 918, a security database 920, and a governance policy database 924. Although separate modules and databases are illustrated in FIG. 9, in some embodiments these elements are combined and/or distributed in different manners than shown.
  • the messaging server 612 also includes modules illustrated within the messaging server of FIG. 3, such as a message interface module 310 and/or authentication module 312 adapted to interact in the relational messaging system.
  • the message module 910 controls the message database 916.
  • This database 916 stores data related to the messages exchanged using the relational messaging system. These data include the messages, submessages, and attachments and are stored as logically discrete components, meaning that each message, submessage and attachment can be accessed separately, i one embodiment, the message database 916 associates a unique ID with each message, submessage, and attachment. These IDs are utilized throughout the messaging system.
  • the auditing module 912 controls the audit information database 918.
  • This database 918 stores audit information for the relational messaging system.
  • the audit information describes the usage of the messaging system; including a transaction history of the messages, submessages, and attachments. Audit information thus can include data such as which end-users composed which messages/submessages, which users read which messages, which users replied to and/or forwarded which messages, etc.
  • the audit information can also describe characteristics of the messages, submessages, and attachments such as sensitivity levels for particular components (e.g., whether a submessage is secured, cacheable, forwardable, etc.), whether the components can be viewed by particular people, etc.
  • the audit information is distinct from the messages, submessages, and attachments and in one embodiment is managed separately.
  • the security module 914 manages access to secured messages, submessages, and or attachments and allows end- users to view only messages for which they are authorized. As part of this role, the security module 914 controls the security database 920. This database 920 stores security information for the relational messaging system.
  • the security database 920 stores keys utilize to encrypt messages, submessages, and/or attachments provided to the proxy servers 614.
  • each secured message component is encrypted with a different synchronous key using the Advanced Encryption Standard (AES).
  • AES Advanced Encryption Standard
  • the typical key length varies from 128 bits to 4096 bits, depending upon the enterprise's security policy.
  • the key is associated with the secured component, as opposed to being associated with an end-user and/or messaging client 116.
  • the security module 914 can grant a messaging client 616 access to a secured component by providing the client with the component's key.
  • Other embodiments use different types of security schemes, keys and/or key lengths to encrypt and decrypt message components.
  • the governance module 922 controls the governance policy database 924.
  • This database 924 stores governance policies for use by the messaging clients 616 and/or other entities in the messaging system.
  • a governance policy includes one or more governance rules that describe the behaviors, rights, and/or privileges of the messaging client 616 and/or other entity for which the policy is applicable.
  • the governance policy can describe whether the messaging client 616 can cache submessages, attachments, and/or security information.
  • the governance policy can specify whether an end-user can view cached content while the messaging client 616 is offline.
  • FIG. 10 is a high-level block diagram illustrating modules within the proxy server 614 according to one embodiment of the relational messaging system.
  • the proxy server 614 includes a message interface module 1010 for exchanging submessages and/or attachments with the messaging server 612 and messaging clients 616.
  • the proxy server 614 includes a cache management module 1012 that manages the operation of the proxy's cache 618.
  • the cache management module 1012 implements a caching policy according to rules established by an administrator or other entity.
  • the caching policy can operate the cache in pull and/or push mode, as described above.
  • the proxy server 614 receives a request for a submessage and/or attachment from a messaging client 616, the proxy server 614 seeks to fulfill the request using a copy stored in the cache 618.
  • FIG. 11 is a high-level block diagram illustrating modules within the messaging client 616 according to one embodiment of the relational messaging system.
  • the messaging client 616 includes a client module 1110 adapted to utilize the relational messaging system.
  • the client module 1110 is an application dedicated to sending and receiving messages over the relational messaging system. As such, it includes standard functionality for composing messages, viewing messages, replying to and forwarding messages, etc.
  • the client module 1110 operates in tandem with another module, such as a web browser or email application to provide integrated relational messaging functionality.
  • the client module 1110 includes a message cache
  • the client module 1110 for caching submessages and/or attachments received by the client module 1110.
  • the client module 1110 also includes a security cache 1114 for caching security information retrieved from the security database 622 at the messaging server 612.
  • the client module 1110 utilizes the security information in the security cache 1114 to access secured submessages and/or attachments stored in the message cache 1112.
  • the client module 1110 manages both of these caches 1112, 1114 according to a caching policy.
  • the client module 1110 includes a governance module
  • the governance module 1116 for storing one or more governance policies received from the messaging server 612.
  • the governance module 1116 applies the governance policies to the messaging client 616.
  • FIG. 12 is a flow diagram illustrating transactions between a messaging client 616, a proxy server 614, and a messaging server 612 according to one embodiment.
  • FIG. 12 illustrates a specific set of transactions that occur when an end-user of a client 616 is accessing and reading messages.
  • a person of skill in the art will recognize that embodiments of the messaging system can perform the illustrated transactions in orders different than the one shown in FIG. 12. Moreover, other embodiments can include different transactions instead of, or in addition to, the ones described here.
  • the messaging server 612 Assume for purposes of this discussion that the messaging server 612 was in use prior to the transactions illustrated in FIG. 12. As part of this use, the messaging server 612 has stored 1210 multiple messages, including some messages created by and sent to the end-user of the messaging client 616. In addition, the messaging server 612 stores security and audit information for the messages.
  • the messaging client 616 and the messaging server 612 establish 1212 a secure communications channel over the network 610.
  • the channel is opened using SSL or another protocol that allows the client 616 and server 612 to engage in encrypted communications.
  • the messaging client 616 and messaging server 612 exchange 1214 authentication information over the secure channel in order to authenticate 912 the end-user of the messaging client.
  • the messaging client 616 requests 1216 the end-user's messages from the messaging server 612.
  • the messaging server 612 sends 1218 one or more message containers to the client 616.
  • the messages do not include any content. Rather, the messages include links to submessages and any attachments.
  • the messaging client 616 Upon receiving the message containers from the messaging server 612, the messaging client 616 retrieves the submessages referenced therein. In one embodiment, the messaging client 616 queries 1220 its local submessage cache 628 for the submessages. If some or all of the submessages are not cached locally, the messaging client 616 requests 1222 the submessages from the proxy server 614. The proxy server 614 determines 1224 whether the submessages are in its cache 618. If the submessages are not cached, the proxy server 614 obtains 1226, 1228 the submessages from the messaging server 612 and stores 1230 them in its cache 618.
  • the proxy server sends 1232 the cached submessages to the messaging client 616.
  • the messaging client may cache 1234 the submessages upon receipt. The same retrieval process can also be performed for attachments.
  • the messaging client 616 must obtain the security information for the submessages before it can present the messages in a comprehensible format.
  • the messaging client 616 queries 1236 its local security cache 630 for the security information. If some or all of the security information is not cached locally, the messaging client 616 obtains 1238, 1240 the security information from the messaging server 612 and stores 1242 it in its local cache. The messaging client 616 can obtain security information for attachments in the same manner.
  • the security information necessary to access the submessages and/or attachments is not stored or otherwise available to the proxy server 614.
  • a malicious agent or other third party that compromises the proxy server 614 cannot access the submessages.
  • This arrangement thus maintains the security of the messaging system while allowing the submessages and/or attachments to be distributed near the messaging clients 616 on relatively unsecured proxy servers 614.
  • the messaging client 616 similarly does not cache the security information.
  • security information is cached at the proxy server 614.
  • the messaging client 616 uses the security information to decrypt the submessages and/or attachments. Then, the messaging client 616 presents 1244 the messages to the end-user. The messaging client 616 also exchanges 1246 the audit information with the messaging server 612. The audit information exchange 1246 can also occur at other points in the flow shown in FIG 9. In one embodiment, audit information changes frequently during the operation of the messaging system and there are regular audit information exchanges between the messaging client 616 and the messaging server 612.
  • FIG. 13 is a flow diagram illustrating transactions between a messaging client 616, a proxy server 614, and a messaging server 612 according to one embodiment.
  • FIG. 13 illustrates a specific set of transactions that occur when an end-user of a client 616 creates and sends a submessage.
  • a person of skill in the art will recognize that embodiments of the messaging system can perform the illustrated transactions in orders different than the one shown in FIG. 13. Moreover, other embodiments can include different transactions instead of, or in addition to, the ones described here.
  • the end-user uses the messaging client 616 to create 1310 a new submessage.
  • the end-user creates 1310 a new submessage and message by pressing a "new" button on a graphical user interface or performing another equivalent action.
  • the end-user can create a new submessage by replying to or forwarding an existing message.
  • the end-user provides content for the submessage and associates zero or more attachments with it.
  • the end- user also specifies audit information associated with the submessage and/or message.
  • the audit information can include, for example, the creator and the recipients of the message and/or submessage.
  • the messaging client 616 contacts the messaging server 612 and provides 1312 it with the message container and associated audit information indicating that a new submessage has been created.
  • the messaging server 612 generates 1314 an ID for the submessage and, if necessary, for the message.
  • the messaging server 612 stores the ID and associated audit information in the message 916 and audit information 918 databases, respectively.
  • the messaging server 612 also generates the security information for the submessage and stores it in the security database 920.
  • the messaging server 612 provides 1316 the ID, security information and/or any updated audit information to the messaging client 616.
  • the messaging client 616 generates the ID and/or security information locally and provides the information to the messaging server.
  • the messaging client 616 assigns 1318 the ID received from the messaging server 612 to the submessage.
  • the messaging client 61 secures 1318 the submessage using the security information received from the messaging server 612 and stores 1320 the secured submessage and security information in the message 1112 and security 1114 caches, respectively.
  • the messaging client 616 also provides 1322 the secured submessage to the proxy server 614.
  • the proxy server 614 caches 1324 the submessage and also provides 1326 a copy of it to the messaging server 612.
  • the messaging server 612 stores 1328 the submessage in the message database 618.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

A messaging server (112, 612) stores messages exchanged using a messaging system. Messages, and components of messages, are cached (120, 618) closer to the messaging clients (116, 616). Messaging client (116, 616) requests for messages are served from the cache (120, 618) rather than from the messaging server (112, 612). The messages can be secured using security information (920) stored at the messaging server (112, 612). The messaging server (112, 612) sends the security information directly to the messaging clients (116, 616).

Description

CACHING IN AN ELECTRONIC MESSAGING SYSTEM
CROSS-REFERENCE TO RELATED APPLICATIONS
[00013 This application claims the benefit of U.S. Provisional Application Nos. 60/517,230, filed October 31, 2003, 60/527,214, filed December 4, 2003, 60/570,848, filed May 12, 2004, 60/570,861, filed May 12, 2004, 60/612,436, filed September 22, 2004, and 60/612,552, filed September 22, 2004, all of which are hereby incorporated by reference herein. This application is related to U.S. Utility Application No. 10/789,461, filed February 26, 2004, which is hereby incorporated by reference herein.
BACKGROUND OF THE INVENTION FIELD OF THE INVENTION [0002] This invention pertains in general to electronic messaging and in particular to delivery and caching of secure messages via a network such as the Internet.
DESCRIPTION OF THE RELATED ART
[0003] Email is an extremely important communications tool in today's business environment. To a large extent, email has replaced regular mail, telephones, and facsimiles as the preferred method of communication. A typical person in a business or other enterprise can send and receive dozens or hundreds of emails a day. Moreover, the volume of email traffic continues to increase year-after-year.
[00O4] An enterprise thus needs to manage a large, and increasing, volume of email. Most enterprises utilize dedicated email servers to process their email. However, most email servers do not scale to support large numbers of end-users and/or heavy email traffic. Large enterprises having many end-users must therefore have multiple email servers, with each server serving a subset of the total email users. For example, a very large company might have more than 1000 separate email servers.
[0005] Administering multiple email servers is difficult and costly. Each, email server has parameters and policies that must be independently managed. Furthermore, each server also acts as the primary store for its end-users' content, and thus must be backed up regularly. Moreover, it is difficult to perform functions such as auditing and searching because the email content is distributed over multiple locations.
[0006] Centralized data centers have been used to overcome some of the difficulties inherent in managing multiple email servers. In one centralized system, a "server farm" is utilized to run multiple instances of email servers under a single management system. In another centralized system, a scalable back end is added to the email server, thereby allowing the server to support a greater number of users than conventional servers.
[0007] The centralized solutions still have undesirable characteristics. A centralized server for an enterprise is likely to be remote from a large subset of the end-users. Since every email sent or received by an end-user must pass over the connection between the end-user's email client and the central server, the network connection utilized by the central server must support high bandwidth.
[0008] Another undesirable characteristic of centralized mail servers is the high latency for interactions with the email clients. The most common communications protocols utilized between email servers and email clients utilized by enterprises are not optimized for use with wide area networks such as the internet. When a central server is located on a wide area network, such as when the server is supporting an enterprise having multiple geographic locations, the speed of individual email transactions can be quite slow. This slowness detracts from the end-user experience and may hamper the efficiency of the enterprise.
BRIEF SUMMARY OF THE INVENTION
[0009] According to a first aspect of the invention there is provided a computer- implemented method of delivering electronic messages, comprising: providing a messaging client with information identifying electronic messages available to the messaging client; caching copies of the electronic messages close to the messaging client; and responsive to a request from the messaging client for the identified electronic messages, providing the cached copies of the electronic messages to the messaging client.
[0010] An advantage of such a method is that problems of the prior art may at least be reduced. The skilled person will appreciate that such a method will provide a number of technical advantages which address problems in the prior art. For example, when compared to the prior art the method may provide any one or more of the following, non- exhaustive, list of advantages: increased scalability; easier maintenance; reduced bandwidth requirement; reduction in the latency associated with sending and/or receiving an email.
[0011] According to a second aspect of the invention there is provided a computer system adapted to be used in a messaging system, comprising: a cache management module adapted to manage a cache, the cache storing messages exchanged by the messaging system; and an interface module adapted to interface with a messaging client and a messaging server, the interface module adapted to receive messages from the server and provide messages to the client, wherein messages received from the server are stored in the cache and messages provided to the client are provided from the cache.
[0012] Such a system may provide any of the technical advantages associated with the first aspect of the invention. The system may also help to reduce the load on the messaging server which may have the further advantage of reducing the hardware requirement for the messaging server.
[0013] The above need is met by storing messages at a messaging server (112, 612) and caching messages, and components of messages, close to messaging clients (116, 616). Messaging client (116, 616) requests for messages are served from the cache (120, 618) rather than from the messaging server (112, 612). The messages can be secured using security information (920) stored at the messaging server (112, 612) . The messaging server (112, 612) sends the security information directly to the messaging clients (116, 616).
BRIEF DESCRIPTION OF THE DRAWINGS
[0014] FIG. 1 is a high-level block diagram of an environment including an embodiment of a caching messaging system.
[0015] FIG. 2 is a high-level block diagram showing a computer system for acting as a messaging server, proxy server, and/or messaging client according to one embodiment.
[0016] FIG. 3 is a high-level block diagram illustrating modules within the messaging server according to one embodiment.
[0017] FIG. 4 is a high-level block diagram illustrating modules within the proxy server according to one embodiment.
[0018] FIG. 5 is a flow diagram illustrating transactions between a messaging client, a proxy server, and a messaging server according to one embodiment.
[0019] FIG. 6 is a high-level block diagram illustrating an environment including an embodiment of a relational messaging system using caching.
[0020] FIG. 7 is a block diagram illustrating a representation of a message exchanged according to an embodiment of the relational messaging system. [0021] FIG. 8 illustrates a set of interactions that explain the relationship among messages, current submessages, and history submessages.
[0022] FIG. 9 is a high-level block diagram illustrating modules within the messaging server according to one embodiment of the relational messaging system.
[0023] FIG. 10 is a high-level block diagram illustrating modules within the proxy server according to one embodiment of the relational messaging system.
[0024] FIG. 11 is a high-level block diagram illustrating modules within the messaging client according to one embodiment of the relational messaging system.
[0025] FIG. 12 is a flow diagram illustrating transactions between a messaging client, a proxy server, and a messaging server according to one embodiment of the relational messaging system.
[0026] FIG. 13 is a flow diagram illustrating transactions between a messaging client, a proxy server, and a messaging server according to one embodiment of the relational messaging system.
[0027] The figures depict an embodiment of the present invention for purposes of illustration only. One skilled in the art will readily recognize from the following description that alternative embodiments of the structures and methods illustrated herein may be employed without departing from the principles of the invention described herein. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0028] FIG. 1 is a high-level block diagram of an environment 100 including an embodiment of a caching messaging system. In one embodiment, the messaging system is utilized by an enterprise to manage messages received by end-users associated with the enterprise. For example, a company can use the messaging system to manage messages received by employees of the company. Likewise, an Internet Service Provider (ISP) can use the messaging system to manage messages received by end-users of the ISP.
[0029] The environment 100 includes a network 110 connected to a messaging server 112 and two proxy servers 114. In the illustrated embodiment, one proxy server 114A is connected to two messaging clients 116 A, 116B, and the other proxy server 114B is connected to one messaging client 116C. Only two proxy servers 114 and three messaging clients 116 are shown in FIG. 1 for purposes of clarity, but those of skill in the art will recognize that embodiments of the messaging system can have many proxy servers 114 and or messaging clients 116.
[0030] FIG. 1 and the other figures use like reference numerals to identify like elements. A letter after a reference numeral, such as "114A," indicates that the text refers specifically to the element having that particular reference numeral. A reference numeral in the text without a following letter, such as "100," refers to any or all of the elements in the figures bearing that reference numeral (e.g. "100" in the text refers to reference numerals "100A," "100B," and/or "100C" in the figures).
[0031] In general, end-users of messaging clients 116 use the messaging system to exchange messages with other end-users. As used herein, the term "message" refers to a data communication sent by one end-user to one or more end-users of the messaging system. In one embodiment, the messages are emails. In another embodiment, the messages are Short Message Service (SMS) messages, Instant Messages (TMs), Multi- Media Message (MMS) and/or other types of messages. The term "message" can also include media files, such as discrete and/or streaming audio and/or video, still images, etc. In one embodiment, described below, a message is a container having relational links.
[0032] In one embodiment, a message sent by an end-user includes a message body that contains text, images, audio and/or other types of data. A message can also include one or more attachments, which are typically data files associated with the message that a receiving end-user can separate from the message body. An end-user can perform various actions on messages, including composing, sending, reading, replying to, and forwarding.
[0033] The network 110 enables data communication between and among the entities connected to the network and allows the entities to exchange messages. In one embodiment, the network 110 is the Internet. The network 110 can also utilize dedicated or private communications links that are not necessarily part of the Internet. In one embodiment, the network 110 uses standard communications technologies and/or protocols. Thus, the network 110 can include links using technologies such as Ethernet, 802.11, integrated services digital network (ISDN), digital subscriber line (DSL), asynchronous transfer mode (ATM), etc. Similarly, the networking protocols used on the network 110 can include multiprotocol label switching (MPLS), the transmission control protocol/Internet protocol (TCP/IP), the User Datagram Protocol (UDP), the hypertext transport protocol (HTTP), the simple mail transfer protocol (SMTP), the file transfer protocol (FTP), as were the various messaging protocols described below. The data exchanged over the network 110 can be represented using technologies and/or formats including the hypertext markup language (HTML), the extensible markup language (XML), etc. In addition, all or some of links can be encrypted using conventional encryption technologies such as the secure sockets layer (SSL), Secure HTTP and/or virtual private networks (VPNs). In another embodiment, the entities can use custom and/or dedicated data communications technologies instead of, or in addition to, the ones described above.
[0034] In one embodiment, the messaging server 1 12 acts as a central repository for messages received by the end-users of the messaging system. The messaging server 112 can communicate with the messaging clients 116 and proxy servers 114 via the network 110. In addition, the messaging server 112 can communicate with messaging servers and clients outside of the enterprise messaging system via the network 110. In one embodiment, the messaging server 112 receives messages sent from outside the enterprise to end-users within the enterprise and messages sent by end-users within the enterprise to other end-users within the enterprise. In one embodiment, the messaging server 112 provides interfaces that allow other entities in the enterprise, such as the proxy servers 114 and/or messaging clients 116 to retrieve messages from it.
[0035] In one embodiment, the messaging server 1 12 includes a message store database 118 that stores a copy of each message exchanged using the messaging system, or at least a designated subset of the messages exchanged nsing the system. Each message in the database 118 is identified by a unique message identification (MID). In one embodiment, the MID generally corresponds to the "Message-ID" specified in RFC 2111.
[0036] As used herein, the term "database" refers to an information store and does not imply that the data within the database are organized in a particular structure beyond that described herein. Although only a single database 118 is illustrated in FIG. 1, embodiments of the messaging server 112 can utilize multiple databases. In addition, the database 118 can be local or remote to the messaging server 112. The database 118 is illustrated as being local to the messaging server 112 for purposes of clarity.
[0037] A proxy server 114 communicates with the messaging server 112 via the network 110. In addition, the proxy server 114 communicates with one or more messaging clients 116 via the network 110. Although FIG. 1 shows a direct connection between the proxy server 114 and the messaging clients 116, those of skill in the art will recognize that this connection can be made over the network 110. In one embodiment, the proxy server 114 is close to its messaging client 116 in the network sense. The closeness means that the proxy server 114 can usually communicate with the messaging clients 116 at a higher bandwidth and/or lower latency than could the messaging server 112.
[0038] Although the skilled person will appreciate the meaning of the close in networking terms, the following discussion is intended to clarify the meaning in the context of at least the embodiment on the invention being described. It will be appreciated that close may or may not mean physically close. In terms of the current embodiment, generally, close means that a cache is located at a location that is better situated to communicate with the messaging client than is the server. This may for example mean that the cache is physically located closer to the messaging client than the server. Alternatively, or additionally, the cache may be connected to the messaging client with a higher bandwidth connection than is the server. Alternatively, or additionally, the cache may be connected to the messaging client via fewer network hops than is the server. Alternatively, or additionally, the cache may be connected to the messaging client via a link having a lower latency than is the server. Thus, in the embodiment being described, an advantage of caching copies of the electronic messages close to the messaging client is that a user will experience quicker access to his/her emails than if those messages were stored on the server. This has other technical advantages as discussed elsewhere herein.
[0039] In one embodiment, the proxy server 114 acts as a messaging server with respect to the messaging clients 116 and acts as a messaging client with respect to the messaging server 112. Accordingly, the proxy server 114 can exchange messages with the messaging clients 116 and with the messaging server 112.
[0040] In one embodiment, the proxy server 114 includes a message cache 120 for storing messages passing through the proxy server 114. In general, the message cache 120 stores local copies of messages held in the message store database 118. When the proxy server 114 receives a request for a message from a messaging client 116, the proxy server 114 seeks to fulfill the request using a copy of the message stored in the message cache 120. This arrangement decreases the latency of providing the message to the messaging client, and reduces both the processing and bandwidth requirements for the messaging server 112. [0041 ] The messaging client 116 is a device utilized by an end-user to compose, view, and perform other tasks with the messages. The messaging client 116 is connected to the network 110 and can communicate with the proxy server 114, messaging server 112, and/or other entities coupled to the network, h one embodiment, the messaging client 116 is a computer system executing standard messaging software, such as MICROSOFT OUTLOOK or LOTUS NOTES. Depending upon the embodiment, some or all of the clients 116 can be other types of electronic devices, such as personal digital assistants (PDAs), cellular telephones with text messaging functionality, portable email devices, etc. In one embodiment using MAP, a messaging client 116 identifies a message using a client ID (CID) (the CID is known as the "unique ID" or "UTD" in IMAP). The CID uniquely identifies a message only with respect to the messaging client 116 that receives the message, and different clients can use the same CID to identify different messages.
[0042] In an embodiment of the system described above, the messaging server
112 receives messages destined for end-users associated with the enterprise. The messaging server 112 stores the message in the message store database 118. The system also causes a copy of the message to be stored at the proxy server 114 closest to the recipient. The messaging clients 116 retrieve messages -from the proxy servers 114 rather than the messaging server 112, thereby reducing demand on the messaging server 112. Accordingly, the system allows the administrative convenience of a centralized messaging system, yet reduces processing and bandwidth demands on the central server by distributing messages closer to the messaging clients 116. [0043] FIG. 2 is a high-level block diagram showing a computer system 200 for acting as a messaging server, proxy server, and/or messaging client according to one embodiment. Illustrated are at least one processor 202 coupled to a bus 204. Also coupled to the bus 204 are a memory 206, a storage device 208, a keyboard 210, a graphics adapter 212, a pointing device 214, and a network adapter 216. A display 218 is coupled to the graphics adapter 212. Computer systems acting in different roles may have different and/or additional elements than the ones shown in FIG. 2. For example, a computer system 200 acting as a messaging server 112 may have greater processing power and a larger storage device than a computer system acting as a messaging client 116. Likewise, a computer system acting as a proxy server 114 may lack devices such as a display 218 and/or keyboard 210 that are not necessarily required to operate the proxy server.
[0044] The processor 202 is a general-purpose processor such as an INTEL x86,
SUN MICROSYSTEMS SPARC, or POWERPC compatible-CPU. The memory 206 is, for example, firmware, read-only memory (ROM), non- volatile random access memory (NVRAM), and/or RAM, and holds instructions and data used by the processor 202. The pointing device 214 is a mouse, track ball, pressure sensitive pad or other type of pointing device, and is used in combination with the keyboard 210 to input data into the computer system 200. The graphics adapter 212 displays images and other information on the display 218. The network adapter 216 couples the computer system 200 to the network 110. The storage device 208 is a hard disk drive and/or another device capable of storing data, such as a solid-state memory device. [0045] As is known in the art, the computer system 200 is adapted to execute computer program modules. As used herein, the term "module" refers to computer program logic for providing the specified functionality. A module can be implemented in hardware, firmware, and/or software. In one embodiment, the modules are stored on the storage device 208. When utilized, the modules are loaded into the memory 206 and executed by the processor 202.
[0046] FIG. 3 is a high-level block diagram illustrating modules within the messaging server 112 according to one embodiment. Those of skill in the art will understand that other embodiments of the messaging server 112 and the other entities can have different and/or other modules than the ones described herein. In addition, the functionalities can be distributed among the modules in a manner different than described herein.
[0047] In the embodiment of FIG. 3, the messaging server 112 includes a message interface module 310 for exchanging messages with other entities. In one embodiment, the message interface module 310 supports standard protocols for receiving messages from other entities on the network. These message-receiving protocols include, for example, the Simple Mail Transfer Protocol (SMTP), Messaging Application Program Interface (MAPI), and/or Notes Remote Procedure Call (NRPC). In one embodiment, the message interface module 310 supports standard protocols for sending messages to other entities on the network. These message-sending protocols include, for example, the Internet Message Access Protocol (IMAP), Post Office Protocol 3 (POP3), MAPI, and/or NRPC. Through these protocols, the message interface module 310 can send some or all of a message, such as just the header or just the message body. [0048] The messaging server 112 includes an authentication module 312 for authenticating end-users of the messaging system. In one embodiment, the authentication module 312 maintains a login/password pair for each end-user. If an end-user supplies a correct login and password pair, the end-user is granted access to the messages of the end-user having the login. Other embodiments use different authentication schemes.
[0049] A message structure module 314 holds structural information related to the end-users' messages. This structural information includes, for example, the end-users' mail folders, folder contents, message flags, and/or control information pertaining to the end-user and/or end-users' messages. In one embodiment, the structural information includes the MID for each message.
[0050] FIG. 3 also illustrates the message store database 118. Some or all of the information described above, such as the structural information, is stored in the message store database 118 in one embodiment. In other embodiments, other databases are used to store the information.
[0051] FIG. 4 is a high-level block diagram illustrating modules within the proxy server 114 according to one embodiment. The proxy server 114 includes a message interface module 410 for exchanging messages with other entities. In one embodiment, the message interface module 410 of the proxy server 114 supports the same general functionality as the corresponding module 310 of the messaging server, although the two modules need not be the same. The message interface module 410 stores messages received from the messaging server 112 in the message cache 120 and provides messages stored in the cache to the messaging clients. [0052] hi one embodiment, a message mapping module 412 tracks mappings between MIDs used by the messaging server 112 and CIDs used by the messaging clients 116. The message mapping module 412 monitors communications between messaging clients 116 and the messaging server 112 and establishes a state object for each communications session. The message mapping module 412 stores the MID and CID mappings in the state object. Thus, when a client provides a CID, the data in the message mapping module 412 can be used by the message interface module 410 to identify the MID, and message, corresponding to that client's CID.
[0053] In one embodiment, a cache management module 414 manages the operation of the message cache 120. The cache management module 414 implements a caching policy according to rules established by an administrator or other entity. The caching policy specifies information such as what types of data are cached, how long data are retained in the cache, and/or whether to proactively obtain data for the cache. In one embodiment, the caching policy can operate the cache 120 in one or more of at least two modes: pull and push. In pull mode, when the proxy server 114 receives a message request from a messaging client 116 it inspects the cache 120 to determine whether it already contains the message. If the cache 120 does not contain the message, the cache obtains the message from the messaging server 112. In push mode, the cache 120 receives some or all messages from the messaging server 112 in advance of requests from the messaging clients 116. Thus, in push mode the cache 120 is likely to already have a message before a client 116 asks for it.
[0054] FIG. 5 is a flow diagram illustrating transactions between a messaging client 116, a proxy server 114, and a messaging server 112 according to one embodiment. In the illustration, the three entities are labeled at the top of the figure and are represented by vertical lines descending from the labels. Horizontal lines represent interactions between the entities and text boxes represent actions performed by the entities. In general, time flows from top to bottom in the figure. However, a person of skill in the art will recognize that embodiments of the messaging system can perform the illustrated transactions in orders different than the one shown in FIG. 5. Moreover, other embodiments can include different transactions instead of, or in addition to, the ones described here.
[0055] In the interactions of FIG. 5, the proxy server 114 acts as an intermediary between the messaging client 116 and the messaging server 112. The messaging client 116 interacts with the proxy server 114 and the proxy server behaves as if it were the messaging server 114. Likewise, the messaging server 112 interacts with the proxy server 114 and the proxy server behaves as if it were the messaging client 116.
[0056] In FIG. 5, the messaging client 116 and the messaging server 112 exchange 510 authentication information in order to authenticate the end-user of the messaging client. The proxy server 114 monitors this transaction and, upon successful authentication, creates 512 a session object for tracking state related to the communications session between the messaging client 116 and messaging server 112. After being authenticated, the messaging client 116 typically requests and receives 514 the structural information from the messaging server 112. The proxy server 114 transparently passes the structural information to the messaging client 116. [0057] In one embodiment, the messaging client 116 requests and receives header information 516. This transaction can occur as part of the structural information transfer and/or as a separate request. The header information includes the headers of any messages sent to the end-user of the messaging client 116 and includes the messages' MTDs. As the header information passes through the proxy server 114, the proxy server 114 generates and assigns CIDs to each message represented by the headers. The proxy server 114 stores 518 the MID to CID mappings.
[0058] Depending upon the caching policy implemented by the proxy server 114, in one embodiment the proxy server 114 proactively contacts the messaging server 112 and requests one or more messages associated with end-users of messaging clients 116 in communication with the proxy server 114. The messaging server 112 provides the messages,' and the proxy server 114 stores them in its message cache 120.
[0059] At some point, the messaging client 116 requests a message 524 from the messaging server 112. The client 116 references this message by its CID. The proxy server 114 receives the message request and uses the mappings to determine the MID of the message. The proxy server 114 determines 526 if the message identified by the MID is stored in the message cache 120. If the message is not cached, the proxy server 114 requests the message 528 from the messaging server 112 and the messaging server provides the message 530. The proxy server 114 caches 532 the received message.
[0060] The proxy server 114 provides 534 the cached message to the messaging client 116. In one embodiment, if multiple messaging clients 116 request the same message, the proxy server 114 will provide the cached version of the message rather than obtain a new copy of the message from the messaging server 112. This situation may be encountered, for example, when an email is sent to multiple end-users utilizing the same proxy server 114. The proxy server 114 and cache 120 thus reduce the load on the messaging server 112.
[0061 ] In one embodiment, the caching policy specifies when the proxy server
114 should remove 536 messages from the cache 120. For example, the caching policy can specify removing the messages after a certain time period, after a certain number of other messages have been cached, after a certain aggregate size of messages have been cached, etc.
[0062] FIG. 6 is a high-level block diagram illustrating an environment 600 including an embodiment of a relational messaging system using caching. The environment 600 of FIG. 6 includes a network 610, messaging server 612, multiple proxy servers 614, and multiple messaging clients 616. End-users of messaging clients 616 use the messaging system to send messages to other end-users. The messages are stored by the messaging server 612, and components of the messages are stored in caches 618 at the proxy servers. FIG. 6 illustrates the messaging clients 616 directly coupled to the network 610 because in one embodiment the messaging clients directly contact the messaging server 612. However, this difference between FIGS. 1 and 6 does not necessarily mean there are differences in the network structure of the two embodiments.
[0063] In the embodiment of FIG. 6, the messaging system shares characteristics with the system described in U.S. Patent Application no. 10/789,461, which is incorporated by reference herein. As described in that application, the messaging system uses a relational model to represent and store messages exchanged among the end-users. Thus, the system of FIG. 6 is referred to as a "relational messaging system."
[0064] FIG. 7 is a block diagram illustrating a representation of a message 700 exchanged according to an embodiment of the relational messaging system. In this embodiment, a message can be thought of as a container with relational links. The container itself does not contain content, but rather points to submessages and/or attachments in which content resides. When an end-user composes and sends a message, she is actually composing a submessage, and then sending a message 700 containing a reference to the submessage 700 to other end-users. The submessage composed and sent by the end-user is called the "current submessage." Any submessages that were previously in the message are called "history submessages." For example, if an end-user receives a message containing one submessage, at the time of receipt the single submessage is the current submessage. When the end-user composes and sends a reply, the submessage containing the reply becomes the current submessage, and the other submessage becomes a history submessage. The end-user can also associate one or more attachments with a submessage. In one embodiment, the attachments are relationally linked within a message in the same manner as submessages. Thus, attachments can be treated in the same manner as submessages and descriptions of submessages contained herein are equally applicable to attachments. The exemplary message 700 of FIG. 7 contains one current submessage 710 and two history submessages 712, 714 representing previously sent submessages within the message 700.
[0065] FIG. 8 illustrates a set of interactions that explain the relationship among messages 700, current submessages 710, and history submessages 712, 714. The figure illustrates three people, Alice 810, John 812, and Peter 814. Initially, Alice 810 composes a message 816 containing submessage A and sends it to John 812. John 812 replies 818 and also copies the message to Peter 814. In the reply 818, submessage B is the current submessage and submessage A becomes a history submessage. Next, Alice 810 replies to both John 812 and Peter 814 and sends a third version 820 of the message having a new current submessage C, and two history submessages B and C.
[0066] FIG. 9 is a high-level block diagram illustrating modules within the messaging server 612 according to one embodiment of the relational messaging system. In the illustrated embodiment, the messaging server includes a messaging module 910, an auditing module 912, a security module 914, and a governance module 922. These modules respectively contain a message database 916, an audit information database 918, a security database 920, and a governance policy database 924. Although separate modules and databases are illustrated in FIG. 9, in some embodiments these elements are combined and/or distributed in different manners than shown. In one embodiment the messaging server 612 also includes modules illustrated within the messaging server of FIG. 3, such as a message interface module 310 and/or authentication module 312 adapted to interact in the relational messaging system.
[0067] The message module 910 controls the message database 916. This database 916 stores data related to the messages exchanged using the relational messaging system. These data include the messages, submessages, and attachments and are stored as logically discrete components, meaning that each message, submessage and attachment can be accessed separately, i one embodiment, the message database 916 associates a unique ID with each message, submessage, and attachment. These IDs are utilized throughout the messaging system.
[0068] The auditing module 912 controls the audit information database 918.
This database 918 stores audit information for the relational messaging system. The audit information describes the usage of the messaging system; including a transaction history of the messages, submessages, and attachments. Audit information thus can include data such as which end-users composed which messages/submessages, which users read which messages, which users replied to and/or forwarded which messages, etc. The audit information can also describe characteristics of the messages, submessages, and attachments such as sensitivity levels for particular components (e.g., whether a submessage is secured, cacheable, forwardable, etc.), whether the components can be viewed by particular people, etc. The audit information is distinct from the messages, submessages, and attachments and in one embodiment is managed separately.
[0069] In one embodiment, some or all of the information in the message database 916 is secured to prohibit unauthorized access. The security module 914 manages access to secured messages, submessages, and or attachments and allows end- users to view only messages for which they are authorized. As part of this role, the security module 914 controls the security database 920. This database 920 stores security information for the relational messaging system.
[0070] In one embodiment, the security database 920 stores keys utilize to encrypt messages, submessages, and/or attachments provided to the proxy servers 614. In one embodiment, each secured message component is encrypted with a different synchronous key using the Advanced Encryption Standard (AES). The typical key length varies from 128 bits to 4096 bits, depending upon the enterprise's security policy. The key is associated with the secured component, as opposed to being associated with an end-user and/or messaging client 116. Thus, the security module 914 can grant a messaging client 616 access to a secured component by providing the client with the component's key. Other embodiments use different types of security schemes, keys and/or key lengths to encrypt and decrypt message components.
[0071] The governance module 922 controls the governance policy database 924.
This database 924 stores governance policies for use by the messaging clients 616 and/or other entities in the messaging system. A governance policy includes one or more governance rules that describe the behaviors, rights, and/or privileges of the messaging client 616 and/or other entity for which the policy is applicable. For example, the governance policy can describe whether the messaging client 616 can cache submessages, attachments, and/or security information. Likewise, the governance policy can specify whether an end-user can view cached content while the messaging client 616 is offline.
[0072] FIG. 10 is a high-level block diagram illustrating modules within the proxy server 614 according to one embodiment of the relational messaging system. The proxy server 614 includes a message interface module 1010 for exchanging submessages and/or attachments with the messaging server 612 and messaging clients 616.
[0073] In one embodiment, the proxy server 614 includes a cache management module 1012 that manages the operation of the proxy's cache 618. The cache management module 1012 implements a caching policy according to rules established by an administrator or other entity. The caching policy can operate the cache in pull and/or push mode, as described above. When the proxy server 614 receives a request for a submessage and/or attachment from a messaging client 616, the proxy server 614 seeks to fulfill the request using a copy stored in the cache 618.
[0074] FIG. 11 is a high-level block diagram illustrating modules within the messaging client 616 according to one embodiment of the relational messaging system. The messaging client 616 includes a client module 1110 adapted to utilize the relational messaging system. In one embodiment, the client module 1110 is an application dedicated to sending and receiving messages over the relational messaging system. As such, it includes standard functionality for composing messages, viewing messages, replying to and forwarding messages, etc. In another embodiment, the client module 1110 operates in tandem with another module, such as a web browser or email application to provide integrated relational messaging functionality.
[0075] In one embodiment, the client module 1110 includes a message cache
1112 for caching submessages and/or attachments received by the client module 1110. The client module 1110 also includes a security cache 1114 for caching security information retrieved from the security database 622 at the messaging server 612. The client module 1110 utilizes the security information in the security cache 1114 to access secured submessages and/or attachments stored in the message cache 1112. The client module 1110 manages both of these caches 1112, 1114 according to a caching policy. [0076] In one embodiment, the client module 1110 includes a governance module
1116 for storing one or more governance policies received from the messaging server 612. The governance module 1116 applies the governance policies to the messaging client 616.
[0077] FIG. 12 is a flow diagram illustrating transactions between a messaging client 616, a proxy server 614, and a messaging server 612 according to one embodiment. FIG. 12 illustrates a specific set of transactions that occur when an end-user of a client 616 is accessing and reading messages. A person of skill in the art will recognize that embodiments of the messaging system can perform the illustrated transactions in orders different than the one shown in FIG. 12. Moreover, other embodiments can include different transactions instead of, or in addition to, the ones described here.
[0078] Assume for purposes of this discussion that the messaging server 612 was in use prior to the transactions illustrated in FIG. 12. As part of this use, the messaging server 612 has stored 1210 multiple messages, including some messages created by and sent to the end-user of the messaging client 616. In addition, the messaging server 612 stores security and audit information for the messages.
[0079] The messaging client 616 and the messaging server 612 establish 1212 a secure communications channel over the network 610. In one embodiment, the channel is opened using SSL or another protocol that allows the client 616 and server 612 to engage in encrypted communications. The messaging client 616 and messaging server 612 exchange 1214 authentication information over the secure channel in order to authenticate 912 the end-user of the messaging client. [0080] Once the end-user is authenticated, the messaging client 616 requests 1216 the end-user's messages from the messaging server 612. In response, the messaging server 612 sends 1218 one or more message containers to the client 616. The messages do not include any content. Rather, the messages include links to submessages and any attachments.
[0081 ] Upon receiving the message containers from the messaging server 612, the messaging client 616 retrieves the submessages referenced therein. In one embodiment, the messaging client 616 queries 1220 its local submessage cache 628 for the submessages. If some or all of the submessages are not cached locally, the messaging client 616 requests 1222 the submessages from the proxy server 614. The proxy server 614 determines 1224 whether the submessages are in its cache 618. If the submessages are not cached, the proxy server 614 obtains 1226, 1228 the submessages from the messaging server 612 and stores 1230 them in its cache 618. If the submessages are cached at the proxy server 614, or after the submessages are retrieved from the messaging server 612, the proxy server sends 1232 the cached submessages to the messaging client 616. The messaging client may cache 1234 the submessages upon receipt. The same retrieval process can also be performed for attachments.
[0082] hi an embodiment where the submessages are secured, the messaging client 616 must obtain the security information for the submessages before it can present the messages in a comprehensible format. In one embodiment, the messaging client 616 queries 1236 its local security cache 630 for the security information. If some or all of the security information is not cached locally, the messaging client 616 obtains 1238, 1240 the security information from the messaging server 612 and stores 1242 it in its local cache. The messaging client 616 can obtain security information for attachments in the same manner.
[0083] In the embodiment described here, the security information necessary to access the submessages and/or attachments is not stored or otherwise available to the proxy server 614. As a result, a malicious agent or other third party that compromises the proxy server 614 cannot access the submessages. This arrangement thus maintains the security of the messaging system while allowing the submessages and/or attachments to be distributed near the messaging clients 616 on relatively unsecured proxy servers 614. In one embodiment, the messaging client 616 similarly does not cache the security information. In alternative embodiments, security information is cached at the proxy server 614.
[0084] The messaging client 616 uses the security information to decrypt the submessages and/or attachments. Then, the messaging client 616 presents 1244 the messages to the end-user. The messaging client 616 also exchanges 1246 the audit information with the messaging server 612. The audit information exchange 1246 can also occur at other points in the flow shown in FIG 9. In one embodiment, audit information changes frequently during the operation of the messaging system and there are regular audit information exchanges between the messaging client 616 and the messaging server 612.
[0085] FIG. 13 is a flow diagram illustrating transactions between a messaging client 616, a proxy server 614, and a messaging server 612 according to one embodiment. FIG. 13 illustrates a specific set of transactions that occur when an end-user of a client 616 creates and sends a submessage. A person of skill in the art will recognize that embodiments of the messaging system can perform the illustrated transactions in orders different than the one shown in FIG. 13. Moreover, other embodiments can include different transactions instead of, or in addition to, the ones described here.
[0086] The end-user uses the messaging client 616 to create 1310 a new submessage. In one embodiment, the end-user creates 1310 a new submessage and message by pressing a "new" button on a graphical user interface or performing another equivalent action. Similarly, the end-user can create a new submessage by replying to or forwarding an existing message. The end-user provides content for the submessage and associates zero or more attachments with it. As part of the messaging process, the end- user also specifies audit information associated with the submessage and/or message. The audit information can include, for example, the creator and the recipients of the message and/or submessage.
[0087] In one embodiment, the messaging client 616 contacts the messaging server 612 and provides 1312 it with the message container and associated audit information indicating that a new submessage has been created. The messaging server 612 generates 1314 an ID for the submessage and, if necessary, for the message. The messaging server 612 stores the ID and associated audit information in the message 916 and audit information 918 databases, respectively. The messaging server 612 also generates the security information for the submessage and stores it in the security database 920. The messaging server 612 provides 1316 the ID, security information and/or any updated audit information to the messaging client 616. In an alternative embodiment, the messaging client 616 generates the ID and/or security information locally and provides the information to the messaging server.
[0088] The messaging client 616 assigns 1318 the ID received from the messaging server 612 to the submessage. The messaging client 61 secures 1318 the submessage using the security information received from the messaging server 612 and stores 1320 the secured submessage and security information in the message 1112 and security 1114 caches, respectively. The messaging client 616 also provides 1322 the secured submessage to the proxy server 614. The proxy server 614 caches 1324 the submessage and also provides 1326 a copy of it to the messaging server 612. The messaging server 612 stores 1328 the submessage in the message database 618.
[0089] In sum, the messaging systems described herein provide the benefits of a centralized messaging system but uses caching to eliminate the drawbacks traditionally found in such systems. The above description is included to illustrate the operation of the preferred embodiments and is not meant to limit the scope of the invention. The scope of the invention is to be limited only by the following claims. From the above discussion, many variations will be apparent to one skilled in the relevant art that would yet be encompassed by the spirit and scope of the invention.

Claims

CLAIMSWe claim:
1. A computer-implemented method of delivering electronic messages, comprising: providing a messaging client with information identifying electronic messages available to the messaging client; caching copies of the electronic messages close to the messaging client; and responsive to a request from the messaging client for the identified electronic messages, providing the cached copies of the electronic messages to the messaging client.
2. The method of claim 1, further comprising: securing the electronic messages using security information, wherein the secured messages are cached close to the messaging client; and responsive to a request from the messaging client, providing the security information for the secured messages to the messaging client.
3. The method of claim 1 or 2, wherein the information identifying electronic messages comprises a message container having relational links to submessages, copies of the submessages are cached close to the messaging client, and the cached copies of the submessages are provided to the messaging client responsive to the request.
4. The method of any preceding claim, further comprising: providing the messaging client with audit information describing transaction histories of the electronic messages provided to the messaging client.
5. The method of any preceding claim, further comprising: creating a mapping of client identifiers, used by the messaging client to identify electronic messages destined for the messaging client, to message identifiers utilized by a messaging server to identify the electronic messages destined for the messaging client; and responsive to receiving a request from the messaging client for an electronic message identified with a client identifier, determining the message identifier for the electronic message.
6. The method of any preceding claim, wherein caching copies of the electronic messages occurs responsive to receiving the request from the messaging client for the identified electronic messages.
7. The method of any preceding claim, wherein caching copies of the electromc message occurs prior to receiving the request from the messaging client for the identified electromc message.
8. The method of any preceding claim, wherein the electronic messages are emails and wherein the messaging client requests the emails using one or more email protocols from the group consisting of: the Simple Mail Transfer Protocol (SMTP), the Messaging Application Program Interface (MAPI), the Notes Remote Procedure Call (NRPC), the Internet Message Access Protocol (IMAP), and the Post Office Protocol 3 (POP3).
9. A computer system adapted to be used in a messaging system, comprising: a cache management module adapted to manage a cache, the cache storing messages exchanged by the messaging system; and an interface module adapted to interface with a messaging client and a messaging server, the interface module adapted to receive messages from the server and provide messages to the client, wherein messages received from the server are stored in the cache and messages provided to the client are provided from the cache.
10. The computer system of claim 9, wherein the messaging client uses client identifiers to identify message exchanged by the messaging system and wherein the messaging server uses message identifiers to identify the messages, further comprising: a message mapping module adapted to maintain mappings between the client identifiers and the message server identifiers, wherein the cache identifies messages using the message identifiers and the messaging module is adapted to receive a client identifier from a messaging client and utilize the mapping to identify a corresponding message in the cache.
11. The computer system of claim 10, wherein the message mapping module is adapted to monitor a communications session between the messaging client and the messaging server and track message and client identifier mappings for the session.
12. The computer system of any of claims 9 to 11 , wherein a message is an email and wherein the interface module supports one or more email protocols from the group consisting of: the Simple Mail Transfer Protocol (SMTP), the Messaging Application Program Interface (MAPI), the Notes Remote Procedure Call (NRPC), the Internet Message Access Protocol (IMAP), and the Post Office Protocol 3 (POP3).
13. The computer system of any of claims 9 to 12, wherein the messaging system is a relational messaging system, messages are comprised of submessages, and the cache management module stores the submessages in the cache.
14. A messagmg server in a relational messaging system, comprising: a messaging module adapted to control a message database storing messages exchanged in the relational messaging system, each message comprising one or more submessages; a security module adapted to control a security database storing security information for the submessages in the message database; and an interface module adapted to interact with a messaging client and a proxy server, the interface module adapted to provide the security information to the messaging client and the submessages to the proxy server, wherein the proxy server is adapted to cache the submessages and, wherein the messaging client is adapted to retrieve the cached submessages from the proxy server and access the submessages using the security information.
15. The messaging server of claim 14, further comprising: an auditing module adapted to control an audit information database storing audit information describing usage of the relational messaging system, wherein the interface module is adapted to provide the audit information to the messaging client and receive audit information from the messaging client and store it in the audit information database.
16. The messaging server of claim 14 or 15, wherein a message in the message database comprises: a message container containing relational links to one or more submessages and wherein the interface module is adapted to provide the message container to the messaging client.
17. The messaging server of any of claims 14 to 16, wherein a message in the message database comprises: a current submessage specifying a most recent submessage in the message; and a history submessage specifying a previous current submessage.
18. The messaging server of any of claims 14 to 17 , wherein at least some of the submessages in the message database are encrypted and wherein the security database stores keys for decrypting the submessages.
19. The messaging server of any of claims 14 to 18, further comprising: a governance module adapted to control a governance policy database storing governance policies describing rights of the messaging client, wherein the interface module is adapted to provide the governance policy to the messaging client.
20. A computer program product having a computer-readable medium having embodied thereon program code adapted to be used in a messaging system, comprising: a cache management module adapted to manage a cache, the cache storing messages exchanged by the messaging system; and an interface module adapted to interface with a messaging client and a messaging server, the interface module adapted to receive messages from the server and provide messages to the client, wherein messages received from the server are stored in the cache and messages provided to the client are provided from the cache.
21. The computer program product of claim 20, wherein the messaging client uses client identifiers to identify message exchanged by the messaging system and wherein the messaging server uses message identifiers to identify the messages, further comprising: a message mapping module adapted to maintain mappings between the client identifiers and the message identifiers, wherein the cache identifies messages using the message identifiers and the messaging module is adapted to receive a client identifier from a messaging client and utilize the mapping to identify a corresponding essage in the cache.
22. The computer program product of claim 21 , wherein the message mapping module is adapted to monitor a communications session between the messaging client and the messaging server and track message and client identifier mappings for the session.
23. The computer program product of any of claims 19 to 22, wherein a message is an email and wherein the interface module supports one or more email protocols from the group consisting of: the Simple Mail Transfer Protocol (SMTP), the Messaging Application Program Interface (MAPI), the Notes Remote Procedure Call (NRPC), the Internet Message Access Protocol (IMAP), and the Post Office Protocol 3 (POP3).
24. The computer program product of any of claims 19 to 23 wherein the messaging system is a relational messaging system, messages are comprised of submessages, and the cache management module stores the submessages in the cache.
25. A computer program product having a computer-readable medium having embodied thereon program code adapted to be used in a relational messaging system, comprising: a messaging module adapted to control a message database storing messages exchanged in the relational messaging system, each message comprising one or more submessages; a security module adapted to control a security database storing security information for the submessages in the message database; and an interface module adapted to interact with a messaging client and a proxy server, the interface module adapted to provide the security information to the messaging client and the submessages to the proxy server, wherein the proxy server is adapted to cache the submessages and, wherein the messaging client is adapted to retrieve the cached submessages from the proxy server and access the submessages using the security information.
26. The computer program product of claim 25, further comprising: an auditing module adapted to control an audit information database storing audit information describing usage of the relational messaging system, wherein the interface module is adapted to provide the audit information to the messaging client and receive audit information from the messaging client and store it in the audit information database.
27. The computer program product of claim 25 or 26, wherein a message in the message database comprises: a message container containing relational links to one or more submessages and wherein the interface module is adapted to provide the message container to the messaging client.
28. The computer program product of any of claims 25 to 27, wherein a message in the message database comprises: a current submessage specifying a most recent submessage in the message; and a history submessage specifying a previous current submessage.
29. The computer program product of any of claims 25 to 28, wherein at least some of the submessages in the message database are encrypted and wherein the security database stores keys for decrypting the submessages.
30. The computer program product of any of claims 25 to 29, further comprising: a governance module adapted to control a governance policy database storing governance policies describing rights of the messaging client, wherein the interface module is adapted to provide the governance policy to the messaging client.
31. A relational messaging system adapted to exchange messages with a messaging client, comprising: a messaging server adapted to store messages exchanged in the relational messaging system, each message comprising a container having links to one or more submessages and further adapted to provide the container to the messaging client; and a proxy server adapted to cache submessages received from the messaging server and further adapted to provide the cached submessages to the messaging client.
32. The relational messaging system of claim 31, wherein submessages stored by the messaging server are secured and wherein the messaging server further comprises: a security module adapted to control a security database storing security information for the submessages in the message database; and an interface module adapted to provide the security information to the messaging client to allow the messaging client to access the submessages.
33. The relational messaging system of claim 31 or 32, further comprising: an auditing module adapted to control an audit information database storing audit information describing usage of the relational messaging system, wherein the interface module is adapted to provide the audit information to the messaging client and receive audit information from the messaging client and store it in the audit information database.
34. The relational messaging system of any of claims 31 to 33, wherein the proxy server comprises: a cache management module adapted to retrieve submessages destined for the messaging client from the messaging server prior to receiving a request from the messaging client for the submessages.
35. The relational messaging system of any of claims 31 to 34, wherein the proxy server comprises: a cache management module adapted to retrieve submessages destined for the messaging client from the messaging server responsive to receiving a request from the messaging client for the messages.
EP04798344A 2003-10-31 2004-11-01 Caching in an electronic messaging system Withdrawn EP1683314A1 (en)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US51723003P 2003-10-31 2003-10-31
US52721403P 2003-12-04 2003-12-04
US10/789,461 US20040260710A1 (en) 2003-02-28 2004-02-26 Messaging system
PCT/GB2004/000805 WO2004077770A1 (en) 2003-02-28 2004-02-27 Messaging system
US57086104P 2004-05-12 2004-05-12
US57084804P 2004-05-12 2004-05-12
US61243604P 2004-09-22 2004-09-22
US61255204P 2004-09-22 2004-09-22
PCT/GB2004/004609 WO2005046148A1 (en) 2003-10-31 2004-11-01 Caching in an electronic messaging system

Publications (1)

Publication Number Publication Date
EP1683314A1 true EP1683314A1 (en) 2006-07-26

Family

ID=34577993

Family Applications (1)

Application Number Title Priority Date Filing Date
EP04798344A Withdrawn EP1683314A1 (en) 2003-10-31 2004-11-01 Caching in an electronic messaging system

Country Status (2)

Country Link
EP (1) EP1683314A1 (en)
WO (1) WO2005046148A1 (en)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8307036B2 (en) 2005-09-27 2012-11-06 Research In Motion Limited Email server with enhanced least recently used (LRU) cache
US8296369B2 (en) 2005-09-27 2012-10-23 Research In Motion Limited Email server with proxy caching of unique identifiers
CA2621649C (en) * 2005-09-27 2009-12-22 Teamon Systems, Inc. Email server with proxy caching of unique identifiers
CA2622409C (en) * 2005-09-27 2010-02-09 Teamon Systems, Inc. Email server with least recently used cache
ATE533264T1 (en) 2005-09-27 2011-11-15 Teamon Systems Inc EMAIL SERVER WITH PROXY CACHING OF MESSAGE IDENTIFIERS AND RELATED METHODS
WO2007040520A1 (en) * 2005-09-29 2007-04-12 Teamon Systems, Inc. System and method for reconciling email messages between a mobile wireless communications device and electronic mailbox
US8275841B2 (en) * 2005-11-23 2012-09-25 Skype Method and system for delivering messages in a communication system
US20080270548A1 (en) * 2007-04-24 2008-10-30 Danger, Inc. Apparatus and method for caching email messages within a wireless data service
US9166941B2 (en) 2007-04-24 2015-10-20 Microsoft Technology Licensing, Llc Synchronizing email messages between external and local email servers and/or a wireless device
GB2469469B (en) 2009-04-14 2015-06-10 Skype Method and system for data transmission
GB2518542B (en) 2009-04-14 2015-07-08 Skype Transmitting and receiving data
CN112121413B (en) * 2020-09-30 2024-10-15 腾讯科技(深圳)有限公司 Response method, system, device, terminal and medium for function service

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6704772B1 (en) * 1999-09-20 2004-03-09 Microsoft Corporation Thread based email
US20030055907A1 (en) * 2001-09-18 2003-03-20 Todd Stiers Clientless electronic mail MIME attachment re-delivery system via the web to reduce network bandwidth usage

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See references of WO2005046148A1 *

Also Published As

Publication number Publication date
WO2005046148A1 (en) 2005-05-19

Similar Documents

Publication Publication Date Title
US20200403959A1 (en) Instant messaging interoperability between disparate service providers
US6415318B1 (en) Inter-enterprise messaging system using bridgehead servers
US9165285B2 (en) Shared attachments
US8166118B1 (en) Secure communication architecture, protocols, and methods
US7849213B1 (en) Secure communication architecture, protocols, and methods
US9548956B2 (en) Journaling, analysis, and archiving of electronic communications
US8166112B2 (en) Virtual mail storage for mail distributed using corporate distribution lists
JP2004518316A (en) Transparent implementation using value-added electronic messaging services and intermediate servers
US20050144242A1 (en) Caching in an electronic messaging system
US20120198233A1 (en) Method for recalling a message and devices thereof
US7769724B2 (en) System and method for providing S/MIME-based document distribution via electronic mail mechanisms
EP1751937A1 (en) Enforcing compliance policies in a messaging system
SG176438A1 (en) A system and method for managing data across multiple environments
US20050223076A1 (en) Cooperative spam control
WO2009058649A2 (en) Pre-send evaluation of e-mail communications
US20060086798A1 (en) Deferred email message system and service
EP1683314A1 (en) Caching in an electronic messaging system
US20060184634A1 (en) Electronic mail system using email tickler
US20060174118A1 (en) System and method for providing S/MIME-based document distribution via electronic mail mechanisms
US8112482B1 (en) System and method for securing access to electronic mail
US20040267557A1 (en) [electronic data management system and method using remote synchronized backup technique for specialized outsourcing]
Kangasharju et al. Secure and resilient peer-to-peer e-mail design and implementation
US20050198168A1 (en) Messaging protocol discovery
Martínez et al. A Real World Example of a Distributed E-Mail System
Thomson Internet-Draft Mozilla Intended status: Standards Track E. Damaggio Expires: April 25, 2017 B. Raymor, Ed. Microsoft

Legal Events

Date Code Title Description
PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

17P Request for examination filed

Effective date: 20060526

AK Designated contracting states

Kind code of ref document: A1

Designated state(s): AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LI LU MC NL PL PT RO SE SI SK TR

DAX Request for extension of the european patent (deleted)
17Q First examination report despatched

Effective date: 20070518

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE APPLICATION IS DEEMED TO BE WITHDRAWN

18D Application deemed to be withdrawn

Effective date: 20071129