Patent ID: 7831669

Claim:
A system for processing an electronic mail message, the system comprising: at least one processor; at least one memory communicatively coupled to said at least one processor, the memory having stored therein computer-executable instructions configured to implement a message transfer agent, the instructions further configuring the system to: a) receive and store the electronic mail message, the electronic mail message comprising a content and an envelope, the content including a body and the envelope including a plurality of recipient addresses; b) provide a first extensibility point such that a first module external to the message transfer agent can access and modify the electronic mail message during processing within the message transfer agent and prior to routing the electronic mail message, and instantiate a second extensibility point such that a second module can access and modify the electronic mail message during processing within the message transfer agent and prior to routing the electronic mail message, the first extensibility point being different from the second extensibility point, the first module being different from the second module, wherein the message transfer agent comprises the first and second extensibility points and the first module is configured to, when a number of the plurality of recipient addresses exceeds a value: determine a first subset of recipient addresses, the first subset including two or more addresses from the plurality of recipient addresses and being less than the plurality of recipient addresses; generate and return a first bifurcated electronic mail message, the first bifurcated electronic mail message comprising the body from the electronic mail message and the first subset of recipient addresses; generate and store a first modified list of recipient addresses, the first modified list comprising said plurality of recipient addresses less the first subset of recipient addresses; determine a second subset of recipient addresses, the second subset including at least a portion of the first modified list of recipient addresses; and generate and return a second bifurcated electronic mail message, the second bifurcated electronic mail message comprising the body from the electronic mail message and the second subset of recipient addresses; c) receive an error condition from the second module through the second extensibility point; and d) in response to the error condition, compare a partially-processed body of the electronic mail message with the body of the stored electronic mail message, and when the comparison does not match, replace the partially-processed electronic mail message with the stored electronic mail message and return the replaced message to the first module via the first extensibility point, and otherwise return the partially-processed message to the first module via the first extensibility point.