So lets start a discussion about making mailet portable and serve
multiple mail servers, yet not hamper performance. It is my thought
that Mailet 2.0 should not reqire compatibility with Mailet 1.0 (because
that limits the field to JAMES since there are parts of Mailet that do
not take portability concerns into acount and frankly I don't want to
implement them if it makes me change the logical structure of JBMS).
Controversially, I would like MailetAPI to not be bound to JavaMail as
that will mean I will need to support two parallel APIs since we will
need to abandon JavaMail internally (meaning also for mailets) for
performance reasons and to better pull off IMAP.
Perhaps I do not understand but I would like to see the removal of:
http://james.apache.org/mailet/org/apache/mailet/MailetContext.html#bounce(org.apache.mailet.Mail,%20java.lang.String)
it is unclear (bounce for a single user? The entire mail?) I'd like to
hear suggestions no how to replace it to allow:
1. Additional processing (other mailets might log things gather
statistics, etc)
2. Sub-Bouncing (which user, etc)
I would like to see the removal of:
http://james.apache.org/mailet/org/apache/mailet/Datasource.html
http://james.apache.org/mailet/org/apache/mailet/MailetContext.html#isDatasourceProvider()
and
http://james.apache.org/mailet/org/apache/mailet/MailetContext.html#getDatasource(java.lang.String)
These are neither portable or schema independent (ultimately). They can
be replaced by more generic interfaces.
I would like to see:
http://james.apache.org/mailet/org/apache/mailet/MailetContext.html#sendMail(org.apache.mailet.Mail)
http://james.apache.org/mailet/org/apache/mailet/MailetContext.html#sendMail(org.apache.mailet.MailAddress,%20java.util.Collection,%20javax.mail.internet.MimeMessage)
http://james.apache.org/mailet/org/apache/mailet/MailetContext.html#sendMail(org.apache.mailet.MailAddress,%20java.util.Collection,%20javax.mail.internet.MimeMessage,%20java.lang.String)
http://james.apache.org/mailet/org/apache/mailet/MailetContext.html#sendMail(javax.mail.internet.MimeMessage)
I'd like to see:
http://james.apache.org/mailet/org/apache/mailet/MailRepository.html
understand the concept of Folders (which should themselves have attributes)
I'd like to see:
http://james.apache.org/mailet/org/apache/mailet/MailRepository.html#lock(java.lang.String)
throw LockAqusitionException (documented runtime exception)
and http://james.apache.org/mailet/org/apache/mailet/MailRepository.html
offer the "boolean supportsLock()" or possibly this should be on the folder.
I would like to see (though it is possible that I misundersatnd its
function)
http://james.apache.org/mailet/org/apache/mailet/SpoolRepository.html
dropped as it doesn't promote portability (it dictates that hte mail
server must queue and work like JAMES)...
and replaced with something similar to
MailetRepository.getQueue(Queue.LOCAL).add(Mail);
MailetRepository.getQueue(Queue.OUTGOING).add(Mail);
MailetRepository.getQueue(Queue.OUTGOING).add(Mail,
Queue.PRIORITY_IMMEDIATE);
I would like to see:
http://james.apache.org/mailet/org/apache/mailet/MailetException.html
extend
RuntimeException.
I would like to see the bindings of
http://james.apache.org/mailet/org/apache/mailet/Mail.html to
javax.mail.* broken. JavaMail continues to be broken (especially with
regards to IMAP and its reliance on JAF and its MegaSynchroization
[http://www.jboss.org/index.html?module=bb&op=viewtopic&t=67791 only
some of the discussion/issues caputred]) and we'll likely not include it
in the final release of JBMS 1.0.
I'd like to see the contract for this:
http://james.apache.org/mailet/org/apache/mailet/MailetContext.html#getMailServers(java.lang.String)
explained. When should a mail server be aware of other mail servers via
this method?
I'd like to see a way to locate "relay servers" meaning those that it is
okay to relay to regardless of authentication. As well as some
embodyment of Policy and encrption status (meaning require
authentication, require authorization, require TLS, SSL, and isEncrypted
etc)..
I'd like to see the existence of ConfigurationRepository which allows
mailets to generically store/locate values (statistics, etc)
ConfigurationRepository.find(Class class, key);
ConfigurationRepository.create(Object, key);
ConfigurationRepository.delete(Object, key);
ConfigurationRepository.update(Object, key);
I would like to see the concept of MailConstructor Mailets. Meaning
most of these mails assume the mail has already been created, I would
like to be able to use mailets to handle the incoming stream.
Thoughts?
--
Andrew C. Oliver
Lead developer, JBoss Mail Server
JBoss, Inc.