Sélection de la langue

Search

Sommaire du brevet 2659807 

Énoncé de désistement de responsabilité concernant l'information provenant de tiers

Une partie des informations de ce site Web a été fournie par des sources externes. Le gouvernement du Canada n'assume aucune responsabilité concernant la précision, l'actualité ou la fiabilité des informations fournies par les sources externes. Les utilisateurs qui désirent employer cette information devraient consulter directement la source des informations. Le contenu fourni par les sources externes n'est pas assujetti aux exigences sur les langues officielles, la protection des renseignements personnels et l'accessibilité.

Disponibilité de l'Abrégé et des Revendications

L'apparition de différences dans le texte et l'image des Revendications et de l'Abrégé dépend du moment auquel le document est publié. Les textes des Revendications et de l'Abrégé sont affichés :

  • lorsque la demande peut être examinée par le public;
  • lorsque le brevet est émis (délivrance).
(12) Brevet: (11) CA 2659807
(54) Titre français: SYSTEME DE SYNCHRONISATION ET DE DISTRIBUTION DE COURRIER ELECTRONIQUE (COURRIEL) A ACCES DIRECT AVEC MISE EN OEUVRE VERIFIEE OU VALIDEE DU PROTOCOLE D'ACCES MESSAGE INTERNET (IMPA-IDLE)
(54) Titre anglais: DIRECT ACCESS ELECTRONIC MAIL (EMAIL) DISTRIBUTION AND SYNCHRONIZATION SYSTEM WITH TRUSTED OR VERIFIED IMAP-IDLE IMPLEMENTATION
Statut: Accordé et délivré
Données bibliographiques
Abrégés

Abrégé français

Un système de communication comprend un moteur réseau qui communique avec une pluralité dappareils de communication sans fil dabonnés par lintermédiaire dun réseau de communication pour envoyer et recevoir des courriels. Un serveur daccès direct est relié au moteur réseau pour interroger les boîtes de courriel des utilisateurs à partir dune source de courriels, extraire les courriels des boîtes de courriel et pousser toute boîte de courriel vers le moteur réseau vers des appareils de communication sans fil dabonnés choisis. Le serveur daccès direct communique avec une source de courriels par un protocole daccès message internet (IMAP) et des connexions IMAP-Idle soutenables dans un canal de communication pour accepter les avis en temps réel. Le serveur daccès direct vérifie une fonctionnalité de commande Idle sur le canal de communication avant de se reposer sur le canal de communication pour des avis de nouveaux courriels.


Abrégé anglais

A communications system includes a network engine that communicates with a plurality of a user subscribed mobile wireless communications devices via a communications network for sending and receiving emails. A direct access server is connected to the network engine for polling electronic mailboxes of users from an email source and retrieving electronic messages from the electronic mailboxes and pushing any electronic mailboxes to the network engine to selected users subscribed mobile wireless communications devices. The direct access server communicates with an email source using the internet message access protocol (IMAP) and IMAP-Idle supportable connections in a communications channel to accept real-time notifications. The direct access server verifies an Idle command functionality on the communications channel before relying on the communications channel for new mail notifications.

Revendications

Note : Les revendications sont présentées dans la langue officielle dans laquelle elles ont été soumises.


THAT WHICH IS CLAIMED IS:
1. A communications system, comprising:
a network engine that communicates with a plurality
of user subscribed mobile wireless communications devices via a
communications network for sending and receiving emails
therefrom; and
a direct access server connected to the network
engine and configured to:
retrieve email from electronic mailboxes of users from an
email source and push any email through the network engine to
selected user subscribed mobile wireless communications devices;
communicate with the email source over a communications
channel to learn the Internet Message Access Protocol (IMAP)
Idle capabilities of the email source; and
establish an IMAP-Idle connection in the communications
channel and verify an IMAP-Idle command functionality on the
communications channel before relying on the communications
channel for new mail notifications by checking if any failures
to deliver new mail notifications occur a predetermined number
of times, and if so, ceasing to use the IMAP-Idle connection.
2. The communications system according to Claim 1,
wherein if the direct access server determines that messages are
found for which no notification was sent, the direct access
server increases a fail count.
3. The communications system according to Claim 2,
wherein if the fail count exceeds a predetermined limit, said
direct access server switches to polling the email source and
cease to use IMAP Idle.

4. The communications system according to Claim 1,
wherein when a connection limit is reached or exceeded to an
email source, said direct access server disables IMAP-Idle
connections to the email source.
5. The communications system according to Claim 4,
wherein no IMAP-Idle connection can be made to an email source
when a connection limit has been reached.
6. The communications system according to Claim 4,
wherein if IMAP-Idle connection attempts to an email source fail
a predetermined number of times, said direct access server will
not attempt to connect to an email source using an IMAP-Idle
connection.
7. The communications system according to Claim 4,
wherein said direct access server comprises an IMAP-Idle manager
module that marks the email source as IMAP-Idle disabled such
that the email source will not be connected to establish an
IMAP-Idle connection.
8. The communications system according to Claim 4,
wherein said direct access server is operative for determining
whether an IMAP-Idle connection has been dropped when a
secondary connection was in progress such that an IMAP-Idle
connection is disabled.
9. The communications system according to Claim 8,
wherein said secondary connection comprises a connection for
email polling.
26

10. The communications system according to Claim 4,
wherein an email account is not subscribed in the future when an
IMAP-Idle connection is disabled.
11. The communications system according to Claim 4,
wherein said direct access server is operative for issuing an
IMAP fetch to check if new email was received.
12. A communications method, comprising:
retrieving email from electronic mailboxes of users from an
email source;
pushing any email through a network engine to selected user
subscribed mobile wireless communications devices;
communicating with an email source over a communications
channel and learning the Internet Message Access Protocol (IMAP)
Idle capabilities of the email source; and
establishing an IMAP-Idle connection in the communications
channel and verifying an IMAP Idle command functionality on the
communications channel before relying on the communications
channel for new mail notifications by checking if any failures
to deliver new mail notifications over a predetermined number of
times, and if so, ceasing to use the IMAP-Idle connection.
13. The method according to Claim 12, and further
comprising increasing a fail count when the direct access server
determines that messages are found for which no notification was
sent.
14. The method according to Claim 13, and further
comprising polling the email source if the fail count exceeds a
predetermined limit and ceasing to use IMAP Idle.
27

15. The method according to Claim 12, and further
comprising disabling the IMAP-Idle connections to the email
source when a connection limit is reached or exceeded to an
email source.
16. The method according to Claim 15, which further
comprises marking the email source as IMAP-Idle disabled such
that the email source will not be connected to establish an
IMAP-Idle connection.
17. The method according to Claim 15, which further
comprises not subscribing in the future to an email account when
an IMAP-Idle connection is disabled.
18. The method according to Claim 15, which further
comprises determining whether an IMAP-Idle connection has been
dropped when a secondary connection was in progress such that an
IMAP-Idle connection is disabled.
19. The method according to Claim 15, which further
comprises issuing an IMAP fetch to check if new mail was
received.
20. The method according to Claim 15, which further
comprises user subscribing to an IMAP-Idle enabled connection.
28

Description

Note : Les descriptions sont présentées dans la langue officielle dans laquelle elles ont été soumises.


CA 02659807 2009-03-24
DIRECT ACCESS ELECTRONIC MAIL (EMAIL) DISTRIBUTION
AND SYNCHRONIZATION SYSTEM WITH TRUSTED OR VERIFIED
IMAP-IDLE IMPLEMENTATION
Technical Field
[0001] The present disclosure relates to the field of
communications systems, and, more particularly, to electronic
mail (email) communications systems and related methods.
Background
[0002] Electronic mail (email) has become an integral part of
business and personal communications. As such, many users have
multiple email accounts for work and home use. Moreover, with
the increased availability of mobile cellular and wireless local
area network (LAN) devices that can send and receive emails,
many users wirelessly access emails from mailboxes stored on
different email storage servers (e.g., corporate email storage
server, Yahoo, Hotmail, AOL, etc.).
[0003] Yet, email distribution and synchronization across
multiple mailboxes and over wireless networks can be quite
challenging, particularly when this is done on a large scale for
numerous users. For example, different email accounts may be
configured differently and with non-uniform access criteria.
Moreover, as emails are received at the wireless communications
device, copies of the emails may still be present in the
original mailboxes, which can make it difficult for users to
keep their email organized.
[0004] One particularly advantageous "push" type email
distribution and synchronization system is disclosed in U.S.
Patent No. 6,779,019 to Mousseau et al., which is assigned to

CA 02659807 2009-03-24
the present Assignee and is hereby incorporated herein by
reference. This system pushes user-selected data items from a
host system to a user's mobile wireless communications device
upon detecting the occurrence of one or more user-defined event
triggers. The user may then move (or file) the data items to a
particular folder within a folder hierarchy stored in the mobile
wireless communications device, or may execute some other system
operation on a data item. Software operating at the device and
the host system then synchronizes the folder hierarchy of the
device with a folder hierarchy of the host system, and any
actions executed on the data items at the device are then
automatically replicated on the same data items stored at the
host system, thus eliminating the need for the user to manually
replicate actions at the host system that have been executed at
the mobile wireless communications device.
[0005] The foregoing system advantageously provides great
convenience to users of wireless email communication devices for
organizing and managing their email messages. Yet, further
convenience and efficiency features may be desired in email
distribution and synchronization systems as email usage
continues to grow in popularity.
Brief Description of the Drawings
[0006] Other objects, features and advantages will become
apparent from the detailed description which follows when
considered in light of the accompanying drawings in which:
[0007] FIG. 1 is a schematic block diagram of a direct access
electronic mail (email) distribution and synchronization system
in accordance with non-limiting examples.
[0008] FIG. 2 is a block diagram showing basic components of
the Direct Access Proxy with the IMAP Mail Provider.
2

CA 02659807 2009-03-24
[0009] FIG. 3 is a flowchart showing functional steps for the
IMAP idle connection.
[0010] FIG. 4 is a block diagram showing basic components of
a Source Scheduler and interoperation among components,
including the instantiation of the IMAP Idle connection.
[0011] FIG. 5 is a flowchart showing basic steps for the IMAP
idle support.
[0012] FIG. 6 is a flowchart showing basic steps of IMAP idle
support with a trusted or verified implementation.
[0013] FIG. 7 is a schematic block diagram illustrating an
exemplary mobile wireless communications device that can be used
with the Direct Access email system shown in FIG. 1.
Detailed Description of the Preferred Embodiments
[0014] Different embodiments will now be described more fully
hereinafter with reference to the accompanying drawings, in
which preferred embodiments are shown. Many different forms can
be set forth and described embodiments should not be construed
as limited to the embodiments set forth herein. Rather, these
embodiments are provided so that this disclosure will be
thorough and complete, and will fully convey the scope to those
skilled in the art. Like numbers refer to like elements
throughout.
[0015] The communications system includes a network engine
that communicates with the plurality of a user subscribed mobile
wireless communications devices via a communications network for
sending and receiving emails. A direct access server is
connected to the network engine for polling electronic mailboxes
of users from an email source and retrieving electronic messages
from the electronic mailboxes and pushing any electronic
mailboxes to the network engine to selected user subscribed
mobile wireless communications devices. The direct access
3

CA 02659807 2009-03-24
server communicates with an email source using the internet
message access protocol (IMAP) and IMAP-Idle supportable
connections in a communications channel to accept real-time
notifications. The direct access server verifies Idle command
functionality on the communications channel before relying on
the communications channel for new mail notifications.
[0016] In one example, if the direct access server determines
that messages are found for which no notification was sent, the
direct access server increases a fail count. If the fail count
exceeds a predetermined limit the direct access server switches
to polling the mail server as an email source and ceases to use
IMAP Idle. In yet another aspect, when a connection limit is
reached or exceeded to an email source, the direct access server
disables IMAP-Idle connections to the email source.
[0017] Basic components of the Direct Access email system 20
are shown in FIG. 1. The web client or network engine 22 has
various components. The worker 24 is a processing agent that is
responsible for most processing in the engine 22 and includes
SMTP and HTTP server support. It accepts email from the DA
proxy and external mail routers, formats email in CMIME, and
sends it to other components.
[0018] A Wireless Communications Network 36, such as a
cellular network or WLAN and cooperates with the worker. The
Network 36 communicates with one or more wireless communications
devices 38, such as portable wireless communications devices.
[0019] The mobile office platform 40 has different
components. The DA proxy (DA) 42 includes service through which
integrated source messages are delivered to or retrieved from by
the worker 24. It is responsible for polling sources such as
mailboxes, processing source notifications and retrieval and
update of source messages via a proxy, which could abstract
access to disparate mail stores into a common protocol. The
4

CA 02659807 2009-03-24
event server 46 is a lightweight process on a server that
receives notifications from external sources (ISPs and SMC) and
different user mailboxes and processes them asynchronously
without blocking the sender of notifications. The integrated
mail sources 48 as email service providers include non-limiting
examples such as Yahoo!, Gmail, IMAP, POP, Lotus Notes, and
Exchange in this non-limiting example. The different databases
54 store system wide data related to sites/carriers, mailbox
providers (AOL, Yahoo), service books, devices and user
accounts.
[0020] A source scheduler 104 and IMAP-Idle connection module
(manager) 120 are shown. Messages for a message to handheld can
arrive to the network engine 22. Another path is via the proxy
42. This path can be used for integrated sources. When the DA
Proxy 42 detects a new mail from an integrated source the DA
proxy 42 will fetch the message make a directory lookup for the
appropriate worker and push the message to the worker. The
worker will then perform the same operation it did for hosted
mail.
[0021] As noted before, the other path is through the proxy
42. The worker 24 is responsible for converting messages
between MIME and CMIME, encrypting and decrypting messages,
compressing and decompressing messages, and attachment viewing.
The system wide data stored in a database 54 could include
information about:
a) Sites/carriers (e.g., TMobile, Cingular);
b) Mailbox providers (AOL, Yahoo);
c) Service books;
d) Device information; and
e) Hosted mailbox mappings.

CA 02659807 2009-03-24
[0022] A database 54 can contain data related to a user
account and integrated sources such as: integrated sources,
alert rules, signature and similar items. Data in the database
54 could relate to the tracking of message UID's for each
integrated source.
[0023] The Event Server 46 is a process that acts as a
message queue for HTTP notifications from external sources (ISPs
and SMC). The messages are processed asynchronously so as not
to block the source. The processing of the message involves
dispatching to the appropriate service. The event server is
also used internally to send out subscription request via SOAP.
[0024] The proxy can include subset proxies that provide
access to external mail sources 48 via an enhanced HTTP Mail
interface. The proxy supports different mail sources in a non-
limiting example:
a) IMAP with special implementations for
AOL/Compuserve, Yahoo;
b) POP with special implementations for MSN, RPA,
Gmail;
c) Mail Connector for access to Domino and Exchange;
d) Hotmail; and
e) Outlook web access.
[0025] The DA proxy 42 is the conduit for sending and
receiving emails between the engine 22 and the integrated mail
sources 48. Additionally, the DA proxy is responsible for
detecting new mail from external mail sources and pushing to the
engine 22. Three mechanisms of detection are used for polling,
subscription to mailbox for notifications, and permanent
connections to sources.
[0026] It also provides the engine with access to User data.
It processes message from handheld messages for integrated
6

CA 02659807 2009-03-24
sources (new mail, reply, forward, delete). It also pushes
service books to the engine.
[0027] Polling of sources is scheduled at even intervals
(usually 15 minutes). Sometimes a source poll is expedited if
heuristics determines that it is likely to find new mail. A
full poll retrieves all message ids from a source mailbox to do
a full reconciliation against all message ids (UIDs) that
previous polls have found. A quick poll retrieves only a "page"
of source message ID's at a time.
[0028] Some source types (IMAP IDLE) support a notification
mechanism via a permanent connection to the source. The proxy
is responsible for making sure that these connections are
created, managed and destroyed as appropriate.
[0029] The DA proxy 42 communicates with the worker 24 over
an HTTP interface. The DA proxy handles a fixed number of users
for a particular partition. The number of users a DA proxy can
handle is calculated by measuring its performance. The more
users assigned to a partition the more DA proxies, the system
will deploy. The load is distributed evenly betweens DA proxies
any directory components.
[0030] IMAP-Idle improvements occur. IMAP-Idle is described
in RFC 2177, which is incorporated by reference in its entirety.
There are advantages for the IMAP-Idle connection limits on a
per user basis and per server basis and advantages for same.
There are two problems this improvement in IMAP-Idle solution
addresses.
[0031] First, a single host such as AOL may have X amount of
users and allow Y amount of simultaneous TCP connection (where
X>Y). If all X AOL users support IMAP-Idle, connection attempts
will be made for all X users even though only Y connections are
supported. If unaddressed, other hosts would be unable to make
other TCP connections to the host.
7

CA 02659807 2009-03-24
[0032] Second, a single user's IMAP email account may only
support one simultaneous TCP connection. If a second connection
is used to retrieve user data from the same account, the first
connection or second connection may be disconnected with or
without warning. Assuming this went unaccounted for, mail
integration would fail indefinitely.
[0033] An IMAP-Idle Java connection manager is implemented in
the system. Because there are so many varying TCP connection
limits from domain to domain, it is not desirable to set a hard
coded outbound TCP connection limit to these domains. Instead,
an IMAP-Idle connection manager is introduced to manage IMAP-
Idle connection failures. If an IMAP-Idle connection fails a
failure streak, management by the IMAP-Idle manager is increased
by one until it reaches a limit. If the limit is reached or
exceeded the source is marked IMAP-Idle "disabled" and the
source will not be connected in order to establish an IMAP-Idle
connection. Therefore, if domain A has a set limit D and the
system successfully connects D time, all subsequent IMAP-Idle
and poll connection attempts will fail. By marking sources
invalid for this type of connection, it ensures all sources have
access to this domain. If the IMAP-Idle connection was dropped,
the system determines if it dropped while an email poll
(secondary connection) was in progress. If so, the account is
marked IMAP-Idle "disabled" and the account will not be
subscribed to in the future, thus, preserving resources and
improving the user's email delivery experience.
[0034] The IMAP-Idle definition states that the IMAP server
displays the term IDLE when the server is asked what
capabilities it supports. If the server claims to support IMAP-
Idle, but fails to enter the IDLE state, the system continuously
attempts to establish IMAP-Idle connections when one is not
possible. An IMAP-Idle manager is implemented which checks the
8

CA 02659807 2009-03-24
result of attempting to establish an IMAP-Idle connection. If
the connection fails X times in a row, the IMAP-Idle feature
will be disabled so the system can stop attempting to connect to
an unsupported or incorrectly configured service.
[0035] These are instances when the email server reports IMAP
IDLE capabilities but fails to actually enter the IDLE state.
In this case the IMAP IDLE manager will track the number of
attempts to establish an IMAP IDLE connection to that server and
if the failure exceeds a pre-specified threshold, then the
system can stop attempting to connect to an unsupported service.
[0036] The system polling environment can attempt to poll the
account at an intelligent interval hoping to find new mail
messages. If new mail is available, it is downloaded and sent
to the user via their device. If this account is subscribable
(IMAP-Idle supported), the system can reduce the amount of
connections and connection attempts to the host, which do not
accept high connection rates. The system can minimize the
amount of data sent over the internet and produces a fast email
delivery system.
[0037] The IMAP-Idle connection can monitor the account for
changes that occur and immediately download new information when
an event occurs. This allows the system to skip (unneeded)
empty polls for a source that has not received any new mail.
Skipping the polls saves data transfer, any unnecessary TCP
connection, connection attempts and also real time email
delivery. This implementation is centralized and is represented
as a subscription as opposed to PALM and MS systems, which are
device and application based.
[0038] IMAP IDLE is an optional expansion of the IMAP email
accessing protocol that allows the server to send new message
updates to the client in real time. Instead of having the
system email program check for new mail every few minutes, the
9

CA 02659807 2009-03-24
IMAP IDLE allows the server to notify the email program when new
messages have arrived. The system can see incoming mail
immediately. The use of IMAP IDLE is known. However, the
difference from PALM is that the system implements this on the
system as with the DA proxy 42 not on the device.
[0039] The IMAP servers are set up to allow 30-minute TCP
connection before they may disconnect them according to the IMAP
RFC. If the system is to maintain an IMAP-Idle connection
indefinitely, it should find a method to avoid this without
missing new mail events produced by the IMAP-Idle connection in
the meantime. Because several internet domains are known to
disconnect TCP connections earlier than 30 minutes, the system
resubscribes every X minutes, where X is configurable. To
resubscribe the system quickly, it issues an IMAP "fetch" to
check if new mail was received before re-entering the IDLE
(subscribed state). This ensures the connection is kept alive
and new email events are not lost.
[0040] In accordance with non-limiting examples, IMAP
protocol is updated with a new command IDLE, using which clients
go into an `idle' mode. In this mode, an IMAP server sends
mailbox changes as untagged responses to the `idle' client, such
as when new messages are added or when they are deleted. Clients
come out of this `idle' mode by issuing a DONE.
[0041] The MOP 40 as a Direct Access server currently
supports a subscription/notification model for real-time mail
delivery. In this model, a mailbox-provider notifies the MOP
when new mail arrives at a mailbox. There is no persistent
connection between the MOP 40 and mail-provider.
[0042] By supporting IMAP IDLE, the MOP 40 can make it easy
,for the mail-providers to support real-time mail delivery. To
support IMAP IDLE, the MOP would need to maintain a persistent
connection to the mail-provider. The connections used in this

CA 02659807 2009-03-24
IMAP-Idle implementation will be used solely to detect new mail
and notify that the related source is ready to be polled. All
previous MTH and MFH jobs remain as work completed by the DA
proxy work queue and its UP servlet. The system supports real-
time notifications for all IMAP sources that support IDLE
capability.
[0043] External subscriptions are persistent subscriptions
made with external mail providers such as Yahoo and Gmail. Idle
login failures occur when after an invalid login attempt is
received trying to initialize an IMAP-Idle connection.
Receiving this failure will increment the existing login failure
streak to one.
[0044] An idle subscription failure streak will include all
connection and command related errors while attempting to
establish an idling state for a particular IMAP source.
Typically, login failures are not included in the count.
[0045] To support IMAP IDLE, the system will maintain a
separate ImapldleConnection 120 for each user in the DA Proxy 42
as shown in FIG. 2.
[0046] The ImapldleConnection 120 discovers the presence of
new mail and this triggers the normal polling mechanism that
goes through UPServlet, which will continue to be used for
polling and all MFH operations. Creating ImapldleConnections
120 in the DA Proxy helps the polling system in the DA Proxy
keep track of these connections for each source. An IOPump 122
serves as the connection manager for all ImapldleConnections
120.
[0047] Unlike external subscriptions that are persisted in
the database IMAP-Idle subscriptions are considered transient
and are only in the memory of DA Proxy.
[0048] The Source Scheduler 104 and DA Proxy keep track of
IMAP IDLE subscriptions. Unlike external subscriptions which are
11

CA 02659807 2009-03-24
persisted in the SrcMbox table with a subscriptionId, these
subscriptions are in memory. Once a poll is successful, the
Source Scheduler 104 determines if a source capable of IMAP-IDLE
is not yet subscribed. The Source Scheduler 104 creates an
ImapldleConnection for this source mailbox 114 and initiates the
subscription process. Sources that are marked with
`disableSubscribe' 115 will not be subscribed.
[0049] After each poll, the Source Scheduler 104 updates the
subscription in an ImapldleConnection. Updates to a
highWaterMark as shown in the flowchart of FIG. 3 allows the
ImapldleConnection to appropriately discover new messages when
an `idle' connection closes. Additionally, this will allow an
ImapldleConnection to pick up any changes to the source-mailbox
such as updates to the source mailbox data such as the
server/user/password.
[0050] FIG. 3 illustrates a login, determination, and IDLE to
show the IMAP-Idle connection in discovering new emails.
[0051] An optimization can be made for IMAP-IDLE sources to
immediately change the nextPoll to after six hours. For
external subscriptions, the system can change the nextPoll only
after the next poll to catch any new mails between last poll and
a successful subscribe request. The ImapldleConnection can
discover any new mail since the last poll. As a result, this
optimization can be made.
[0052] If the Source Scheduler 104 discovers that a source
should not be polled any longer, it notifies any existing
ImapldleConnection 120 to stop further notifications and cleans
up the ImapldleConnection.
[0053] The Source Scheduler 104 is notified when the
ImapldleConnection 120 discovers new mail in the mailbox. The
Source Scheduler schedules a poll upon such notification. If
the ImapldleConnection 120 cannot go into idle mode, it notifies
12

CA 02659807 2009-03-24
the Source Scheduler that the subscription had failed. Some of
the failures are Idle login failures and the remaining are Idle
subscriptions failures.
[0054] As shown in the flowchart of FIG. 3, to utilize the
IMAP-Idle connection 120 the Source Scheduler 104 must first
determine if the IMAP source is subscribable. To determine
this, the DA Proxy makes a callback to the Source Scheduler once
a poll for this source completes. The callback lists new
properties such as the high water mark and subscribability.
[0055] If the source happens to be subscribable the source
scheduler will create a new subscription job and add it to the
DA Proxy processing queue. These jobs are handled by the
subscribe and unsubscribe handlers.
[0056] The handlers' first task is determining which resource
to use to complete its job. For ImapldleConnection the Source
Scheduler is that resource. The handler makes a call into
Source Scheduler to subscribe to this specific source and is
provided a response code for the success or failure of that
process as shown in FIG. 3. The flowchart in FIG. 3 begins with
a subscribe and update of the high watermark to determine a max
UID (Block 200). Login occurs (Block 202) and a determination
made whether there is an error (Block 204). If yes, the
subscriber has failed (Block 206). If no, the idle connection
is operative (Block 208) and connection closed (Block 210).
Also, a determination is made if the UID is greater than a max
UID (Block 212) and that the max UID is equal to the max (UID's)
(Block 214). The new mail notify reconnects (Block 216). Also,
a determination after idle (Block 208) is made. Does the
response contain "Exists" (Block 218) and if yes, then the new
mail notify (idle) occurs (Block 220).
13

CA 02659807 2009-03-24
[0057] A callback is made on completion of the subscription
job. If the subscription was successful the subscribable flag
will be cleared and the source will be marked as a subscribed.
[0058] FIG. 4 is a diagram showing the source scheduler 104
and polling queue 140 when a source has already been marked
subscribable by the previous callback from the poll into the
Source Scheduler. The polling queue 140, subscription
processing module 141, DA proxy work queue 142, source scheduler
interface 143 and name server 144 are illustrated and work
together as shown.
[0059] If an ImapldleConnection 120 encounters a connection
error or an error in issuing commands, it notifies the Source
Scheduler 104 that the subscription had failed by returning an
idle subscription failure. The Source Scheduler keeps track of
the error and pulls in the next poll for that source to within
15 minutes from the last poll. If the failureStreak for this
error exceeds a configurable limit, this source will be marked
with `disableSubscribe' settings bit.
[0060] If the ImapldleConnection discovers a login failure,
it returns an idle login failure to the Source Scheduler. The
Source Scheduler bumps up the existing login failure streak on
the source. Any source with a failureStreak > 0, will not be
subscribable. Login failures will not result in persistent
`disableSubscribe' bit.
[0061] Some implementations of IMAP protocol exhibit a race
condition. If a mailbox receives a new mail after the client
goes into select state and before an idle command is issued, the
system will return an untagged `exists' response indicating the
presence of new mail. FIG. 5 illustrates a flowchart of the
method.
[0062] The system mitigates this by immediately issuing an
`idle' command after the system receives a response for a
14

CA 02659807 2009-03-24
`fetch' command. The system parses the `fetch' response
asynchronously after the `idle' command is issued. The race
condition is not avoided completely, but is reduced to a very
short interval, hopefully less than a second.
[0063] This problem is further mitigated by the mechanism
originally designed to reset IMAP timeout timers. To reset the
timeout timer the ImapldleConnection object will Issue a `DONE',
to leave the IMAP-idling state, followed by a `FETCH' to reset
the timer and check for new mail received. If mail was missed
during the previous race condition or due to a faulty idle
implementation it will be caught here. This will be executed
every 5 minutes but will be configurable.
[0064] The Source Scheduler keeps track of new mail
discovered on re-connects. If it successively discovers new mail
only on re-connect and reaches a configurable limit (default is
0 - infinity), it calls back on Source Scheduler (itself),
disabling the subscription, additionally marking the source
`disableSubscription'. On new mail notifications,
ImapldleConnection informs Source Scheduler whether the
discovery is from a re-connect (poll) or idle notification.
[0065] By setting the default to infinity the existing
connection provides a lighter polling alternative and is
therefore still acceptable.
[0066] If the Source Scheduler discovers new mail during
fall-back polls, it keeps track of streaks of
`newMailOnFallback'. If this reaches a configurable maximum,
this IMAP-Idle source will be marked with `disableSubscribe'
which is persisted in the database. For external subscriptions,
they will be unsubscribed and re-subscribed on a next poll. The
default value for this limit is 3.
[0067] Additionally, to improve user experience, the Source
Scheduler will change the next-poll to the default 15 minutes

CA 02659807 2009-03-24
when new mail is discovered on a fall back poll. For external
subscriptions, they will be unsubscribed and re-subscribed on
next poll. The system can thus address when the subscriptions
become out of sync.
[0068] If a mail-provider restricts the number of connections
allowed, the system will discover these limitations as normal
connection-failures resulting in marking the mailbox as a
`disableSubscribe.' This is also true for AOL.
[0069] Similar to POP, IMAP servers can also return `mailbox
locked' errors. If ImapldleConnection returns a `mailbox locked'
error, the source is immediately unsubscribed and marked with
`disableSubscribe'. On the other hand, if `mailbox locked' is
returned as error during normal polls, the Source Scheduler
recognizes this and if there is an existing ImapldleConnection
for the source, unsubscribes it and marks the source with
`disableSubscribe.'
[0070] If an IMAP-Idle connection is disconnected while the
source scheduler is processing a new mail notification the
scheduler will increment the IMAP subscribe failure streak and
continue with the next source. Assuming the poll succeeded the
source will be marked as subscribe-able or un-subscribe-able by
the polling mechanism. If the poll was unsuccessful the source
scheduler will continue to poll this source every 15 minutes.
[0071] If a poll connection fails while an IMAP-Idle
connection exists the scheduler will unsubscribe the source,
increase the fail-streak and expedite the poll. By providing a
mechanism to reset the failure streaks the system will not run
into a long-term problem and find all sources
`disableSubscribe.'
[0072] The system can avoid IMAP-Idle race-condition by using
another connection to check for new mails after the IMAP-Idle
connections goes into an idle mode. This can also be by
16

CA 02659807 2009-03-24
triggering additional poll every time we enter idle mode. Some
servers may close the servers far more often and the system does
not necessarily want to poll on every connection closure. The
system enters an idle mode on every connection closure. The
system can issue `fetch' and `idle' commands simultaneously,
reducing the race-condition even further.
[0073] IMAP-Idle monitoring is used to monitor the health of
the feature. The following fields will allow a manager to
determine if a particular source scheduler is able to subscribe
to IMAP sources and how the amount of subscriptions fluctuate
(errors received) during polling intervals. Different fields
can be monitored such as:
number of idle connections (cumulative);
time to subscribe (cumulative);
number of subscription requests (cumulative);
new mail notification - idle (cumulative);
new mail notification - re-connect (cumulative);
login failures (cumulative);
mailbox locked (cumulative);
connections lost (cumulative);
IMAP commands failed (cumulative);
idle state lost (cumulative);
poll failed (cumulative); and
how many disableSubscribe bit were set (cumulative).
[0074] With a poll complete callback, the source scheduler
receives a callback IMAP Idle? (Block 250). If not, exit
occurs. If yes, a determination is made whether the poll
succeeded (Block 252). If yes, a determination is made whether
the IMAP Idle connection is still idling (Block 254). If yes,
17

CA 02659807 2009-03-24
the idle subscribed fail streak is reset and the idle connection
is updated (Block 256). If the poll has not succeeded in Block
252, a determination is made whether the mailbox is locked
(Block 258), and if not, a determination is made whether the
login has failed (Block 260). If not, the system unsubscribes,
nulls tie IMAP Idle connection and regularizes the poll (Block
262). The same occurs if the IMAP Idle connection is not idling
in Block 254. If the mailbox is locked in Block 258, the
disable subscribe bit is set (Block 264). At this time, the
system unsubscribes, nulls the IMAP Idle connection and
expedites the poll (Block 266). It exits. If login failed, a
determination is also made whether the check limit was exceeded
(Block 268). This check is also made if the source scheduler
receives a callback and increases the fail streak (Block 270).
[0075] It has been noted that several IMAP servers in
production (or commercial, regular use) environments advertise
the support of the extended IMAP command IDLE, but fail to
provide new mail notifications in the SELECTED state. As a
result, no new mail is detected at the email source causing
large delays in mail flow for that particular source. In some
systems, the mobile office platform would automatically trust
all IMAP idle connections, expecting that a system would notify
when new mail was received. In one example, the mobile office
platform maintains a 15-minute polling for this source. If new
mail is detected at the source and is not found as a result of.a
new mail notification, a fail streak is increased. If this fail
streak exceeds a configurable limit, the source is Idle disabled
and will not attempt this method going forward.
[0076] In accordance with a non-limiting aspect, the system
learns the IMAP idle capabilities of a source and verifies the
Idle command's functionality before relying on it for new mail
notifications. The system now uses a "trusted" or "verified"
18

CA 02659807 2009-03-24
IMAP-Idle implementation. This overcomes the drawback when IMAP
servers are not correctly implemented and do not respond to the
IMAP idle extension. In addition to using the IMAP idle, the
system can periodically check the server using polling. If
messages are found for which no notification was sent, the
system increases a fail count. If the fail count exceeds a
certain limit, the system switches to polling that particular
server (email source) and ceases to use IMAP idle. Thus, the
system now addresses the problems when the IMAP idle fails to
deliver mail because of a poor wireless connection and had been
issuing IMAP Idle every 15 minutes or thereabouts.
[0077] Different systems such as Yahoo, GMail, and Hotmail
can be polled in addition to the notification method as invoked.
Thus, the problem overcoming the poor implementation of IMAP
idle on the server can be addressed and the detection and
switching to polling is used and without reissuing the IMAP
Idle. With Yahoo, GMail, and Hotmail, the protocols are
proprietary and it is not clear that the notification method is
disabled. The system switches to polling if the system finds
stale emails on the server (email source).
[0078] The reason why some servers fail to provide new mail
notifications in the SELECTED states is a design flaw on the
IMAP server side when the IMAP idle RFC is used as the
implementation standard. In IMAP, there are no other
notification methods if a fail streak exceeds a configurable
limit. If this method fails, the system in those cases falls
back to regular polling. GMail, Yahoo mail and Hotmail all may
have problems with the notification and the system could apply
polling periodically to make sure there is no mail left on the
server.
[0079] FIG. 6 is a flowchart showing basic steps of the IMAP
idle support with a trusted or verified implementation in the
19

CA 02659807 2009-03-24
communications channel. As illustrated, the IMAP idle
connection is first established (block 300). The system does
not trust any notification for the connection so that the
channel is open. Thus, the system through the direct access
server does not trust the connection until traffic exists on
that channel. The system establishes that it is working before
it begins to use it such as by having the server verify an Idle
command functionality before relying on the communications
channel for new mail notifications. The email source (server)
in one aspect is periodically checked (block 302) in addition to
using IMAP idle with polling. If messages are found for which
no notification was sent (block 304), a fail count is increased
(block 306). If the fail count exceeds a certain limit (block
302) that server or email source is polled and the system ceases
to use IMAP-idle (block 310).
[0080] Exemplary components of a hand-held mobile wireless
communications device 1000 that may be used in accordance with
such a system are further described in the example below with
reference to FIG. 1. The device 1000 illustratively includes a
housing 1200, a keypad 1400 and an output device 1600. The
output device shown is a display 1600, which is preferably a
full graphic LCD. Other types of output devices may
alternatively be utilized. A processing device 1800 is contained
within the housing 1200 and is coupled between the keypad 1400
and the display 1600. The processing device 1800 controls the
operation of the display 1600, as well as the overall operation
of the mobile device 1000, in response to actuation of keys on
the keypad 1400 by the user.
[0081] The housing 1200 may be elongated vertically, or may
take on other sizes and shapes (including clamshell housing
structures). The keypad may include a mode selection key, or

CA 02659807 2009-03-24
other hardware or software for switching between text entry and
telephony entry.
[0082] In addition to the processing device 1800, other parts
of the mobile device 1000 are shown schematically in FIG. 1.
These include a communications subsystem 1001; a short-range
communications subsystem 1020; the keypad 1400 and the display
1600, along with other input/output devices 1060, 1080, 1100 and
1120; as well as memory devices 1160, 1180 and various other
device subsystems 1201. The mobile device 1000 is preferably a
two-way RF communications device having voice and data
communications capabilities. In addition, the mobile device 1000
preferably has the capability to communicate with other computer
systems via the Internet.
[0083] Operating system software executed by the processing
device 1800 is preferably stored in a persistent store, such as
the flash memory 1160, but may be stored in other types of
memory devices, such as a read only memory (ROM) or similar
storage element. In addition, system software, specific device
applications, or parts thereof, may be temporarily loaded into a
volatile store, such as the random access memory (RAM) 1180.
Communications signals received by the mobile device may also be
stored in the RAM 1180.
[0084] The processing device 1800, in addition to its
operating system functions, enables execution of software
applications 1300A-1300N on the device 1000. A predetermined set
of applications that control basic device operations, such as
data and voice communications 1300A and 1300B, may be installed
on the device 1000 during manufacture. In addition, a personal
information manager (PIM) application may be installed during
manufacture. The PIM is preferably capable of organizing and
managing data items, such as e-mail, calendar events, voice
mails, appointments, and task items. The PIM application is also
21

CA 02659807 2009-03-24
preferably capable of sending and receiving data items via a
wireless network 1401. Preferably, the PIM data items are
seamlessly integrated, synchronized and updated via the wireless
network 1401 with the device user's corresponding data items
stored or associated with a host computer system.
[0085] Communication functions, including data and voice
communications, are performed through the communications
subsystem 1001, and possibly through the short-range
communications subsystem. The communications subsystem 1001
includes a receiver 1500, a transmitter 1520, and one or more
antennas 1540 and 1560. In addition, the communications
subsystem 1001 also includes a processing module, such as a
digital signal processor (DSP) 1580, and local oscillators (LOs)
1601. The specific design and implementation of the
communications subsystem 1001 is dependent upon the
communications network in which the mobile device 1000 is
intended to operate. For example, a mobile device 1000 may
include a communications subsystem 1001 designed to operate with
the MobitexTM, Data TACTM or General Packet Radio Service (GPRS)
mobile data communications networks, and also designed to
operate with any of a variety of voice communications networks,
such as AMPS, TDMA, CDMA, WCDMA, PCS, GSM, EDGE, etc. Other
types of data and voice networks, both separate and integrated,
may also be utilized with the mobile device 1000. The mobile
device 1000 may also be compliant with other communications
standards such as 3GSM, 3GPP, UMTS, etc.
[0086] Network access requirements vary depending upon the
type of communication system. For example, in the Mobitex and
DataTAC networks, mobile devices are registered on the network
using a unique personal identification number or PIN associated
with each device. In GPRS networks, however, network access is
associated with a subscriber or user of a device. A GPRS device
22

CA 02659807 2009-03-24
therefore requires a subscriber identity module, commonly
referred to as a SIM card, in order to operate on a GPRS
network.
[0087] When required network registration or activation
procedures have been completed, the mobile device 1000 may send
and receive communications signals over the communication
network 1401. Signals received from the communications network
1401 by the antenna 1540 are routed to the receiver 1500, which
provides for signal amplification, frequency down conversion,
filtering, channel selection, etc., and may also provide analog
to digital conversion. Analog-to-digital conversion of the
received signal allows the DSP 1580 to perform more complex
communications functions, such as demodulation and decoding. In
a similar manner, signals to be transmitted to the network 1401
are processed (e.g. modulated and encoded) by the DSP 1580 and
are then provided to the transmitter 1520 for digital to analog
conversion, frequency up conversion, filtering, amplification
and transmission to the communication network 1401 (or networks)
via the antenna 1560.
[0088] In addition to processing communications signals, the
DSP 1580 provides for control of the receiver 1500 and the
transmitter 1520. For example, gains applied to communications
signals in the receiver 1500 and transmitter 1520 may be
adaptively controlled through automatic gain control algorithms
implemented in the DSP 1580.
[0089] In a data communications mode, a received signal, such
as a text message or web page download, is processed by the
communications subsystem 1001 and is input to the processing
device 1800. The received signal is then further processed by
the processing device 1800 for an output to the display 1600, or
alternatively to some other auxiliary I/O device 1060. A device
user may also compose data items, such as email messages, using
23

CA 02659807 2009-03-24
the keypad 1400 and/or some other auxiliary I/O device 1060,
such as a touchpad, a rocker switch, a thumb-wheel, or some
other type of input device. The composed data items may then be
transmitted over the communications network 1401 via the
communications subsystem 1001.
[0090] In a voice communications mode, overall operation of
the device is substantially similar to the data communications
mode, except that received signals are output to a speaker 1100,
and signals for transmission are generated by a microphone 1120.
Alternative voice or audio I/O subsystems, such as a voice
message recording subsystem, may also be implemented on the
device 1000. In addition, the display 1600 may also be utilized
in voice communications mode, for example to display the
identity of a calling party, the duration of a voice call, or
other voice call related information.
[0091] The short-range communications subsystem enables
communication between the mobile device 1000 and other proximate
systems or devices, which need not necessarily be similar
devices. For example, the short-range communications subsystem
may include an infrared device and associated circuits and
components, or a BluetoothTM communications module to provide for
communication with similarly-enabled systems and devices.
[0092] Many modifications and other embodiments will come to
the mind of one skilled in the art having the benefit of the
teachings presented in the foregoing descriptions and the
associated drawings. Therefore, it is understood that the
described system and method is not to be limited to the specific
embodiments disclosed, and that modifications and embodiments
are intended to be included within the scope of the appended
claims.
24

Dessin représentatif
Une figure unique qui représente un dessin illustrant l'invention.
États administratifs

2024-08-01 : Dans le cadre de la transition vers les Brevets de nouvelle génération (BNG), la base de données sur les brevets canadiens (BDBC) contient désormais un Historique d'événement plus détaillé, qui reproduit le Journal des événements de notre nouvelle solution interne.

Veuillez noter que les événements débutant par « Inactive : » se réfèrent à des événements qui ne sont plus utilisés dans notre nouvelle solution interne.

Pour une meilleure compréhension de l'état de la demande ou brevet qui figure sur cette page, la rubrique Mise en garde , et les descriptions de Brevet , Historique d'événement , Taxes périodiques et Historique des paiements devraient être consultées.

Historique d'événement

Description Date
Requête pour le changement d'adresse ou de mode de correspondance reçue 2019-11-20
Représentant commun nommé 2019-10-30
Représentant commun nommé 2019-10-30
Accordé par délivrance 2015-05-12
Inactive : Page couverture publiée 2015-05-11
Inactive : Taxe finale reçue 2015-01-22
Préoctroi 2015-01-22
Inactive : Lettre officielle 2014-10-20
Lettre envoyée 2014-10-20
Lettre envoyée 2014-07-22
Un avis d'acceptation est envoyé 2014-07-22
Un avis d'acceptation est envoyé 2014-07-22
Inactive : Approuvée aux fins d'acceptation (AFA) 2014-05-26
Inactive : Q2 réussi 2014-05-26
Modification reçue - modification volontaire 2013-11-08
Inactive : Dem. de l'examinateur par.30(2) Règles 2013-05-10
Modification reçue - modification volontaire 2012-11-06
Inactive : Dem. de l'examinateur par.30(2) Règles 2012-05-14
Inactive : Dem. de l'examinateur par.30(2) Règles 2012-05-14
Demande publiée (accessible au public) 2010-09-24
Inactive : Page couverture publiée 2010-09-23
Inactive : CIB attribuée 2010-05-31
Inactive : CIB en 1re position 2010-05-31
Inactive : CIB attribuée 2010-05-31
Lettre envoyée 2010-01-06
Lettre envoyée 2010-01-06
Inactive : Lettre officielle 2010-01-06
Lettre envoyée 2010-01-06
Inactive : Transfert individuel 2009-11-24
Inactive : Certificat de dépôt - RE (Anglais) 2009-04-22
Exigences de dépôt - jugé conforme 2009-04-22
Lettre envoyée 2009-04-22
Demande reçue - nationale ordinaire 2009-04-22
Exigences pour une requête d'examen - jugée conforme 2009-03-24
Toutes les exigences pour l'examen - jugée conforme 2009-03-24

Historique d'abandonnement

Il n'y a pas d'historique d'abandonnement

Taxes périodiques

Le dernier paiement a été reçu le 2015-03-09

Avis : Si le paiement en totalité n'a pas été reçu au plus tard à la date indiquée, une taxe supplémentaire peut être imposée, soit une des taxes suivantes :

  • taxe de rétablissement ;
  • taxe pour paiement en souffrance ; ou
  • taxe additionnelle pour le renversement d'une péremption réputée.

Les taxes sur les brevets sont ajustées au 1er janvier de chaque année. Les montants ci-dessus sont les montants actuels s'ils sont reçus au plus tard le 31 décembre de l'année en cours.
Veuillez vous référer à la page web des taxes sur les brevets de l'OPIC pour voir tous les montants actuels des taxes.

Titulaires au dossier

Les titulaires actuels et antérieures au dossier sont affichés en ordre alphabétique.

Titulaires actuels au dossier
BLACKBERRY LIMITED
Titulaires antérieures au dossier
MATTHEW VAN WELY
Les propriétaires antérieurs qui ne figurent pas dans la liste des « Propriétaires au dossier » apparaîtront dans d'autres documents au dossier.
Documents

Pour visionner les fichiers sélectionnés, entrer le code reCAPTCHA :



Pour visualiser une image, cliquer sur un lien dans la colonne description du document. Pour télécharger l'image (les images), cliquer l'une ou plusieurs cases à cocher dans la première colonne et ensuite cliquer sur le bouton "Télécharger sélection en format PDF (archive Zip)" ou le bouton "Télécharger sélection (en un fichier PDF fusionné)".

Liste des documents de brevet publiés et non publiés sur la BDBC .

Si vous avez des difficultés à accéder au contenu, veuillez communiquer avec le Centre de services à la clientèle au 1-866-997-1936, ou envoyer un courriel au Centre de service à la clientèle de l'OPIC.


Description du
Document 
Date
(aaaa-mm-jj) 
Nombre de pages   Taille de l'image (Ko) 
Description 2009-03-23 24 1 109
Abrégé 2009-03-23 1 29
Revendications 2009-03-23 4 129
Dessins 2009-03-23 7 152
Dessin représentatif 2010-09-12 1 15
Revendications 2012-11-05 4 122
Revendications 2013-11-07 4 133
Accusé de réception de la requête d'examen 2009-04-21 1 176
Certificat de dépôt (anglais) 2009-04-21 1 157
Courtoisie - Certificat d'enregistrement (document(s) connexe(s)) 2010-01-05 1 125
Rappel de taxe de maintien due 2010-11-24 1 112
Courtoisie - Certificat d'enregistrement (document(s) connexe(s)) 2010-01-05 1 104
Avis du commissaire - Demande jugée acceptable 2014-07-21 1 162
Taxes 2011-02-13 1 37
Correspondance 2010-01-05 1 18
Correspondance 2014-10-19 1 22
Correspondance 2015-01-21 1 52