IP Library Granted Patent US 8,990,402
Granted Patent B2
US 8,990,402 · App. 12/365,111 · Granted Mar 24, 2015

Fast path message transfer agent

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,990,402
App. No.
12/365,111
Granted
Mar 24, 2015
Kind
B2
Abstract

A method of providing a fast path message transfer agent is provided. The method includes receiving bytes of a message over a network connection and determining whether the number of bytes exceeds a predetermined threshold. If the number of bytes is less than a predetermined threshold, then the message is written only to memory. However, if the number of bytes exceeds the predetermined threshold, then some of the bytes (e.g. up to the predetermined threshold) are written to memory, wherein the remainder of the bytes are stored onto the non-volatile storage. If the message was received successfully by each destination, then the message is removed from the memory/non-volatile storage. If not, all failed destinations are identified and the message (with associated failed destinations) is stored on the non-volatile storage for later sending.

Claims (79)

1. A method, implemented in hardware and software, comprising:

receiving, over a network connection, from a first email server by a second email server, bytes of an email message addressed to one or more intended recipients;

determining whether the number of bytes of the email message received at the second email server exceeds a predetermined threshold, wherein if not, then writing the email message only to a dynamic memory on the second email server, and wherein if so, then writing a portion of the bytes of the email message up to the predetermined threshold to the dynamic memory and storing a remainder of the bytes of the email message to a non-volatile storage on the second email server, the dynamic memory providing faster access time compared to the non-volatile storage; and

sending all bytes of the email message from the second email server to the one or more intended recipients of the email message after the second email server has received all bytes of the email message.

2. The method of claim 1 , wherein writing the email message to the memory and the non-volatile storage on the second email server further includes:

determining whether all bytes of the email message have been received;

wherein if not, then

receiving additional bytes of the email message over the network connection; and

writing the additional bytes onto the non-volatile storage; and

wherein if so, then

proceeding to re-route all bytes of the email message.

3. The method of claim 2 , wherein if the number of bytes is less than the predetermined threshold and all bytes of the email message have been received, then proceeding to re-route all bytes of the email message.

4. The method of claim 3 , further including:

accessing the email message;

sending all bytes of the email message to each destination; and

determining whether all bytes of the email message were received successfully by each destination.

5. The method of claim 4 , wherein if all bytes of the email message were received successfully by each destination, then

removing the email message from the dynamic memory and the non-volatile storage, if on the non-volatile storage; and

indicating a successful receipt of the email message.

6. The method of claim 5 , wherein if all bytes of the email message were not received successfully by each destination, then

identifying all failed destinations;

storing all bytes of the email message on the non-volatile storage on the second email server; and

indicating a successful receipt of the email message.

7. The method of claim 6 , further including retrying the failed destinations after a delay.

8. The method of claim 7 , further including:

determining whether the email message is successfully received by the failed destinations,

wherein if not, then returning to the step of retrying the failed destinations after a delay; and

wherein if so, then removing the email message from the non-volatile storage on the second email server.

9. The method of claim 8 , further including writing the email message to the non-volatile storage regardless of the predetermined threshold if a predetermined condition exists.

10. A non-transitory computer readable storage medium storing software program, the software program being executable to provide operations comprising:

receiving, over a network connection, from a first email server by a second email server, bytes of an email message addressed to one or more intended recipients;

determining if the number of bytes of the email message received at the second email server exceeds a predetermined threshold, wherein if not, then writing the email message only to a dynamic memory on the second email server, and wherein if so, then writing a portion of the bytes of the email message up to the predetermined threshold to the dynamic memory and storing a remainder of the bytes of the email message to a non-volatile storage on the second email server, the dynamic memory providing faster access time compared to the non-volatile storage; and

sending all bytes of the email message from the second email server to the one or more intended recipients of the email message after the second email server has received all bytes of the email message.

11. The computer readable medium of claim 10 , wherein the operations further comprise:

determining if all bytes of the email message have been received,

wherein if not, then receiving additional bytes of the email message over the network connection and writing the additional bytes onto the non-volatile storage on the second email server, and

wherein if so, then proceeding to re-route all bytes of the email message.

12. The computer readable medium of claim 11 , wherein the operations further comprise:

re-routing all bytes of the email message if the number of bytes is less than the predetermined threshold and all bytes of the email message have been received.

13. The computer readable medium of claim 12 , wherein the operations further comprise:

accessing the email message;

sending the email message to each destination; and

determining if all bytes of the email message were received successfully by each destination.

14. The computer readable medium of claim 13 , wherein the operations further comprise:

removing the email message from the dynamic memory and the non-volatile storage of the second email server, if on the non-volatile storage; and

indicating a successful receipt if all bytes of the email message were received successfully by each destination.

15. The computer readable medium of claim 14 , wherein the operations further comprise:

identifying all failed destinations,

storing all bytes of the email message on the non-volatile storage on the second email server, and

indicating a successful receipt of the email message if the email message was not received successfully by each destination.

16. The computer readable medium of claim 15 , wherein the operations further comprise:

retrying the failed destinations after a delay.

17. The computer readable medium of claim 16 , wherein the operations further comprise:

determining whether the email message is successfully received by the failed destinations, wherein if not, then returning to retrying the failed destinations after a delay, and wherein if so, then removing the email message from the non-volatile storage on the second email server.

18. The computer readable medium of claim 17 , wherein the operations further comprise:

writing the email message to the non-volatile storage regardless of the predetermined threshold if a predetermined condition exists.

19. A method, implemented in hardware and software, comprising:

receiving a number of bytes of an email message over a network connection;

determining whether the received number of bytes of the email message exceeds a predetermined threshold, wherein if not, then writing the email message only to a dynamic memory, and wherein if so, then writing the email message only to a non-volatile storage;

determining whether all bytes of the email message have been received;

wherein if not, then receiving additional bytes of the email message over the network connection, wherein if a total number of bytes of the email message exceeds the predetermined threshold then writing the total number of bytes only to the non-volatile storage and erasing all bytes of the email message from the dynamic memory; and

wherein if so, then proceeding to re-route the email message, accessing the email message;

sending all bytes of the email message to each destination; and

determining whether all bytes of the email message were received successfully by each destination;

wherein if the email message was received successfully by each destination, then

removing the email message from the dynamic memory or the non volatile storage; and

indicating a successful receipt of the email message; and

wherein if the email message was not received successfully by each destination, then

identifying all failed destinations;

storing the email message on the non-volatile storage; and

indicating a successful receipt of the email message.

20. The method of claim 19 , further including retrying the failed destinations after delay.

21. The method of claim 20 , further including:

determining whether the email message is successfully received by the failed destinations,

wherein if not, then

returning to the step of retrying the failed destinations after a delay; and

wherein if so, then

removing the email message from the non-volatile storage.

22. The method of claim 21 , further including writing the email message to the non-volatile storage regardless of the predetermined threshold if a predetermined condition exists.

Assignments (12)
RELEASE OF SECURITY INTEREST Recorded Mar 8, 2016
From: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS AGENT
To: CRITICAL PATH, INC.
Reel/Frame 037924/0246 →
RELEASE OF SECURITY INTEREST Recorded Dec 3, 2013
From: SILICON VALLEY BANK
To: CRITICAL PATH, INC.
Reel/Frame 031709/0175 →
CORRECTIVE ASSIGNMENT TO CORRECT THE SERIAL NO. 12/363,111 IS INCORRECT NUMBER. SHOULD BE 12/365,111 PREVIOUSLY RECORDED ON REEL 031681 FRAME 0577. ASSIGNOR(S) HEREBY CONFIRMS THE CRITICAL PATH, INC.. Recorded Dec 3, 2013
From: MIRAPOINT SOFTWARE INC
To: CRITICAL PATH, INC.
Reel/Frame 031755/0572 →
SECURITY AGREEMENT Recorded Dec 3, 2013
From: CRITICAL PATH, INC.
To: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS AGENT
Reel/Frame 031763/0778 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 26, 2013
From: MIRAPOINT SOFTWARE INC
To: CRITICAL PATH, INC.
Reel/Frame 031681/0577 →
RELEASE OF SECURITY INTEREST Recorded Nov 11, 2013
From: ESCALATE CAPITAL I, L.P.
To: CRITICAL PATH, INC.
Reel/Frame 031578/0520 →
THIRD AMENDED AND RESTATED INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Jan 31, 2012
From: CRITICAL PATH, INC.
To: ESCALATE CAPITAL I, L.P.
Reel/Frame 027629/0433 →
RELEASE OF SECURITY INTEREST Recorded Dec 2, 2010
From: SQUARE 1 BANK
To: MIRAPOINT SOFTWARE, INC.
Reel/Frame 025381/0870 →
SECURITY AGREEMENT Recorded Nov 6, 2010
From: CRITICAL PATH, INC.
To: SILICON VALLEY BANK
Reel/Frame 025328/0374 →
SECURITY AGREEMENT Recorded Jul 12, 2010
From: MIRAPOINT SOFTWARE, INC.
To: SQUARE 1 BANK
Reel/Frame 024662/0831 →
INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Jun 24, 2009
From: MIRAPOINT SOFTWARE, INC.
To: ESCALATE CAPITAL I, L.P.
Reel/Frame 022869/0804 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 31, 2009
From: TAYLOR, BRADLEY
To: MIRAPOINT SOFTWARE, INC.
Reel/Frame 022479/0101 →