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
Just a scratch area to collect misc. notes that people have made about the pending release.
See also: Roadmap
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)
config.xml must be updated as follows:
add an <ssl-factory> level to <connections>/<factory name="ssl"> configuration
move <mailetpackages> and <matcherpackages> outside from the <spoolmanager> block.
- smtphandler configuration needs a new bunch of lines for its default configuration.
move and *rewrite* <spoolRepository> outside the <mailstore>
add the <mailet match="All" class="PostmasterAlias"/> as the first mailet of the "root" processor. This was hardcoded in 2.2.0 and previous. Now we made it configurable.
changes that are only new "defaults" and could be ignored by upgrading users:
- added the "bounces" processor and made the remotedelivery to use it by default.
- added a few more configuration samples (bayesian/smime mailets, derby configuration).
- remove the fetchpop configuration (fetchpop has been removed)
custom mailets need a few changes:
avalon upgrade, needs only a global search & replace:
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).
- Fix for previous commit (update to JAMES-407)
Applied patch from Anagha Mudigonda (update to JAMES-407) Improved UnknownCommandHandler, added messageState to the SMTPSession.
- Updated excalibur libraries to final releases (part of JAMES-406)
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.
Hopefully reintroduced backward compatibility (removed in r239947) for MailetContext.storeMail() (untested) (related to JAMES-392 and JAMES-414). Also fixed Loader.java indentations.
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
- 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.
Moved LocalUsersRepository from smtpserver to core: it's used by more blocks (part of JAMES-412)
- version to 2.3, not 3.0
Removed the MailStore and changed the dependent object to need Store instead (part of JAMES-412)
- remove no longer used directory
- 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)
- Sample configuration for Additional "received for" headers to Fetchmail (JAMES-360)
- Added support for Additional "received for" headers to Fetchmail (JAMES-360)
- Upgraded Bouncycastle to 129 and java 1.4+ only (no more java 1.3 compatible) (JAMES-399) Added SMIME mailets for signature verification and message decrypt (JAMES-398 / JAMES-257) Removed bc jce provider from the repository: to use SMIME the user will need to download bcprov from the bouncycastle website
- DSNBounce often reported the dsn Status 5.5.0 incorrectly. Added a conversion table for SMTP code to DSN code when SMTP code is available. (JAMES-361)
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.
- Correctly report missing sqlDef in sqlResources (JAMES-295). Thanks to Mark Daring for reporting this!
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)
- Import cleaning and changes to remove excalibur-collections to POP3Handler. Move "candidates" libraries to the official lib / remove unused libraries (JAMES-391)
- Forgot to commit this files for the previous upgrade to dnsjava 2.0.0 (JAMES-388). Also cleaned old comments (they are persistent in svn).
- Cleaning old "candidates" libraries (alredy present in libs)
- Upgrade to dnsjava 2.0.0 (JAMES-388) Add derby support (JAMES-390) Invert "precompilation" logic for jdbc3 (JAMES-389) Move "candidates" libraries to the official lib / remove unused libraries (JAMES-391) Also updated some old build.xml jar reference and removed unused rows from include.properties (e.g: xerces, commons-net)
- 8BITMIME announce support (see also JAMES-52). SMTPHandler cleaning: unused variable removed.
- added Locale.US to toUpperCase and toLowerCase (JAMES-323). Cleaning of imports, unused variables, unnecessary class casts in the 4 involved files.
MimeMessageWrapper: fix for long subjects (JAMES-356). Imports reorganized.
- "return" inside a finally block make no much sense: better to move it after
removed "enum" for jdk1.5 compatibility (JAMES-237). Imports cleaned in MessageProcessor and UsersLDAPRepository.