Receives a MessageContainer from JamesSpoolManager and takes care of delivery
the message to remote hosts. If for some reason mail can't be delivered
store it in the "outgoing" Repository and set an Alarm. After the next "delayTime" the
Alarm will wake the servlet that will try to send it again. After "maxRetries"
the mail will be considered undeliverable and will be returned to sender.
TO DO (in priority):
1. Support a gateway (a single server where all mail will be delivered) (DONE)
2. Provide better failure messages (DONE)
3. More efficiently handle numerous recipients
4. Migrate to use Phoenix for the delivery threads
You really want to read the JavaMail documentation if you are
working in here, and you will want to view the list of JavaMail
attributes, which are documented here:
http://java.sun.com/products/javamail/1.3/docs/javadocs/com/sun/mail/smtp/package-summary.html
as well as other places.

run()
Handles checking the outgoing spool for new mail and delivering them if
there are any

void

service(Mail mail)
For this message, we take the list of recipients, organize these into distinct
servers, and duplicate the message for each of these servers, and then call
the deliver (messagecontainer) method for each server-specific
messagecontainer ... that will handle storing it in the outgoing queue if needed.

service

For this message, we take the list of recipients, organize these into distinct
servers, and duplicate the message for each of these servers, and then call
the deliver (messagecontainer) method for each server-specific
messagecontainer ... that will handle storing it in the outgoing queue if needed.