James version 2, currently at version 2.2.0, is relatively stable. While James v3 is developed, there will be continuing work on James v2 in the context of supporting necessary features on a stable platform.

Release v2.3.0 Planning Area

To-do

Because we added fast-fail, we should add additional support to allow content-based white listing, e.g., the Habeas or SenderIs checks. Else, those will never happen in a fast-fail configuration because fast-fail will have prevented the message from getting that far.

Because of the SVN refactoring, the ANT script for building the site and rolling the packages needs to be updated.

We should test latest phoenix trunk and integrate it in this release to fix phoenix issues (and classloading issues for mailets)

MailStore interface has been removed: mailets looking up the MailStore should now lookup a Store (org.apache.avalon.cornerstone.services.store.Store)

SVN Log Snapshot

Fixed a bug compiling this mailet with latest jdks. The bayesian mailet does extend this class with its own anonymous inner class and the this.getClass() was returning the name of the anonymous class (e.g: ClassName$2).

Splitted LocalDelivery in 2 mailets. Mantained a wrapper LocalDelivery that works like before. (#4 and part of #5 in JAMES-414) I named the storing mailet "ToMultiRepository" because I want to make it more generic later. The only difference between the refactored LocalDelivery and the original is in the Delivered-To header: the old mailet added a Delivered-To with the address entering the mailet while the new one put in the Delivered-To the actual mailbox (e.g: After aliasing). More documentation on new configurations will come later too.

Moved the storeMail code from James (MailetContext) to remoteDelivery (also part of JAMES-392). 1) we don't use MailetContext.storeMail anymore and we can safely remove that deprecated method. 2) we can now override enableAliases/enableForwarding in the local LocalDelivery configuration.

Strip RFC-821 source routing information. JAMES-296

Use LinkedList for queue handling instead of ArrayList (small optimization for large expansions)

Applied patch from Anagha Mudigonda (update to JAMES-407) Now SMTPhandler implements SMTPSession interface. Remove the inner class implementation Removed unecessary interfaces from SMTPSession interface Made changes to SMTPHandlerChain that doenot allow the server to start if there are no commandHandlers registered or if there are commandHandlers for mandatory commands : MAIL, RCPT and DATA.

Removed unused dependecies from the current assembly/xinfo: first task of JAMES-412

Fix indentation spaces: a previous commit contained tabs.

We always cast this Mail to MailImpl: I just moved the cast to the first assignment

Make use of ContainerUtil methods. Less code, better logging/checks (e.g: configure does check for null and run exceptions), and make it simpler to find out where we depend on Avalon dependencies propagation.

First version of the "James inprotocol handling framework" (JAMES-407) from Anagha Mudigonda.

8BITMIME support while delivering. Added conversion to 7bit when the transport is not sun javamail and when the remote host does not support 8bitmime (JAMES-52). Also re-activated by default the EHLO salutation: with HELO 8bitmime is not available. (JAMES-410)

Reverted the kernel changes introduced while fixing JAMES-406. We don't want to enable MX4J by default. Also added a comment for the future.

Switched UsersLDAPRepository from Component to Service. Probably Noel missed this doing the merge. We now no longer have Component/ComponentManager references in our codebase.

ResettableFileInputStream was present twice in the codebase. And it is identical. Just removed the one from filepair and changed the references to the one in util.io

Expanded package.* imports to have a better view of dependencies, removed unused imports in involved files, updated copyright year in involved files.

Updated phoenix and james to the latest avalon-framework (4.3RC2), updated all of the cornerstone/excalibur libraries and removed deprecated ones (excalibur-io - JAMES-408). Also removed xml handling libraries (JAMES-409 - included from jdk1.4+ no more used now that we don't need jdk1.3) (this is a part of the JAMES-406 task)

Phoenix failed to start if installed under a "bin" directory (JAMES-250). Thanks to Paul Gallagher for pointing this out. This fix is for phoenix and not James but we now host our phoenix distro.

Moved SMIMESign and its Abstract to the new smime subpackages (JAMES-400). Also updated ASF copyright to 2005 and cleaned imports.

The delivery-status created by DSNBounce was not rfc1894 compliant (it ab-used rfc822 container) (JAMES-378). Changed it to text-plain (it is not fully compliant but most compliant than before). Added support for only headers original message attachment (heads) and removed inner DSNStatus (the same class was already in the util.dsn package)

Fix for readUserFromResultSet. Lines 49-50 in the DefaultUsersJdbcRepository.java are reversed for the getString values (JAMES-329). Thanx to Vaughan Hines for pointing to this. I also added a comment to the class to easily remember that the class is unused and we could remove it when needed.

Added hsqldb sample configuration block to config.xml (JAMES-395). I added it to provide an alternative to the "bundled" derby.

Changed the column order for the primary key of SpoolRepository createTable (JAMES-396). If you use a db different from mysql (I tested it) and db2 (it was already correct) you should check the performance with the altered key and report back to JIRA the results.

Added hsqldb support in sqlResources.xml (JAMES-395) I added a new configuration because current "hypersonic" configuration matched a different product id.

DSNBounce configured by default (JAMES-357) Also added a note in the smtpserver "bind" usage.

Added commented configurations to support derby (JAMES-390)

Reverted a small code patch about single ip per mx committed by mistake (it was from another issue)