Methods and systems to resolve message group
Claim Score by NHIP
Abstract
A method and system for resolving addresses of a message including looking up, from a source directory, a group name associated with a message address of the message, looking up through a cache of user names mapped to user addresses, a user address for each of the looked up user names and returning an associated user address, and addressing the message to each looked up user addresses. Expanding group address by looking up user name in for group from source directory, looking up user address for each user name from user cache, addressing message to looked up user, address, and transmitting message to looked up user address.

Term
5.5 yearsto projected expiry
Projected expiry 12 March 2032, counted from filing; an application has no term until it is granted.
- Priority
- Filed
- Published
- Today
- Projected expiry
20 claims: 4 independent, 16 dependent
- 1A method of transmitting a message addressed to at least one group address associated with a group, the method comprising:a) expanding a group address by looking up one or more user names for members of a group associated with the group address from a source directory;b) looking up an user address for each of the one or more user names from a user cache comprising a snapshot of information from the source directory including user names mapped to user addresses;c) addressing the message to each looked up user address;and d) transmitting the message to each looked up user address.
- 12A system for resolving addresses of a message, the system comprising:a) a source directory comprising a database of group names and associated user names, and user names and associated user addresses, b) a user cache from the source directory of user names mapped to user addresses, c) a message agent configured for looking up one or more user names for members of a group associated with a message address from a source directory, configured for looking up the user addresses for the one or more user names from the user cache, configured for addressing the message to the looked up user addresses, and configured for transmitting the message to the looked up user addresses.
- 18Broadest claimClaim Score 80, broad(NHIP)A method in a mobile device of transmitting a message to be encrypted, the message addressed to at least one group address associated with a group, the method comprising:receiving an instruction to compose a message to a group address;receiving an instruction to encrypt the message;receiving an instruction to send the message to a message agent;and transmitting the message to the message agent with an instruction to encrypt the message, wherein the message is subsequently encrypted and transmitted to each user address associated with members of the group.
- 20A method of resolving message addresses of a message to be encrypted, the method comprising:a) looking up, from a user cache, a user address associated with a message address, and if the lookup returns that the message address is unresolved which indicates that the message address had been previously looked up as a user name in a source directory but was not found, treat the message address as a group address, by: a. looking up, from the source directory, a group name associated with the message address and one or more user names for members of the group associated with the group name;b. looking up an user address for each of the one or more user names from the user cache;c. if the user address associated with the user name is not found in the user cache, then looking up the user address associated with the user name from the source directory, and if the user address is returned then adding the user address associated with the user name to the user cache for future lookups. d. if the user address associated with the user name is not found in the source directory then adding the user name as an unresolved message address in the user cache and treat the user name as a group address, returning to a);b) looking up, from the user cache or the source directory, encryption keys for encryption associated with each of the one or more user names;c) addressing the message to the looked up user addresses and encrypting the message using the looked up encryption keys;and d) transmitting the message to each looked up user address.
Independent claims4
119 paragraphs in 4 sections, as filed
CROSS REFERENCE TO RELATED APPLICATIONS
p-0002This application claims priority from, and is entitled to the benefit of the filing date of U.S. patent application No. 61/080,922 entitled METHODS AND SYSTEMS TO RESOLVE MESSAGE GROUP filed Jul. 15, 2008. The content of the above application is hereby incorporated by reference into the detailed description hereof.
BACKGROUND
p-0003The present description relates to messaging applications that send and receive messages and, in particular, to methods and systems for resolving a message group.
p-0004Message addresses are often organized in groups to identify message addresses to which certain information should be sent. Such groups can provide authentication for the message address to ensure that only those that are authorized to receive the message receive a message. For example, financial information about a company may be authorized for only an executive group of the company. A message address group entitled “Executive” could be set up on a message server of the company. Whenever a message is to be sent to the “Executive” group then a message server is instructed to resolve the members of the group and send the message to each of them. This process can be resource intensive resulting in degradation of system performance.
p-0005It would be advantageous for there to exist improved or alternative methods and systems for the expansion of a message group.
BRIEF DESCRIPTION OF THE DRAWINGS
p-0006Reference will now be made, by way of example, to the accompanying drawings which show example embodiments of the present invention, and in which:
p-0007<figref idrefs="DRAWINGS">FIG. 1</figref> shows a block diagram of a message client and a system to which an example embodiment of an aspect of the present invention can be applied, in conjunction with further example details that could be utilized are provided in the remaining FIGS.;
p-0008<figref idrefs="DRAWINGS">FIG. 2</figref> shows a graphic illustration of example records that may be used in the system of <figref idrefs="DRAWINGS">FIG. 1</figref>;
p-0009<figref idrefs="DRAWINGS">FIG. 3</figref> shows, in diagrammatic form, an example flowchart of the respective operations of the client and the system of <figref idrefs="DRAWINGS">FIG. 1</figref>;
p-0010<figref idrefs="DRAWINGS">FIG. 4</figref> shows, in diagrammatic form, an illustrative example of user name resolution utilizing the system of <figref idrefs="DRAWINGS">FIG. 1</figref> operating in accordance with the flowchart of <figref idrefs="DRAWINGS">FIG. 3</figref>, where all user names are found in a cache;
p-0011<figref idrefs="DRAWINGS">FIG. 5</figref> shows, in diagrammatic form, a further illustrative example of user name resolution base utilizing the system of <figref idrefs="DRAWINGS">FIG. 1</figref> operating in accordance with the flowchart of <figref idrefs="DRAWINGS">FIG. 3</figref>, where a user name is not found in a cache;
p-0012<figref idrefs="DRAWINGS">FIG. 6</figref> shows, in diagrammatic form, an illustrative example of respective operations performed by a message agent and a message server in encrypting messages utilizing the system of <figref idrefs="DRAWINGS">FIG. 1</figref> operating in accordance with an example embodiment of the flowchart of <figref idrefs="DRAWINGS">FIG. 3</figref>;
p-0013<figref idrefs="DRAWINGS">FIGS. 7-10</figref> show example layouts of user interface displays which may be presented in conjunction with a messaging client such as that shown in <figref idrefs="DRAWINGS">FIG. 1</figref> to a user;
p-0014<figref idrefs="DRAWINGS">FIG. 11</figref> shows, in diagrammatic form, an illustrative example of message address resolution utilizing the system of <figref idrefs="DRAWINGS">FIG. 1</figref> operating in accordance with the flowchart of <figref idrefs="DRAWINGS">FIG. 3</figref>, including nested message addresses and mixed message addresses;
p-0015<figref idrefs="DRAWINGS">FIG. 12</figref> shows a further example message client and a system to which an example embodiment of an aspect of the present invention can be applied; and
p-0016<figref idrefs="DRAWINGS">FIG. 13</figref> shows in greater detail one example embodiment of the client and system of <figref idrefs="DRAWINGS">FIG. 12</figref>.
p-0017Similar reference numerals may have been used in different figures to denote similar components.
DESCRIPTION OF EXAMPLE EMBODIMENTS
p-0018The problem of consumption of system resources for group message resolution is especially true where a message is to be encrypted as additional steps are required to resolve the group and also to obtain required encryption information for individual members, such as an encryption key. This can multiply when groups are nested within other groups. Also, some message servers are unable to resolve group addresses for messages to be encrypted. This means that the group must be resolved prior to sending the message to the server for encryption and transmission, which results in numerous calls to the server.
p-0019The present description relates to telecommunications systems, including multimedia telecommunications systems, which may be implemented using a variety of electronic and optical technologies, including but not limited to: analog electronic systems; digital electronic systems; microprocessors and other processing elements; and software and otherwise embodied collections of steps, instructions, and the like, for implementing methods, processes, or policies in conjunction with such systems and processing elements. It will be appreciated that in the telecommunications arts, various signal leads, busses, data paths, data structures, channels, buffers, message-passing interfaces, and other communications paths may be used to implement a facility, structure, link or method for conveying information or signals, and are often functionally equivalent. Such functional equivalents are included within the scope of this description. The terms “interconnected” and “operatively coupled” are intended to refer interchangeably to a connection between components that allows data to pass therebetween, perhaps through one or more intermediate components.
p-0020In this description, reference is made to certain terms as follows: A “source directory” refers to a database of information that is defined to be current. A “cache” reflects a snapshot of information from the source directory that may be out of date since the snapshot was taken. A “user name” is the name recognized by a server for obtaining associated information about a user, including a user address and, possibly, a user encryption key. The “user encryption key” may be for example a public key used for encryption of a message to be decrypted by a separate private encryption key provided by the user when attempting to decrypt a message. The user encryption key may be associated with a digital certificate. Other forms of encryption may also be used apart from public key/private key encryption.
p-0021Any references herein to “messages” are not intended to be limited to e-mail, but should be understood to include other types of messages that one skilled in the art would understand to be possible in the context in which the term is being used. Other types of messages may include, for example, text messages, audio messages, video messages, SMS messages and other items, including calendar entries, tasks, and other date-related items.
p-0022For simplicity this description will be made with reference to message addresses with a format that has two portions and an @ symbol at the dividing point between the two portions. For the purposes of this description message addresses can be user addresses or group addresses.
p-0023For a user address, one portion is typically the user name that is set up with an address provider, for example a network administrator, and stored in the source directory for use by the server. Information about the user is mapped to the user name in the source directory, such as for example a user address and encryption key. The user name is frequently in the form of the name or nickname of the person associated with the user address. The second portion identifies the host name, or an alias thereof, of a server that receives or handles messages, such as e-mail, for the user identified in the first portion. Host names typically have two or more parts, separated by dots. The part on the left is the most specific, and the part on the right is the most general. In some cases, for example, the host name portion of a message address may not be specified because it may be implicit. For instance, in some cases it may be assumed that messages addressed to any address without a host name may be delivered to or through a default mail handling server of an entity, such as a company or a service provider from which the message is sent, such that the host name or alias of that server need not be specified.
p-0024Group addresses can have a format similar to that of a user address; however, it is to be recognized that a group address represents a group of addresses which may be user addresses or further group addresses. For a group address, one portion is typically the group name that is set up with an address provider, for example a network administrator, and stored in the source directory for use by the server. Information about the group is mapped to the group name in the source directory, such as for example a list of members (by user name). The group name is frequently in the form of the name or nickname of the group associated with the group address. Again, the second portion identifies the host name, or an alias thereof, of a server that receives or handles e-mail for the group identified in the first portion.
p-0025Although, the aforementioned description of a particular format for message addresses is consistent with that used in many extant messaging systems, it is to be recognized, as mentioned previously, that the embodiments described herein can be extended to message addresses in other formats.
p-0026As an overview and before referring to the Figures for additional details, reference will be made herein to a system (and methods related thereto) as an example including facilities that allow a group address to be resolved by expanding the group address into user addresses by looking up user names for members of the group associated with the group address from a source directory then looking up an user address for each of the user names through a user cache of user names mapped to user addresses. The system also includes facilities to resolve the group address to a group name and to look up user names for members of the group based on the group name. The system further includes facilities to encrypt the message and transmit it to the user addresses. The system also includes facilities to transmit a request for transmission of the message to a group address and for encryption of the message prior to resolving the group address. The system also includes facilities to lookup encryption keys for encryption from a source directory using the user names from the cache.
p-0027The resolution of group addresses in this manner is acceptable for use with messages to be encrypted as the security risk of sending a message to an out of date user address for a correct user name or using an out of date digital certificate for a correct user name is low. The most likely result is that a message will either not be received or will be received and not be able to be decrypted. If the message is not received then the sender may receive an undeliverable message warning and know to resend the message. When the cache is updated, the message will be deliverable. If a message is received but not able to be decrypted then the recipient can ask to have the message resent. Again, when the cache is updated, the message will be able to be decrypted. By using the source directory to lookup user names associated with a group, messages are unlikely to be addressed to incorrect users.
p-0028Further details around the basic system and methods described above can include facilities and method steps for checking in a group cache to see if a group name has already been looked up for a message, for example because it appears already as a group name in the message addresses or nested within a previously resolved group name for the message. If so, the process can be stopped for the group name as it need not be repeated. Similarly, there may be provided facilities and method steps for checking in the user cache to see if a user name has already been looked up for a message, for example because it appears already as a user name in the message addresses or nested within a previously resolved group name for the message, or it was looked up by default as a user name even though it was a group name. If so, the process can be stopped for look up as a user name as it need not be repeated. To facilitate the above checks, an indication when a message address has been looked up as a user name for a message can be added to the user cache, and an indication when a message address has been looked up as a group name for a message can be added to the group cache. Such indications for group names are cleared when the address resolution has completed for a message. If the lookup of a user name in the cache fails then the user name can be looked up in the server for use with the message and the relevant information can also be added to the user cache for future lookups. The process for resolution of group names can be called recursively to resolve nested group names. A check can be performed to limit the number of nesting levels checked to defend against circular, self-referential, or very deep (and time-consuming) groups. Such groups could exist naturally, or be created as an exploit attempt.
p-0029Referring now to the drawings, in <figref idrefs="DRAWINGS">FIG. 1</figref> a system <b>1</b> for sending messages from a message client <b>3</b> provides an example environment in which example embodiments of aspects of the application may be used. It will be appreciated that aspects of the application may be applied to other environments with or without modifications, which modifications would be within the ability of one of skill in the art.
p-0030The system <b>1</b> includes one or more message servers <b>5</b>, one of which is shown in <figref idrefs="DRAWINGS">FIG. 1</figref>. It also include one or more source directories <b>7</b> for the message server <b>5</b>, which hold message related data, including for example group records <b>9</b>, user address records <b>11</b> and user encryption key records <b>13</b>. It is to be understood that the source directories may contain other data, such as for example sent messages, draft messages, received messages, contacts and other data the description of which is being omitted for clarity.
p-0031Referring to <figref idrefs="DRAWINGS">FIG. 2</figref>, example group record <b>9</b>, user address records <b>11</b><i>a, </i><b>11</b><i>b, </i><b>11</b><i>c </i>and user encryption key records <b>13</b><i>a, </i><b>13</b><i>b, </i><b>13</b><i>c </i>are shown in further detail. The group record <b>9</b> shows a group name XY with user names A, B, C. User address record <b>11</b><i>a </i>shows for example a user name A with a user address A@EXAMPLE.COM. User encryption key record <b>13</b><i>a </i>shows a user name A with a user encryption key LMN. The user address record <b>11</b><i>a, </i><b>11</b><i>b, </i><b>11</b><i>c </i>can be merged with the user encryption key records <b>13</b><i>a, </i><b>13</b><i>b, </i><b>13</b><i>c, </i>respectively, if desired. The user names in the member list of the group record <b>9</b> can be used as pointers to the user names in the respective user address records <b>11</b><i>a, </i><b>11</b><i>b, </i><b>11</b><i>c </i>and user encryption key records <b>13</b><i>a, </i><b>13</b><i>b, </i><b>13</b><i>c, </i>as indicated by the arrows in <figref idrefs="DRAWINGS">FIG. 2</figref>.
p-0032Referring again to <figref idrefs="DRAWINGS">FIG. 1</figref>, the system <b>1</b> further includes a message agent <b>15</b> that performs message related processing. In the example shown in <figref idrefs="DRAWINGS">FIG. 1</figref>, the message agent <b>15</b> is shown independent of the message server <b>5</b>. It is to be understood that the message agent <b>15</b> and/or all or part of the messaging functions described in respect of the message agent <b>15</b> can form part of the message server <b>5</b> with consequent modification to the system <b>1</b>. In the embodiment described later an example is described wherein the message server <b>5</b> and the message agent <b>15</b> are provided by different entities and adapted to the purposes described. Accordingly, the message agent <b>15</b> and message server <b>5</b> are described independently for that embodiment. It is noted that some embodiments of the methods and systems described herein may provide additional improvements over simply searching the source directory <b>7</b> through the server <b>5</b> to resolve message addresses where communication between the message agent <b>15</b> and the server <b>5</b> utilize (or, but for the techniques described herein, would utilize), an application programming interface (API) of the message server <b>5</b> which can involve significant time and resources.
p-0033A user cache <b>17</b> is provided for the message agent <b>15</b>. The cache <b>17</b> stores and provides access to user data by user name, such as user address records <b>18</b> and, possibly, user encryption key records <b>19</b>. The user data is accessible to the message agent <b>15</b> without having to access the data in the source directories <b>7</b>, directly or through the message server <b>5</b>. The cache <b>17</b> is stored in a location that is quickly accessible by the message agent <b>15</b> and reduces effect on system <b>1</b> performance when compared to accessing the same data in the source directories <b>7</b> through the message server <b>5</b>. For example, user cache <b>17</b> may be realized in a random access memory of the message agent <b>15</b>. It is to be recognized that the cache <b>17</b> could be in another location that is quickly accessible to the message agent <b>15</b> and reduces effect on system <b>1</b> performance, including but for example local disk storage or network-accessible storage facilities. As groups may have many users, the benefit of the cache <b>17</b> can be significant.
p-0034The cache <b>17</b> is nominally divided into two portions: a resolved user portion <b>20</b><i>a </i>containing user data, such as records <b>18</b>, <b>19</b>, for user names that have been found on the source directory <b>7</b>, and an unresolved user name portion <b>20</b><i>b </i>containing a list of message addresses that have been looked up as user names in the source directory <b>7</b> but not found as user names (“unresolved user names”). The resolved user portion <b>20</b><i>a </i>and unresolved user portion <b>20</b><i>b </i>are shown for ease of illustration as divided by dividing line <b>20</b><i>c; </i>however, it is to be recognized that this is a notional dividing line only. The portions <b>20</b><i>a, </i><b>20</b><i>b </i>may simply be entries in a single memory structure or the cache <b>17</b> can be divided among a plurality of memory structures as appropriate for a given installation or configuration. The cache <b>17</b> persists for resolution of message addresses for successive messages. Example factors that may be taken into account in managing the cache are discussed later in this description.
p-0035A group cache <b>20</b><i>d </i>is also provided for use by the message agent <b>15</b>. The group cache <b>20</b><i>d </i>is a list that stores message addresses previously looked up as group addresses for a particular message. The group cache <b>20</b><i>d </i>provides an indication of whether or not a looked up message address is in the cache <b>20</b><i>d. </i>Entry in the group cache <b>20</b><i>d </i>represent whether or not a message address has already been looked up as a group address for the particular message. The group cache <b>20</b><i>d </i>is used by the message agent <b>15</b> to determine if a message address has already been looked up as a group address for the particular message. If a message address has earlier been looked up as a group address for the particular message, either the look-up will have been successful, in which case the members of the group will already have been resolved to recipient addresses and added to the list of message recipients, or the look-up will have been unsuccessful. In either case, it is not necessary to attempt to look up again the same message address as part of processing the message addresses for the particular message. Accordingly, presence of a message address in the group cache <b>20</b><i>d </i>inhibits subsequent look-ups by message agent <b>15</b> of the same address during the processing of recipient addresses for the particular message. The group cache <b>20</b><i>d </i>is cleared after resolution of the message addresses for each message. The group cache <b>20</b><i>d </i>is temporary in the sense that its content does not persist between messages. The group cache <b>20</b><i>d </i>is stored in a location that is quickly accessible by the message agent <b>15</b>.
p-0036In some embodiments the group cache <b>20</b><i>d </i>can also store with the message address an indication of whether or not a lookup was performed for the message address on the server <b>5</b> to determine if the message address was a group address. This indication is stored in the cache <b>20</b><i>d </i>as it is possible that, where the nesting level of the message address is too deep, the message address may be stored in the cache <b>20</b><i>d </i>even though a lookup on the server <b>5</b> has not been performed. The indication of whether or not a lookup was performed on the server <b>5</b> can be used to determine whether or not a lookup should be performed or skipped if the message address is encountered again for the same message.
p-0037It is to be noted that group names can also serve as group addresses as mentioned previously. Accordingly, group names are also stored in the group cache <b>20</b><i>d </i>as group addresses where the longer form of group addresses, or an alias, was originally used as the group address to initiate the lookup. Server <b>5</b>, as with most extant servers <b>5</b>, is able to resolve a long form of group address, or alias, to a group name provided this association is stored in the source directory <b>7</b>. Accordingly, the server <b>5</b> is used to resolve from long form group addresses, or other aliases, to group names. It is recognized that this function could be fully or partially performed elsewhere. For example, for message addresses in RFC-822 format, the message agent <b>15</b> could extract the local-part of the address (that is, the portion before an @ symbol), and the message agent <b>15</b> could initiate a lookup, using that portion as a group name.
p-0038A typical configuration for the system <b>1</b> includes a network <b>21</b>, such as a local area network, for communication between the message agent <b>15</b>, the message server <b>5</b> and the source directories <b>7</b>. As shown in <figref idrefs="DRAWINGS">FIG. 1</figref>, the message agent <b>15</b> may be connected for communication to the message client <b>3</b> through a network <b>23</b>. The network <b>23</b> may, for example, be a carrier-operated data network, such as a cellular network, PCS, or other wireless network or other network incorporating wireless handheld devices (see example embodiment described later below) on which the message client <b>3</b> is operating. In alternative embodiments the client <b>3</b> may be connected to the network <b>21</b> for communication with the message agent <b>15</b>.
p-0039Each of the message agent <b>15</b> and message server <b>5</b> may be implemented using one or more appropriate software programs implemented on compatible hardware to perform the functions described herein. For example, each of message agent <b>15</b> and message server <b>5</b> may be realized using commercial server computers having Intel™ IA-32-based processors and running an operating system in the Microsoft Windows Server™ family, such as Windows Server 2003.
p-0040Referring to <figref idrefs="DRAWINGS">FIG. 3</figref>, a flowchart of example functions of the client <b>3</b> and the system <b>1</b> are shown. For clarity, a dividing line <b>30</b> in <figref idrefs="DRAWINGS">FIG. 3</figref> is used to illustrate an example division of functions between the client <b>3</b> and the system <b>1</b>, as will be further described below.
p-0041At <b>41</b> the client <b>3</b> receives user instruction to compose a message <b>42</b> to a group. At <b>43</b> the client <b>3</b> receives user instruction to encrypt the message <b>42</b>. At <b>45</b> the client <b>3</b> receives user instruction to send the message <b>42</b>. At <b>47</b> the client <b>3</b> transmits the message <b>42</b> to the message agent <b>15</b> including an instruction to encrypt the message <b>42</b>. In the example embodiments described herein, encryption of message <b>42</b> is performed on the message server <b>5</b> for, on behalf of, or as a service to, the message agent <b>15</b>. Many commercially-available message servers <b>5</b> include encryption capabilities and it is most efficient to use such capabilities. It would be possible to perform encryption elsewhere, for example at the message agent <b>15</b> by providing such capabilities at the message agent <b>15</b>. Message <b>42</b> depicts elements of an example message format, including parameters defining the encoding, recipient and body of the message <b>42</b>. The encoding mentioned by way of example in <figref idrefs="DRAWINGS">FIG. 3</figref> is NNE, Notes Native Encryption. Other forms of encryption, including for example conventional public key encryption, conventional private key encryption, and commercially-available encryption technologies such as those available from RSA Data Security, could also be used. Other formats for the message and instructions to encrypt the message could also be used.
p-0042At <b>48</b>, the system <b>1</b> receives the message and instructions to encrypt the message from the client <b>3</b>. At <b>49</b>, the system <b>1</b> expands the group name into a list of user names of the group from the source directory <b>7</b>. At <b>51</b>, the system <b>1</b> looks up a user address for each of the user names through the user data cache <b>17</b> containing mappings of user names to user addresses. At <b>53</b>, the system <b>1</b> encrypts the message and transmits it to the associated user address.
p-0043Referring to <figref idrefs="DRAWINGS">FIG. 4</figref>, an operational example illustrates example functions within the system <b>1</b> when operating in accordance with an example embodiment of the flowchart of <figref idrefs="DRAWINGS">FIG. 3</figref>, where all user names are in the cache <b>17</b>. For clarity, dividing lines <b>55</b>, <b>57</b> are used to divide the functions of the message agent <b>15</b>, cache <b>17</b> and message server <b>5</b> from left to right. As mentioned previously, the particular division of the functions amongst the message agent <b>15</b> and the server <b>5</b> described herein is an example only. Other allocations of these functions could also be used without departing from the spirit of the present disclosure.
p-0044At <b>59</b>, message agent <b>15</b> receives message <b>42</b> (<figref idrefs="DRAWINGS">FIG. 3</figref>) to be sent with encryption. Continuing with the example message <b>42</b> used earlier in connection with <figref idrefs="DRAWINGS">FIG. 3</figref>, message <b>42</b> is addressed to group address XY@EXAMPLE.COM. At <b>61</b>, the message agent <b>15</b> looks up the group name using the group address (XY@EXAMPLE.COM) of the message <b>42</b> through the server <b>5</b> from the source directory <b>7</b>. At <b>63</b>, the server <b>5</b> returns user names A, B, C of the members of group name XY. Where, as in this example, the group address is provided in a two part format then the server <b>5</b> can resolve the group address to a group name. For example, the server <b>5</b> may check that the server <b>5</b> is the appropriate server for the host named in the host name portion of the group address, and may then extract the group name as that portion of the address before the @ symbol. At <b>65</b>, the message agent <b>15</b> looks up user name A in the cache <b>17</b>. At <b>67</b>, the cache <b>17</b> returns message address A@EXAMPLE.COM for user name A. At <b>69</b> user name A is set as a recipient of the message by the message agent <b>15</b>. Steps <b>65</b>, <b>67</b> and <b>69</b> are repeated for B at <b>71</b>, <b>72</b>, <b>73</b>, and C at <b>75</b>, <b>76</b>, <b>77</b>. The above description assumes that it is known that XY@EXAMPLE.COM is a group name and that the user names and associated user addresses for A, B and C have been previously populated in the cache <b>17</b>.
p-0045Referring to <figref idrefs="DRAWINGS">FIG. 5</figref>, an operational example illustrates example functions within the system <b>1</b> when operating in accordance with an example embodiment of the flowchart of <figref idrefs="DRAWINGS">FIG. 3</figref>, where the message address is not initially known to be a group address, and the message address is initially missing from the user cache <b>17</b>. Those steps that are the same from <figref idrefs="DRAWINGS">FIG. 4</figref> are referenced with the same reference numerals, and the description is not repeated. At <b>79</b>, the message agent <b>15</b> first looks up the message address as a user address in the cache <b>17</b>. Although the address is actually a group address, it is not initially recognized as such by message agent <b>15</b>. At <b>81</b>, the cache <b>17</b> returns the message address as unresolved because it is stored as an entry for the user address in the cache <b>17</b>. In <b>61</b> through <b>71</b>, the message agent <b>15</b> then continues to look up the group address as in <figref idrefs="DRAWINGS">FIG. 4</figref>. At <b>83</b>, the cache <b>17</b> returns a failure to find B as an entry in the cache <b>17</b> under the user name B. At <b>85</b>, the message agent <b>15</b> looks up B as a user name through the message server <b>5</b>. At <b>87</b> the message server <b>5</b> finds the user name B in the directory <b>7</b> and returns B@EXAMPLE.COM as the user address. At <b>89</b>, the message agent <b>15</b> instructs the cache <b>17</b> to add an entry in the cache <b>17</b> with B as a user name and B@EXAMPLE.COM as the associated user address. At <b>91</b>, the cache <b>17</b> adds B, and associated User Name: B, User Address: B@EXAMPLE.COM to the cache <b>17</b>. At <b>73</b> through <b>77</b>, user C is looked up in the cache, and the corresponding address is set as an address to which the message will be sent, as in <figref idrefs="DRAWINGS">FIG. 4</figref>.
p-0046The above illustrates how the cache <b>17</b> can be populated. In the embodiment described above, initially the cache <b>17</b> would have been empty and then populated through repeated calls to the server <b>5</b>. It has been found that removing individual data entries (user names, user addresses) that have been in the cache <b>17</b> for four hours is acceptable in the environment described further below. For example, if User Name A is added to the cache <b>17</b> at 2 pm and User Name B is added at 3 pm then User Name A would be removed at 6 pm and User Name B would be removed at 7 pm. If desired the cache <b>17</b> could be refreshed in its entirety so as not to require server <b>5</b> look ups; however, this may cause unnecessary network traffic and longer cache <b>17</b> look up times. As another alternative, the cache <b>17</b> could refresh frequently used user addresses. Other cache management or refresh strategies and other cache tenancy times may also be used, depending in part on such factors as, by way of example, how much storage is available for the cache <b>17</b>, the rate of messaging transactions, and the rate of changes to the source directory (thereby invalidating the contents of the cache <b>17</b>).
p-0047To maximize clarity in the initial description of the operation of an example system <b>1</b>, the most straightforward example instances of operation are described. In particular, messages with multiple message addresses or nested message addresses may be encountered, for which additional processing steps may be desirable. Example techniques for handling such messages will be discussed later in this description.
p-0048Referring to <figref idrefs="DRAWINGS">FIG. 6</figref>, an illustrative example of respective operations performed by message agent <b>15</b> and message server <b>5</b> in encrypting messages in accordance with an example embodiment of the flowchart of <figref idrefs="DRAWINGS">FIG. 3</figref> is shown. At <b>94</b>, the message agent <b>15</b> requests the message server <b>5</b> to encrypt a message <b>95</b>. The format of the message <b>95</b> contains the user names A, B, C as recipients and the body “test”. The format of the message <b>95</b> is similar to the format of the messages <b>42</b> in previous FIGS; although, it is noted that the specific example message addresses have been altered in <figref idrefs="DRAWINGS">FIG. 6</figref> to illustrate the concepts of the example embodiment now being discussed. User names found earlier are re-used in the request to the server <b>5</b> to further benefit from the functions described herein; however, the message agent <b>15</b> could resolve the user name again through the server <b>5</b> or the cache <b>17</b> if desired. At <b>96</b>, the server <b>5</b> then looks up the respective encryption key LMN, MNL, NLM to be used for each recipient A, B, C and returns separate encrypted messages <b>97</b> for each recipient (one such message <b>97</b> for recipient A being shown in <figref idrefs="DRAWINGS">FIG. 6</figref>). At <b>98</b>, the message agent <b>15</b> receives the encrypted messages <b>97</b> and requests the server <b>5</b> to transmit messages <b>99</b> (again, one such message <b>99</b> for recipient A being shown in <figref idrefs="DRAWINGS">FIG. 6</figref>). At <b>100</b>, the server <b>5</b> transmits the messages to the recipients A, B, C. Alternatively, if supported by the server <b>5</b>, the server <b>5</b> can at <b>96</b> encrypt and return one message <b>97</b> for all recipients A, B, C and, at <b>98</b>, the message agent <b>15</b> can receive the encrypted message <b>97</b> and request the server <b>5</b> to transmit message <b>99</b>. At <b>100</b>, the server <b>5</b> then transmits the message to the recipients A, B, C.
p-0049Referring to <figref idrefs="DRAWINGS">FIGS. 7-10</figref> various example user interface displays <b>101</b>, <b>103</b>, <b>105</b>, <b>107</b> may be displayed on a message client <b>3</b> to a user while the client carries out steps <b>41</b>, <b>43</b>, <b>45</b> of <figref idrefs="DRAWINGS">FIG. 3</figref>. The user interface displays <b>101</b>, <b>103</b>, <b>105</b>, <b>107</b> depicted in <figref idrefs="DRAWINGS">FIGS. 7-10</figref> are of a size and aspect ratio that may be used, for example, on a handheld wireless client <b>3</b>. The client <b>3</b> has input devices such as a point and click device and a keyboard (not shown) for entry of text and navigation through menu items. The client <b>3</b> may take other forms, such as a personal computer connected to the Internet through a wired or wireless connection (not shown). Other input devices such as for example a mouse, trackball or tablet (not shown) could also be used. Alternate displays, not shown, may be used as appropriate or desired for the message client <b>3</b>, for example, to carry out the functions and provide features described herein.
p-0050Referring to <figref idrefs="DRAWINGS">FIG. 7</figref>, a user addresses a message by entering a group address (XY@EXAMPLE.COM) as a message address into a TO: field <b>109</b> of display <b>101</b>. As shown, after the user enters at least a part of a group name recognized by the client <b>3</b>, the group name may appear in a drop down box <b>110</b> for selection to enter into the field <b>109</b>.
p-0051Referring to <figref idrefs="DRAWINGS">FIG. 8</figref>, a user may enter into display <b>103</b> a particular encoding type selection for entry into an encoding field <b>111</b>. Similarly to <figref idrefs="DRAWINGS">FIG. 7</figref>, the encoding may be selected from a drop down box <b>112</b> for entry into the field <b>111</b>. The type of encoding may include encryption, such as for example LOTUS NOTES™ Encryption or other types of encryption mentioned previously.
p-0052Referring to <figref idrefs="DRAWINGS">FIG. 9</figref>, a user may enter into display <b>105</b> a subject of a message into a Subject: field <b>113</b> and a body of a message into a body field <b>114</b>.
p-0053Referring to <figref idrefs="DRAWINGS">FIG. 10</figref>, a user may instruct the client <b>3</b> to send the message through a drop down box <b>115</b> overlaid on display <b>107</b>.
p-0054A further example embodiment of steps of a method is illustrated later below in pseudo code that could be implemented, for example, by incorporating one or more computer programs for operation on the system <b>1</b> in the message agent <b>15</b> to interact with the caches <b>17</b>, <b>20</b><i>d </i>and the server <b>5</b> to resolve group addresses to members, user names and user addresses in accordance, for example, with the flowchart of <figref idrefs="DRAWINGS">FIG. 3</figref>. The embodiment sets out two primary function calls based generally on the steps set out in the flowchart in <figref idrefs="DRAWINGS">FIG. 3</figref> and the more detailed examples in <figref idrefs="DRAWINGS">FIGS. 4 and 5</figref> that, for groups, first resolve group addresses to members (ResolveGroupMembers) and then resolve the members to user names (ResolveUser).
p-0055Additional functionality is provided for message addresses involving additional complexity, such as messages with nested message addresses. For the purposes of this application a message address within a nested level is considered to be a message address as it is equally unresolved at the time processing begins. The nested message address is processed in the same manner as a message address actually entered by a user of the client <b>3</b>, such as in field <b>109</b> of <figref idrefs="DRAWINGS">FIG. 7</figref>. The steps of the embodiment are divided into three portions listed below under the headings Resolving Message Recipients, Resolving Group Members, and Resolving Users.
p-0056The Resolving Message Recipients portion calls the other two portions as required to resolve message addresses. The Resolving Message Recipients portion defaults to resolving each message address as a user name by calling ResolveUser first for the message address. Then, if ResolveUser fails, ResolveGroupMembers is called. If a message address is resolved as a user address then a user name is returned for the address, such that the user name can be stored in the cache <b>17</b>. It is possible that a user name could later appear as part of a message address containing nested levels or in another message address of the same message or another message, and the user name need not be looked up again from the source directory <b>17</b> while the user name is available in the user cache <b>17</b>.
p-0057If a message address is resolved as a group address then the group address is resolved to a group name and group members (user names). The group name is stored in the cache <b>20</b><i>d. </i>Any distinct group address used to lookup the group name is also stored. The group cache <b>20</b><i>d </i>is accessed initially for each message address of a message so that message address resolution is fully attempted only once for any particular message address in the same message, which message includes, for example, a message address with nested levels or multiple message addresses at one level
p-0058Further the embodiment can be used to resolve messages including multiple message addresses at a single level by repeatedly calling the ResolveGroupMembers function to step through each message address.
p-0059An example of the operation of the system <b>1</b> in accordance with the pseudo code on a message address with a nested group (Group ST, having member Group XY) and multiple message addresses at a single level (having member Group XY and User A) is illustrated in <figref idrefs="DRAWINGS">FIG. 11</figref>. A message is received at the message agent <b>15</b> with a message address of ST@EXAMPLE.COM at <b>300</b> and the portion Resolving Message Recipients first looks up ST@EXAMPLE.COM as a user in the user cache <b>17</b> using ResolveUser at <b>302</b>. In this example, group ST was previously looked up as a user name and not found, so entered as unresolved in the cache <b>17</b>. The cache <b>17</b> does a find on ST@EXAMPLE.COM which is found as unresolved (i.e. in the unresolved cache <b>20</b><i>b</i>) because it happens to be a group address that was previously searched. The cache <b>17</b> therefore returns the address as unresolved at <b>304</b>. If ST was not found in the cache then ST would be looked up on the mail server <b>5</b> as a user name, returning a not found indication, ST would then be added to the cache <b>17</b> as an unresolved user, and ST would then be looked up as a group on the mail server <b>5</b>. Continuing as part of Resolving Message Recipients the embodiment then attempts to resolve the message address ST@EXAMPLE.COM as a group address using ResolveGroupMembers at step <b>306</b>. The server <b>5</b> returns the group name ST and members XY, A@EXAMPLE.COM at step <b>308</b>.
p-0060The embodiment then continues resolving XY, first as a user address and then as a group address at step <b>310</b> per the steps of <figref idrefs="DRAWINGS">FIG. 5</figref> described above commencing at step <b>79</b> and terminating at step <b>77</b> of <figref idrefs="DRAWINGS">FIG. 5</figref>. The embodiment then continues resolving A@EXAMPLE.COM as a user address by first looking up A@EXAMPLE.COM as a user address in cache <b>17</b> at step <b>312</b>. The cache <b>17</b> does not find A@EXAMPLE.COM in the cache <b>17</b> and returns A@EXAMPLE.COM as not found at step <b>314</b>. Although A was looked up previously in step <b>67</b> and following of <figref idrefs="DRAWINGS">FIG. 5</figref>, A @EXAMPLE.COM was not. A@EXAMPLE.COM is then looked up as a user name on the server <b>5</b> at step <b>316</b>. The server <b>5</b> finds A as a user name for email address A@EXAMPLE.COM and returns A as a user name with associated email address A@EXAMPLE.COM at step <b>318</b>. The message agent <b>15</b> instructs the cache <b>17</b> to add A@EXAMPLE.COM with the information User Name A and User Address: A@EXAMPLE.COM to cache <b>17</b> at step <b>320</b>. A@EXAMPLE.COM and associated User name: A and User Address: A@EXAMPLE.COM are added to the resolved portion of cache <b>17</b> at step <b>322</b>. A's information is now in the cache <b>17</b> twice and can be found by looking up message address A or A@EXAMPLE.COM. The embodiment then recognizes A as an existing recipient and, at step <b>310</b>A, A is not again added as a recipient, effectively filtering out the duplicate message address. A can be recognized by the message agent <b>15</b> as an existing recipient because user names are required to be unique on the server <b>5</b>, and, as a result, User Name A returned by the server <b>5</b> must be the same as User Name A that was found in the cache <b>17</b> earlier on when resolving the members of XY.
p-0061The embodiment defines, example inputs and output, and queries utilized in the function calls. It is to be recognized that the embodiment is an example only. An actual implementation can take many different forms.
p-0062In the embodiment, nested groups are permitted up to a certain limit and it is recognized that some groups may be repetitive within the nested levels or a particular message. Accordingly, temporary cache <b>20</b><i>d </i>is set up for resolution of groups on a message such that a group name is not attempted to be resolved more than once for each message. The temporary cache <b>20</b><i>d </i>is cleared after the groups for a message have been resolved. The functions are recursively called until all the groups of the message have been resolved to user names and to user addresses (to the extent available).
p-0063<tables id="TABLE-US-00001" num="00001"><table frame="none" colsep="0" rowsep="0"><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217pt" align="left" /><thead><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></thead><tbody valign="top"><row><entry> Pseudo Code Begins</entry></row><row><entry> Resolving Message Recipients</entry></row><row><entry> Input:</entry></row><row><entry> messageAddresses - message addresses for the recipients of the</entry></row><row><entry>message as specified by the mail client, e.g. group or user SMTP</entry></row><row><entry>addresses</entry></row><row><entry> Output:</entry></row><row><entry> resolvedList - list of user names of resolved message addresses</entry></row><row><entry> unresolvedList - list of unresolved message addresses</entry></row><row><entry> Notes:</entry></row><row><entry> groupCache - as described elsewhere in the pseudocode; this cache</entry></row><row><entry>exists within the scope of ResolveMessageAddresses function</entry></row><row><entry> ResolveUser - the function as described elsewhere in the pseudocode</entry></row><row><entry> ResolveGroupMembers - the function described elsewhere in the</entry></row><row><entry>pseudocode</entry></row><row><entry> FUNCTION ResolveMessageRecipients(messageAddresses,</entry></row><row><entry>resolvedList, unresolvedList)</entry></row><row><entry> for each address in messageAddresses</entry></row><row><entry> if ResolveUser(address, userName) is successful then</entry></row><row><entry> add userName to resolvedList</entry></row><row><entry> else if ResolveGroupMembers(address, resolvedList,</entry></row><row><entry>unresolvedList, groupCache, 0) returns false then</entry></row><row><entry> add address to unresolvedList</entry></row><row><entry> remove address from messageAddresses</entry></row><row><entry> end if</entry></row><row><entry> end for</entry></row><row><entry> end ResolveMessageRecipients</entry></row><row><entry> Resolving Group Members</entry></row><row><entry> Input:</entry></row><row><entry> MessageAddress - Message address to do lookup on to try to resolve</entry></row><row><entry>to a group name and members, e.g. group SMTP address or group name</entry></row><row><entry> level - level of recursion (group nesting)</entry></row><row><entry> groupCache - a cache 20d containing a map of message addresses</entry></row><row><entry>(including associated group name, if any) and whether or not a lookup was</entry></row><row><entry>performed for the message on the message address (and associated group</entry></row><row><entry>name, if any)</entry></row><row><entry> Output:</entry></row><row><entry> resolvedList - list of names of resolved for the message group</entry></row><row><entry>members (only contains names of users)</entry></row><row><entry> unresolvedList - list of group's members that couldn't be resolved for</entry></row><row><entry>the message (can contain names of users or groups)</entry></row><row><entry> groupCache - (as described earlier in the pseudocode)</entry></row><row><entry> Return:</entry></row><row><entry> false if lookup on messageAddress fails or if level of recursion is too</entry></row><row><entry>high, true otherwise</entry></row><row><entry> Notes:</entry></row><row><entry> LookupGroup is a query to the message server 5 looking in source</entry></row><row><entry>directory 17; if successful, it returns the group's name (groupName) and</entry></row><row><entry>a list of the group's members (memberList)</entry></row><row><entry> ResolveUser is a query to the cache 17, and possibly to the message</entry></row><row><entry>server 5 for looking in source directory 17 (pseudocode algorithm below);</entry></row><row><entry>if successful, it returns the user's user name (userName)</entry></row><row><entry> FUNCTION ResolveGroupMembers(MessageAddress, resolvedList,</entry></row><row><entry>unresolvedList, groupCache, level)</entry></row><row><entry> // check if we've seen messageAddress before</entry></row><row><entry> if messageAddress is in groupCache then</entry></row><row><entry> if lookup was performed on messageAddress then</entry></row><row><entry> return true</entry></row><row><entry> end if</entry></row><row><entry> remove messageAddress from unresolvedList</entry></row><row><entry> end if</entry></row><row><entry> // check if recursion level is too high</entry></row><row><entry> if level > levelLIMIT then - Note: levelLimit is a configurable</entry></row><row><entry>setting to limit recursion as discussed previously, 4 is used in the as an</entry></row><row><entry>example for levelLIMIT. No limit has been provided to the number of</entry></row><row><entry>direct members of a group. As an example, with a levelLIMIT of 4, if</entry></row><row><entry>Group1 is being resolved, and Group1 has a member Group2 that has a</entry></row><row><entry>member Group3 that has a member Group4 that has a member Group5 that</entry></row><row><entry>has a member Group6, Group2-Group5 are resolved, but Group6 is not.</entry></row><row><entry>However, if Group1 has members Group2-Group6 (no nesting) then</entry></row><row><entry>Group6 is resolved.</entry></row><row><entry> add messageAddress to groupCache and set that no lookup was</entry></row><row><entry>performed on it</entry></row><row><entry> return false</entry></row><row><entry> end if</entry></row><row><entry> // perform lookup on MessageAddress</entry></row><row><entry> add messageAddress to groupCache and set that a lookup has</entry></row><row><entry>been performed</entry></row><row><entry> if LookupGroup(MessageAddress) is not successful then</entry></row><row><entry> return false</entry></row><row><entry> end if</entry></row><row><entry> // check if we've seen groupName before</entry></row><row><entry> if groupName is different from messageAddress then</entry></row><row><entry> if groupName is in groupCache then</entry></row><row><entry> if lookup was performed on groupName then</entry></row><row><entry> return true</entry></row><row><entry> end if</entry></row><row><entry> remove messageAddress from unresolvedList</entry></row><row><entry> end if</entry></row><row><entry> end if</entry></row><row><entry> increment level - Note: the new value of level will be passed to</entry></row><row><entry>subsequent calls to ResolveGroupMembers during the loop to resolve the</entry></row><row><entry>groups direct members.</entry></row><row><entry> add groupName to groupCache and set that a lookup has been</entry></row><row><entry>performed</entry></row><row><entry> // resolve the group's members</entry></row><row><entry> for each member of memberList</entry></row><row><entry> if ResolveUser(member, userName) is successful then</entry></row><row><entry> add userName to resolvedList</entry></row><row><entry> else if ResolveGroupMembers(member, resolvedList,</entry></row><row><entry>unresolvedList, groupCache, level) returns false then</entry></row><row><entry> add member to unresolvedList</entry></row><row><entry> end if</entry></row><row><entry> end for</entry></row><row><entry> return true</entry></row><row><entry> end ResolveGroupMembers</entry></row><row><entry> Note: Thus at the end of ResolveGroupMembers in the example used</entry></row><row><entry>for FIGS. 4 and 5, groupCache would contain XY@EXAMPLE.COM and</entry></row><row><entry>XY,resolvedList would contain A, B, C and unresolvedLIST would be</entry></row><row><entry>empty. Once the message has been processed (for example, encrypted and</entry></row><row><entry>transmitted to recipients) these lists in the temporary caches are cleared.</entry></row><row><entry> Resolving Users:</entry></row><row><entry> Input:</entry></row><row><entry> MessageAddress - message address to do lookup on to try to resolve</entry></row><row><entry>to user name, e.g. user's SMTP address or a “nice” looking name</entry></row><row><entry>e.g. “John Doe”. Function may be called after group is resolved to a</entry></row><row><entry>list of members, such members are considered to be message addresses for</entry></row><row><entry>the purposes of this description as members replace the original group</entry></row><row><entry>address.</entry></row><row><entry> Output:</entry></row><row><entry> userName - The name required by the message server in order to</entry></row><row><entry>encrypt the message for this recipient</entry></row><row><entry> Return:</entry></row><row><entry> True if the user was resolved, false otherwise</entry></row><row><entry> Notes:</entry></row><row><entry> resolved user cache is a map of lookup messageAddress to</entry></row><row><entry>information about the associated user (e.g. user name, SMTP address, etc)</entry></row><row><entry>obtained from looking up the messageAddress on the message server</entry></row><row><entry> LookupInResolvedUserCache is a query to the resolved user cache</entry></row><row><entry>described above; if the messageAddress is found in the cache, it returns</entry></row><row><entry>true as well as the information about the user associated with the key</entry></row><row><entry> unresolved user cache is a list of lookup keys that failed to be</entry></row><row><entry>resolved to users by the message server</entry></row><row><entry> LookupInUnresolvedUserCache is a query to the unresolved user</entry></row><row><entry>cache described above; if the messageAddress is found in the cache, it</entry></row><row><entry>returns true</entry></row><row><entry> LookupUser is a query to the message server to try to obtain</entry></row><row><entry>information about the user associated with the key</entry></row><row><entry> FUNCTION ResolveUser(MessageAddress, userName)</entry></row><row><entry> if LookupInResolvedUserCache(MessageAddress) is successful</entry></row><row><entry>then</entry></row><row><entry> set userName to the resolved user’s user name</entry></row><row><entry> return true</entry></row><row><entry> else if LookupInUnresolvedUserCache(MessageAddress) is</entry></row><row><entry>successful then</entry></row><row><entry> return false</entry></row><row><entry> end if</entry></row><row><entry> if LookupUser(MessageAddress) is successful then</entry></row><row><entry> set userName to the return user info</entry></row><row><entry> add messageAddress and userName to the resolved user cache</entry></row><row><entry> return true</entry></row><row><entry> end if</entry></row><row><entry> add messageAddress to the unresolved user cache</entry></row><row><entry> return false</entry></row><row><entry> end ResolveUser</entry></row><row><entry> Pseudo Code Ends</entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
p-0064A further possible example embodiment of the system <b>1</b> will be further described with reference to system <b>116</b> below. The functions described above can be implemented into the corresponding components of the system <b>116</b> (some of which have been referenced with corresponding reference numerals above) and the description provided above will not be repeated for the corresponding components.
p-0065A system <b>116</b> constructed according to aspects of the present invention for providing attachments to e-mail messages transmitted from or composed on a wireless hand-held device (WHHD) is shown generally in high-level schematic form in <figref idrefs="DRAWINGS">FIG. 12</figref>. <figref idrefs="DRAWINGS">FIG. 12</figref> shows an example environment in which embodiments of the invention may be used. It will be appreciated that aspects of the invention may be applied to other environments with or without modifications, which modifications would be within the ken of one of skill in the art.
p-0066According to a further aspect of the present application, system <b>116</b> includes facilities in an enterprise network that cooperate with the WHHD to provide group name resolution and encryption for messages. A mail agent also cooperates with the WHHD, responsive to receive instructions from the WHHD to send an encrypted e-mail message to a group email address, including resolution of the group name to user names and encryption of the message for transmission to an email server.
p-0067As best seen in <figref idrefs="DRAWINGS">FIG. 12</figref>, a wireless telecommunications system <b>116</b> providing e-mail service to wireless hand-held devices and constructed according to an example embodiment for resolving group email addresses of encrypted email messages transmitted from or composed on a wireless hand-held device may comprise wireless hand-held device (WHHD) <b>117</b>, an enterprise network <b>160</b>, and one or more networks <b>120</b> coupling the WHHD to enterprise network <b>160</b>. Although only a single WHHD <b>117</b> is shown for simplicity, commercial embodiments contemplate the use of a very large number of WHHDs <b>117</b>.
p-0068Optionally, a wireless device network interface/enhancement facility (relay) <b>150</b> may be interposed between networks <b>120</b> and enterprise network <b>160</b>. Relay <b>150</b> may provide a number of functions that facilitate and enhance the interface of the enterprise network <b>160</b> and WHHD <b>117</b>, including without limitation, tracking the availability of WHHD <b>117</b> for communications, tracking which of several possible networks with which WHHD <b>117</b> may be in communication, managing flow of communications between WHHD <b>117</b> and enterprise network <b>160</b>, and ensuring reliable communications between WHHD <b>117</b> and enterprise network <b>160</b>. Relay <b>150</b> may be implemented and may function as described in Lewis U.S. Pat. No. 7,010,303, which is incorporated by reference herein. Although an embodiment constructed according to aspects of the present invention might operate successfully without relay <b>150</b>, and it is therefore optional, further description of wireless system <b>116</b> will treat relay <b>150</b> as present; one of skill in the art will appreciate that connections to relay <b>150</b> could also be made directly to enterprise network <b>160</b>, and some functions of relay <b>150</b> might be performed by elements of enterprise network <b>160</b>.
p-0069WHHD-to-enterprise networks <b>120</b> may comprise one or more wireless networks and any additional transport networks needed to couple such wireless networks to relay <b>150</b>. By way of example but not limitation, networks <b>120</b> may include a first network <b>124</b> which may be a telecommunications-carrier-operated public network, such as a GPRS, UMTS, CDMA, or other similar network of any generation or technology, offering data services to public subscribers or users. Networks <b>120</b> may also include, for example, a wireless network access point <b>134</b> for providing access via, for example, the group of wireless technologies known as WiFi. Other wireless access technologies could also be used. WHHD <b>117</b> preferably includes equipment compatible with at least one of the networks <b>124</b>, <b>134</b> such that one or more wireless data communications links, such as <b>122</b>, <b>132</b> may be established between the WHHD <b>117</b> and corresponding ones of networks <b>124</b>, <b>134</b>.
p-0070As is known in the art, networks <b>124</b> and <b>134</b> may be connected to relay <b>150</b> via one or more transport networks <b>126</b>, <b>136</b>. Transport networks <b>126</b>, <b>136</b> may be realized using any suitable network technology, including without limitation leased data lines, virtual private networks, the Internet, and the like. For example, carrier networks <b>124</b> may typically (but not necessarily) be connected to relay <b>150</b> via leased lines or other private, dedicated, or non-shared facilities. For another example, WiFi access point <b>134</b> may typically (but not necessarily) be connected to relay <b>150</b> via the public Internet. The transport networks <b>126</b>, <b>136</b> may be connected to relay <b>150</b> via any suitable links <b>130</b>, <b>140</b>. Relay <b>150</b> may be connected to enterprise network <b>160</b> via any suitable link <b>164</b>.
p-0071Enterprise network <b>160</b> may, for example, be the internal network of a business or other enterprise, and may provide a variety of network and information services to internal users. Enterprise network <b>160</b> typically includes systems <b>162</b> for furnishing to users enterprise e-mail, personal computing, information storage, and other applications. Enterprise network <b>160</b> could also be the network of an Internet Service Provider (ISP) or an Application Service Provider (ASP), which may similarly provide network and information services to external subscribers. Where the term “enterprise” is used herein, unless otherwise specified, it is intended to refer to the e-mail and other applications and services, and the networks, servers, software, facilities and other infrastructure arranged to provide such applications and services, similar to those typically provided to corporate users, whether such applications and services are provided by an organization for internal use, or by a service provider for external use.
p-0072<figref idrefs="DRAWINGS">FIG. 13</figref> depicts a more detailed block diagram of elements of the system <b>116</b> of <figref idrefs="DRAWINGS">FIG. 12</figref>, constructed according to aspects of the present invention. The general design of wireless hand-held devices is known. Accordingly, discussion of WHHD <b>117</b> will generally be limited to those elements particularly relevant to an understanding of the invention and its embodiments. As best seen in <figref idrefs="DRAWINGS">FIG. 13</figref>, WHHD <b>117</b> may comprise a controller <b>208</b>, a user interface system <b>210</b>, an applications and services suite <b>212</b>, and a network interface system <b>214</b>. As is known in the art, controller <b>208</b> may be realized as a microprocessor based controller containing a CPU, read-write memory (e.g., RAM), a generally read-only memory (which may be electronically programmable from time to time, as in EEPROM, FLASH, and similar technologies), optional ancillary components, and may comprise or be coupled to various input/output devices, including components of user interface <b>210</b> and network interface <b>214</b>. Controller <b>208</b> also includes appropriate software or firmware, which may include operating system software, for implementing its control functions, and for operating cooperatively with user interface <b>210</b> and network interface <b>214</b>.
p-0073User interface <b>210</b> includes appropriate hardware and software for implementing a suitable user interface to enable a user to operate the applications and services provided by the device (in conjunction, where applicable) with external networks and information services. For example, user interface <b>210</b> may include a display and keyboard (see <figref idrefs="DRAWINGS">FIG. 12</figref>), and other input and output devices such as a trackball or other pointing device, a speaker, and the like. Other user interface hardware may also be provided. User interface <b>210</b> may also incorporate software or firmware for driving the user interface hardware, and for providing services to applications and services on the device. The software or firmware may be implemented as libraries, routines, procedures, objects, message-based interfaces, or other software constructs for performing user interface tasks, as is known in the art. The software or firmware may execute on controller <b>208</b>.
p-0074WHHD applications and services suite <b>212</b> may provide a variety of applications and services to the user, in cooperation with user interface <b>210</b>. In particular, applications/services <b>212</b> include at least an e-mail application <b>216</b>, and may also include such items as services <b>220</b> and applications <b>224</b> that are not otherwise relevant to the aspects described herein. E-mail application <b>216</b> cooperates with components of the enterprise network <b>160</b> to provide e-mail services. Applications/services <b>212</b> may take the form of software or firmware and may execute on controller <b>208</b>.
p-0075Network interface system <b>214</b> provides an interface between applications/services <b>212</b> and one or more wireless networks <b>120</b>, such as carrier network <b>124</b> and WiFi access point <b>134</b> (<figref idrefs="DRAWINGS">FIG. 12</figref>). Network interface <b>214</b> incorporates hardware and firmware or software for implementing at least the physical link layers and data link layers required for accessing wireless networks <b>120</b>. Network interface <b>214</b> may further optionally implement additional layers required for accessing wireless networks <b>120</b>, including but not limited to the network layer and the transport layer. Alternatively, such layers may be implemented in elements of applications/services <b>212</b>. The software or firmware may be implemented as libraries, routines, procedures, objects, message-based interfaces, or other software constructs for performing user interface tasks, as is known in the art. The software or firmware may execute on controller <b>208</b>.
p-0076As best seen in <figref idrefs="DRAWINGS">FIG. 13</figref>, enterprise network <b>160</b> may include, by way of example but not limitation, a collection of enterprise e-mail and applications systems <b>162</b>, some of which may be arranged to provide service to WHHDs such as WHHD <b>117</b>. Enterprise systems <b>162</b> may include an enterprise e-mail application server <b>230</b> and an enterprise hand-held services enhancement server <b>236</b>, which may include as components a mail agent <b>232</b> and a file delivery server <b>234</b>. The mail agent <b>232</b> is connected to a cache <b>233</b>. The file delivery server <b>234</b> is shown only as an example of other components that may be included within the enterprise network <b>160</b> and is not specifically utilized in the methods described herein or required for the apparatuses. These elements may be interconnected using any suitable interconnect facility, such as network <b>226</b>. Enterprise systems <b>162</b> may further comprise one or more storage facilities, such as disk drives or storage systems, such as system file storage unit <b>240</b>, also interconnected via network <b>226</b>.
p-0077Mail server <b>230</b> may be implemented as any suitable e-mail server capable of transmitting e-mail. For example, mail server <b>230</b> may be implemented as a Microsoft Exchange, a Lotus Notes server, or another SMTP mail transport agent such as Sendmail. In many embodiments, mail server <b>230</b> will also be capable of receiving e-mail messages. Enterprise hand-held services enhancement server <b>236</b> optionally provides an interface between the WHHD <b>117</b> and the mail server <b>230</b>. Among several functions of enterprise HH server <b>236</b>, when an e-mail message arrives for the user at mail server <b>230</b>, enterprise HH server <b>236</b> pushes that e-mail message out to WHHD <b>117</b>.
p-0078When WHHD <b>117</b> transmits an e-mail message, the mail agent <b>232</b> of enterprise HH server <b>236</b> receives instructions and the contents of the e-mail message from the WHHD <b>117</b>, as previously described previously with respect to the system <b>1</b>. Mail agent <b>232</b> further responsively calls appropriate API components of the mail server <b>230</b> to perform the functions previously described with respect to the system <b>1</b>.
p-0079Mail server <b>230</b>, enterprise hand-held services enhancement server <b>236</b> and mail agent <b>232</b> may be realized using one or more suitable programmable computer systems running a commercially available operating system. For example, these items may be realized using commercial server computers having Intel™ IA-32-based processors and running an operating system in the Microsoft Windows Server™ family, such as Windows Server 2003. Other computers and operating systems could also be used. Although some of elements <b>230</b>, <b>232</b>, <b>234</b>, and <b>236</b> are depicted as distinct elements and may be realized as such (i.e., using separate server computers), skilled artisans will appreciate that these elements may be refactored or virtualized as necessary to meet expected load. Thus, these elements could also be realized as different processes running on the same computer or on several computers.
p-0080As a further example of how the above-described embodiments may be used, the above methods of resolving message addresses, including group addresses and group names of <figref idrefs="DRAWINGS">FIGS. 3-6</figref> and <b>11</b>, and the related description and methods, can be employed in whole or in part on a system <b>1</b>, as realized more particularly for example by system <b>116</b> of <figref idrefs="DRAWINGS">FIGS. 12-13</figref>. Consider, for example, an environment in which a mail server <b>230</b> of <figref idrefs="DRAWINGS">FIG. 13</figref>, acting as the message server <b>5</b> (<figref idrefs="DRAWINGS">FIG. 1</figref>), is implemented using the commercially-available DOMINO mail server software. A user may send an email message in the NOTES Native Encrypted encoding format from wireless handheld device <b>117</b> (<figref idrefs="DRAWINGS">FIG. 12</figref>) acting as the client <b>3</b> of <figref idrefs="DRAWINGS">FIG. 1</figref> with one or more group addresses as a recipient. In at least some versions, in order to accept a message to be encrypted, the DOMINO software requires that each user name be expressed in DOMINO canonical format (e.g. “CN=John Doe/O=Domain”). Groups do not have an address in canonical format. In embodiments such as those described above for offering to a DOMINO mail server (of some versions) a message which is to be encrypted and which includes at least one group as a recipient, each such group is first resolved to user names in DOMINO canonical format. This process may be performed, for example, as generally described in connection with <figref idrefs="DRAWINGS">FIGS. 3-6</figref> and <b>11</b>, with mail agent <b>232</b> of <figref idrefs="DRAWINGS">FIG. 13</figref> acting as the message agent <b>15</b> (<figref idrefs="DRAWINGS">FIG. 1</figref>), message agent storage <b>233</b> of <figref idrefs="DRAWINGS">FIG. 13</figref> acting as the user cache <b>17</b> (<figref idrefs="DRAWINGS">FIG. 1</figref>) and group cache (<figref idrefs="DRAWINGS">FIG. 1</figref>), mail server <b>230</b> of <figref idrefs="DRAWINGS">FIG. 13</figref> acting as the message server <b>5</b>, and system file storage units <b>240</b> of <figref idrefs="DRAWINGS">FIG. 13</figref> and mail server <b>230</b> cooperating to provide the source directories <b>7</b>. However, these functions could be implemented using other architectures without departing from the spirit of the present disclosure.
p-0081The cache <b>17</b> can, for example, be set to store the cached data in memory or other storage facilities <b>233</b> of messaging agent <b>232</b> for up to a set amount of time (a default of four hours has been found useful in a commercial embodiment) as mentioned previously for the system <b>1</b>. Cached entries can also be removed prior to the expiration time if the cache <b>17</b> has reached its size limit and the cache <b>17</b> needs room for new entries.
p-0082Further, as an example, embodiments of the above methods and systems for resolving group names can be implemented utilizing a BLACKBERRY™ environment as provided by Research In Motion Limited of Waterloo, Canada such that, for example, the device <b>117</b> is implemented by a BLACKBERRY smartphone, and the mail agent <b>232</b> may be implemented as part of a server computer in conjunction with BLACKBERRY ENTERPRISE SERVER software product commercially available from Research In Motion Limited.
p-0083In a first aspect an embodiment of this application provides a method of transmitting a message addressed to at least one group address associated with a group. The method includes expanding a group address by looking up one or more user names for members of a group associated with the group address from a source directory; looking up an user address for each of the one or more user names from a user cache comprising a snapshot of information from the source directory including user names mapped to user addresses; addressing the message to each looked up user address; and transmitting the message to each looked up user address.
p-0084Expanding a group address by looking up one or more user names for members of a group associated with the group address from a source directory may include resolving the group address to a group name, and looking up, from the source directory, one or more user names for members of the group based on the group name.
p-0085Transmitting the message to each looked up user address may include requesting a message server to encrypt the message for each looked up user address; receiving an encrypted message associated with each looked up user address from the message server; and transmitting each encrypted message to each looked up user address.
p-0086Where the message is to be encrypted, the method may include looking up, from the source directory, encryption keys for encryption associated with each of the one or more user names; and encrypting the message using the looked up encryption keys prior to transmitting the message to each looked up user address.
p-0087The method may include checking in a group cache (<b>20</b><i>d</i>) to see if the group address has already been looked up for the message prior to a) and stopping the method for the group address if the group address has already been looked up for the message; adding an indication to the group cache (<b>20</b><i>d</i>) when the group address has been looked up for the message; and adding an indication to the user cache when each of the user names has been looked up for the message.
p-0088The method may include looking up a user address associated with a user name from the source directory, if the user address associated with the user name is not found in the user cache in looking up an user address for each of the one or more user names from the user cache; and adding the user address associated with the user name to the user cache for future lookups.
p-0089The method may be implemented in a message agent (<b>15</b>, <b>232</b>).
p-0090In a second aspect an embodiment of this application provides a system for resolving addresses of a message. The system includes a source directory comprising a database of group names and associated user names, and user names and associated user addresses, a user cache from the source directory of user names mapped to user addresses, and a message agent configured for looking up one or more user names for members of a group associated with a message address from a source directory, configured for looking up the user addresses for the one or more user names from the user cache, configured for addressing the message to the looked up user addresses, and configured for transmitting the message to the looked up user addresses.
p-0091The message agent may be further configured for encryption of the message based on the looked up respective user names prior to transmission of the message to the respective user addresses.
p-0092The message agent may be further configured for looking up encryption keys from a source directory <b>7</b> of user names and associated encryption keys, the looking up of encryption keys utilizing the respective looked up user names.
p-0093The system may further include a group cache for storing an indication when the group name has been looked up for the message; and the message agent may be configured for checking if the group name has already been looked up for the message prior to lookup up the user names from the source directory for the group name, and if the group name has already been looked up for the message stopping processing of the group name; and wherein the message agent may be further configured for adding the indication when the group name has been looked up for the message.
p-0094The message agent may be configured for checking if a user name has already been looked up for the message, and if the user name has already been looked up for the message stopping processing of the user name; and the message agent may be further configured for adding the indication to the user cache when the user name has been looked up for the message.
p-0095The message agent may be further configured for if the lookup of a user name in the user cache fails then the user name is looked up in a message server <b>5</b> for use with the message and the information being looked up for the user name is added to the user cache for future lookups.
p-0096In a third aspect an embodiment of the present application provides a method in a mobile device of transmitting a message to be encrypted, the message addressed to at least one group address associated with a group. The method includes receiving an instruction to compose a message to a group address; receiving an instruction to encrypt the message; receiving an instruction to send the message to a message agent (<b>15</b>, <b>232</b>); and transmitting the message to the message agent with an instruction to encrypt the message, wherein the message is subsequently encrypted and transmitted to each user address associated with members of the group.
p-0097The message may be encrypted at the message agent.
p-0098In a fourth aspect an embodiment of the present application provides a method of resolving message addresses of a message to be encrypted. The method includes looking up, from a user cache, a user address associated with a message address, and if the lookup returns that the message address is unresolved which indicates that the message address had been previously looked up as a user name in a source directory but was not found, treat the message address as a group address, by: a) looking up, from the source directory, a group name associated with the message address and one or more user names for members of the group associated with the group name; looking up an user address for each of the one or more user names from the user cache; if the user address associated with the user name is not found in the user cache, then looking up the user address associated with the user name from the source directory, and if the user address is returned then adding the user address associated with the user name to the user cache for future lookups; if the user address associated with the user name is not found in the source directory then adding the user name as an unresolved message address in the user cache and treat the user name as a group address, returning to a); and the method further includes b) looking up, from the user cache or the source directory, encryption keys for encryption associated with each of the one or more user names; c) addressing the message to the looked up user addresses and encrypting the message using the looked up encryption keys; and d) transmitting the message to each looked up user address.
p-0099According to a fifth aspect an embodiment of this application provides a method of resolving addresses of a message. The method includes looking up, from a source directory, a group name associated with a message address of the message and returning one or more user names associated with the group name; looking up through a cache, comprising a snapshot of information from the source directory comprising of user names mapped to user addresses; and addressing the message to each looked up user address.
p-0100The method wherein the message is to be encrypted may include transmitting the message with each looked up user address for encryption based on the respective looked up user names prior to transmission of the message to each respective user addresses.
p-0101The method may include requesting transmission of the message to each respectively looked up user address.
p-0102The method wherein the message is to be encrypted may include looking up encryption keys from a source directory of user names and associated encryption keys, the looking up of encryption keys utilizing the respective looked up user names.
p-0103The method may include checking to see if a group name has already been looked up for the message. The method may include stopping the method for a group name if the group name has already been looked up for the message.
p-0104The method may include checking to see if a user name has already been looked up for the message. The method may include stopping the method for a user name if the user name has already been looked up for the message.
p-0105The method may include adding an indication of when a group name has been looked up for a message. The method may include adding an indication of when a user name has been looked up for a message.
p-0106The method may include repeating the method for additional group names of the message.
p-0107The method may include if the lookup of a user name in the cache fails then the user name is looked up from the source directory for use with the message and the information being looked up for the user name is added to the cache for future lookups.
p-0108The method may include recursively applying the method to resolve nested group names.
p-0109The message may first be transmitted for resolution by a message client.
p-0110In a sixth aspect an embodiment of this application provides a system for resolving addresses of a message to be encrypted. The system includes a source directory comprising a database of group names and associated user names, and user names and associated user addresses, a cache from the source directory of user names mapped to user addresses, and a message agent configured for looking up the user names from the source directory for a group name of the message, looking up the user addresses for the user names, and addressing the message to the user addresses.
p-0111The system may further include a message agent configured to carry out the various steps of the first aspect. The message agent may be configured for looking up in the source directory through a message server. The message agent may be configured for looking up encryption keys from a source directory through a message server.
p-0112In a seventh aspect an embodiment of this application provides a system for resolving addresses of a message to be encrypted. The system includes a message agent, a message server, a cache, and a source directory. The message agent and cache are operatively connected. The message server and source are operatively connected. The message agent and the message server are operatively connected. The message agent is adapted to request the message server to look up user names from the source directory for a group name of the message. The message agent is adapted to look up the user addresses for the user names from the cache and to address the message to the user addresses. The method of any of the above claims wherein the message is first transmitted for resolution by a message client.
p-0113In an eighth aspect an embodiment of this application provides a method of resolving addresses of a message to be encrypted, the method comprising the steps of looking up, from a source directory, user names associated with a group name of the message, looking up an user address for each of the looked up user names, looking up encryption keys from a cache of user names and associated encryption keys, the looking up of encryption keys utilizing the respective looked up user names, and addressing the message to the looked up user addresses and encrypting the message using the looked up encryption keys.
p-0114Other aspects and further details of the above aspects will be evident from the description provided above and the associated drawing FIGS.
p-0115The description of example embodiments of aspects of the application does not limit the implementation thereof to any particular computer programming language or system architecture. The aspects are not limited to any particular operating system, mobile device architecture, or computer programming language. Moreover, although some of the embodiments described below include mobile devices, the aspects are not limited to mobile devices; rather, it may be embodied within a variety of user devices or terminals, including handheld devices, mobile telephones, personal digital assistants (PDAs), personal computers, audio-visual terminals, televisions, and other devices. One skilled in the art will appreciate that messaging applications can be installed on most existing implementations of these user devices and terminals.
p-0116One of skill in the art will appreciate that the methods described herein may be used with the apparatuses described herein, but could also be used with other apparatuses without departing from the spirit of the invention. Accordingly, some primary steps are presented in a generalized form that does not rely on the particular apparatuses described herein. It is noted in the description of certain steps and substeps that such steps may be performed by specific elements of the apparatuses; however, the association of steps and apparatuses is done by way of example but not limitation, and it is to be understood that these steps could be performed by other apparatuses. Moreover, the term “step” is used herein to refer to both the general steps associated with the methods and to more detailed substeps which may be comprised as part of a more general step. Some steps are optional. Optional substeps may be omitted or replaced by other specific method steps that implement or embody the function of the primary step. Although discrete steps are mentioned, it will be understood by one of skill in the art that in some embodiments, the functions defined in the steps may be performed as continuous processes.
p-0117The steps or operations described herein are just for example. There may be many variations to these steps or operations without departing from the spirit of the invention. For instance, the steps may be performed in a differing order, or steps may be added, deleted, or modified. Parts of one embodiment may be used in another embodiment without requiring all of the steps of any one embodiment.
p-0118The embodiments described herein are exemplary. Thus it will be appreciated that although the embodiments are described in terms of specific technologies, other equivalent technologies could be used to implement systems in keeping with the spirit of the present invention.
p-0119Although example implementations of the invention have been depicted and described in detail herein, it will be apparent to those skilled in the relevant art that various modifications, additions, substitutions, and the like can be made without departing from the spirit of the invention and these are therefore considered to be within the scope of the invention as defined in the following claims.
p-0120The present invention may be embodied in other specific forms without departing from the spirit or essential characteristics thereof. Certain adaptations and modifications of the invention will be obvious to those skilled in the art. Therefore, the above discussed embodiments are considered to be illustrative and not restrictive, the scope of the invention being indicated by the appended claims rather than the foregoing description, and all changes which come within the meaning and range of equivalency of the claims are therefore intended to be embraced therein.
Contents4
11 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9 Sheet 10 Sheet 11
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US2014359007A1 | Cited by | United States of America | Pre-grant |
| US11956200B1 | Cited by | United States of America | Search report |
| US2016036754A1 | Cited by | United States of America | Pre-grant |
| US9794271B2 | Cited by | United States of America | Search report |
| US10855440B1 | Cited by | United States of America | Applicant |
| US10007395B2 | Cited by | United States of America | Applicant |
| US2017127260A1 | Cited by | United States of America | Pre-grant |
| US9980119B2 | Cited by | United States of America | Search report |
| US10778432B2 | Cited by | United States of America | Applicant |
| US8874773B2 | Cited by | United States of America | Search report |
| US2010272262A1 | Cited by | United States of America | Pre-grant |
| US11502816B2 | Cited by | United States of America | Applicant |
| US10462154B2 | Cited by | United States of America | Applicant |
| US11362811B2 | Cited by | United States of America | Applicant |
| US10135612B1 | Cited by | United States of America | Applicant |
| US10063511B2 | Cited by | United States of America | Search report |
| US12518250B2 | Cited by | United States of America | Search report |
| US10110615B2 | Cited by | United States of America | Search report |
| US2016080922A1 | Cited by | United States of America | Pre-grant |
| US10541814B2 | Cited by | United States of America | Applicant |
| US11943693B2 | Cited by | United States of America | Applicant |
| US11350261B2 | Cited by | United States of America | Applicant |
| US9198015B2 | Cited by | United States of America | Search report |
| US2011106889A1 | Cited by | United States of America | Pre-grant |
| US11394681B1 | Cited by | United States of America | Search report |
| US9549304B2 | Cited by | United States of America | Search report |
| US2015186440A1 | Cited by | United States of America | Pre-grant |
| US11101999B2 | Cited by | United States of America | Applicant |
| US12349036B2 | Cited by | United States of America | Applicant |
| US10271195B2 | Cited by | United States of America | Applicant |
| US10652722B2 | Cited by | United States of America | Applicant |
| US2016127386A1 | Cited by | United States of America | Pre-grant |
| US9378236B2 | Cited by | United States of America | Search report |
| US2012136923A1 | Cited by | United States of America | Pre-grant |
| US11652779B1 | Cited by | United States of America | Search report |
| US10116637B1 | Cited by | United States of America | Search report |
| US10630663B1 | Cited by | United States of America | Applicant |
| US8341230B2 | Cited by | United States of America | Search report |
| CN105849713A | Cited by | China | Search report |
| US9854422B2 | Cited by | United States of America | Search report |
| US2001049747A1 | Cites | United States of America | Pre-grant |
| US2002049751A1 | Cites | United States of America | Pre-grant |
| US200211A | Cites | United States of America | Pre-grant |
| US2002112015A1 | Cites | United States of America | Pre-grant |
| US2002120695A1 | Cites | United States of America | Pre-grant |
| US2002141560A1 | Cites | United States of America | Pre-grant |
| US2004093382A1 | Cites | United States of America | Pre-grant |
| US2004215823A1 | Cites | United States of America | Pre-grant |
| US200620A | Cites | United States of America | Pre-grant |
| US2006204011A1 | Cites | United States of America | Pre-grant |
| US2007130464A1 | Cites | United States of America | Pre-grant |
| US2007180033A1 | Cites | United States of America | Pre-grant |
| US2008183827A1 | Cites | United States of America | Pre-grant |
| US5974452A | Cites | United States of America | Pre-grant |
| US6396830B2 | Cites | United States of America | Pre-grant |
| US6816884B1 | Cites | United States of America | Pre-grant |
| US6912519B2 | Cites | United States of America | Pre-grant |
| US7131003B2 | Cites | United States of America | Pre-grant |
6 members in 3 offices
Priority claims1
| Document | Office | Kind | Date |
|---|---|---|---|
| 8092208 | United States of America | P |
Members6
| Document | Office | Kind | |
|---|---|---|---|
| CA2667733A1 | Canada | A1 | |
| EP2146466A1 | European Patent Office (EPO) | A1 | |
| US2010017607A1 | United States of America | A1 | |
| US8667271B2 | United States of America | B2 | |
| EP2146466B1 | European Patent Office (EPO) | B1 | |
| CA2667733C | Canada | C |
82 transactions on the USPTO file
Allowed after 1 non-final rejection, 1 final rejection and 1 RCE.
- Non-final rejections
- 1
- Final rejections
- 1
- RCEs
- 1
- Appeals
- 0
Over time
Point at a mark for the transactionTransactions
| Event | Code | |
|---|---|---|
| Payment of Maintenance Fee, 12th Year, Large EntityM1553 | M1553 | |
| Application ready for PDX access by participating foreign officesCCRDY | CCRDY | |
| Application ready for PDX access by participating foreign officesCCRDY | CCRDY | |
| Email NotificationEML_NTR | EML_NTR | |
| Change in Power of Attorney (May Include Associate POA)PA.. | PA.. | |
| Payment of Maintenance Fee, 8th Year, Large EntityM1552 | M1552 | |
| Payment of Maintenance Fee, 4th Year, Large EntityM1551 | M1551 | |
| Recordation of Patent Grant MailedPGM/ | PGM/ | |
| Patent Issue Date Used in PTA CalculationAllowedPTAC | PTAC | |
| Email NotificationEML_NTR | EML_NTR | |
| Issue Notification MailedAllowedWPIR | WPIR | |
| Dispatch to FDCD1935 | D1935 | |
| Application Is Considered Ready for IssuePILS | PILS | |
| Issue Fee Payment VerifiedN084 | N084 | |
| Issue Fee Payment ReceivedIFEE | IFEE | |
| Email NotificationEML_NTR | EML_NTR | |
| Printer Rush- No mailingTCPB | TCPB | |
| Mail Miscellaneous Communication to ApplicantMM327 | MM327 | |
| Miscellaneous Communication to Applicant - No Action CountM327 | M327 | |
| Pubs Case Remand to TCPUBTC | PUBTC | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Email NotificationEML_NTR | EML_NTR | |
| Mail PUB Notice of non-compliant IDSMM327-B | MM327-B | |
| PUB Notice of non-compliant IDSM327-B | M327-B | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Notice of AllowanceAllowedMN/=. | MN/=. | |
| Notice of Allowance Data Verification CompletedAllowedN/=. | N/=. | |
| Reasons for AllowanceEX.R | EX.R | |
| Examiner's Amendment CommunicationEX.A | EX.A | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Disposal for a RCE / CPA / R129AbandonedABN9 | ABN9 | |
| Request for Continued Examination (RCE)RCEX | RCEX | |
| Workflow - Request for RCE - BeginBRCE | BRCE | |
| Email NotificationEML_NTR | EML_NTR | |
| Mail Advisory Action (PTOL - 303)MCTAV | MCTAV | |
| Advisory Action (PTOL-303)CTAV | CTAV | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Final ActionA.NE | A.NE | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Final Rejection (PTOL - 326)Final rejectionMCTFR | MCTFR | |
| Final RejectionFinal rejectionCTFR | CTFR | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Non-Final ActionA... | A... | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Email NotificationEML_NTR | EML_NTR | |
| PG-Pub Issue NotificationPG-ISSUE | PG-ISSUE | |
| Email NotificationEML_NTR | EML_NTR | |
| Change in Power of Attorney (May Include Associate POA)PA.. | PA.. | |
| Correspondence Address ChangeC.AD | C.AD | |
| Application Dispatched from OIPEOIPE | OIPE | |
| Email NotificationEML_NTR | EML_NTR | |
| Email NotificationEML_NTR | EML_NTR | |
| Change in Power of Attorney (May Include Associate POA)PA.. | PA.. | |
| Filing Receipt - UpdatedFLRCPT.U | FLRCPT.U | |
| Sent to Classification ContractorPGPC | PGPC | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Reference capture on IDSRCAP | RCAP | |
| Electronic Information Disclosure StatementEIDS. | EIDS. | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Additional Application Filing FeesADDFLFEE | ADDFLFEE | |
| A statement by one or more inventors satisfying the requirement under 35 USC 115, Oath of the ApplicOATHDECL | OATHDECL | |
| Applicants have given acceptable permission for participating foreignAPPERMS | APPERMS | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Email NotificationEML_NTR | EML_NTR | |
| Notice Mailed--Application Incomplete--Filing Date AssignedINCD | INCD | |
| Filing ReceiptFLRCPT.O | FLRCPT.O | |
| Cleared by OIPE CSRL194 | L194 | |
| IFW Scan & PACR Auto Security ReviewSCAN | SCAN | |
| Initial Exam Team nnIEXX | IEXX |
12 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Maintenance fee paymentMAFP | MAFP | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| Maintenance fee paymentMAFP | MAFP | |
| Maintenance fee paymentMAFP | MAFP | |
| Information on status: patent grantGrantedPATENTED CASESTCF | STCF | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS |
Numbers
- Application
- 47447309
Titles
- English
- METHODS AND SYSTEMS TO RESOLVE MESSAGE GROUP
Patent term adjustment
- A delay
- +833 daysthe office missed an examination deadline
- B delay
- +205 dayspendency past three years
- Applicant delay
- −20 days
- Net adjustment
- 1,018 days
Classification
- IPC, 3
- G06F17 30
- G06F15 16
- H04L9 32