This document records what was done between releases. As always, thank you to everyone who contributed code, documentation, bug reports, and feedback.

Version 2.3.0rc5

Released 12 October 2006

Detail

Bug

  • [JAMES-625] - an empty mbox will cause an error at pop3 login
  • [JAMES-644] - FileRegexMatcher possibly leaks minor memory on startup
  • [JAMES-649] - error "OutOfMemoryError: JAVA HEAP SPACE" in connections log file when doing a POP TOP for 4000 messages
  • [JAMES-655] - MboxMailRepository throws NPE when storing mail with mail from: <>

Version 2.3.0rc4

Released 2 October 2006 Detail

Bug

  • [JAMES-626] - Invalid (outdated) urls in config files.
  • [JAMES-631] - Default host configuration for InSpammerBlacklist is relative: it should contain a trailing "." or it will reject all mail when the default domain has an "*" IN A rule.
  • [JAMES-638] - Wrong default encoding in text message (Autoconverted: from 8bit to quoted-printable)
  • [JAMES-639] - SerialUID is not hardcoded

Task

  • [JAMES-618] - Move server-site documents from james/server repository to james/site/server repository
  • [JAMES-634] - Fix m2 projects to not lookup dependencies on ibiblio, to simplify the website build and to include 2.2.0 and 2.3.0 docs

Version 2.3.0rc3

Released 15 September 2006 Detail

Bug

  • [JAMES-327] - Mailet overview not complete
  • [JAMES-579] - Update license headers and NOTICE to follow the latest ASF requirements
  • [JAMES-591] - LogMessage mailet use wrong configutre option
  • [JAMES-594] - JVM_OPTS get passed two times
  • [JAMES-603] - Outgoing spooling stuck over old mails when more than 1000 old mails are present in outgoing.
  • [JAMES-609] - MailImpl.setMessage and possible NPE: regression from 2.2.0 and 2.3.0rc1

Task

  • [JAMES-541] - Check what we need to bundle bcprov BouncyCastle JCE provider
  • [JAMES-613] - Define a new version for Mailet API and update James.java to return the new version.

Wish

  • [JAMES-581] - Add an "Upgrade documentation" to our docs explaining the upgrade from 2.2.0 to 2.3.0

Version 2.3.0rc2

Released 12 August 2006 Detail

Bug

  • [JAMES-574] - Annoying logging of whitelist/blacklist nomatching as "unknown host exception thrown: listname" if INFO is enabled
  • [JAMES-580] - NPE is issued when receiving a "read receipt" from MS Outlook, and <checkValidSenderDomain> is set to true
  • [JAMES-584] - FileStreamStore diskspace leak for removed messages in file based spool under windows
  • [JAMES-585] - SMTP Server may leak temporary ($[JAMES}/temp/*.m64) files
  • [JAMES-587] - CommandListServManager does not properly handle invalid commands.
  • [JAMES-588] - XMLResource getString methods have incorrect javadocs, and one will throw an NPE.
  • [JAMES-612] - James File Repository Error: Too many open files

Task

  • [JAMES-432] - Reorganize and update xdocs documentation and site generation

Wish

  • [JAMES-582] - Released packages confusions (name, artifacts)

Version 2.3.0rc1

Released 25 July 2006 Detail

Bug

  • [JAMES-566] - Fastfail DNSRBL blacklisted messages are rejected even if the sender user is successfully SMTP AUTHenticated
  • [JAMES-570] - James insert a Return-Path: null in outgoing email

Task

  • [JAMES-568] - reorganize download area structure

Version 2.3.0b3

Released 15 July 2006 Detail

Bug

  • [JAMES-554] - Set the right svn property for excutable files
  • [JAMES-559] - Message body get lost after call saveChanges() and move to other processor
  • [JAMES-560] - SetMimeHeader not throw an MessagingException if needed config values missed
  • [JAMES-561] - User aliasing does not work

Version 2.3.0b2

Unreleased Detail

Bug

  • [JAMES-527] - data-source for default derby maildb is configured with a relative path
  • [JAMES-535] - Denial of service (CPU consumption) via a long argument to the MAIL command.
  • [JAMES-538] - Original headers are lost when trying to alter headers of a cloned message
  • [JAMES-540] - catch lifecycle problems for handlers

Improvement

New Feature

  • [JAMES-537] - Add ConfigOption to disable the RemoteManager

Task

  • [JAMES-496] - Add a default hardcoded configuration for the SMTPHandlerChain
  • [JAMES-529] - Add a GenericAddFooter for use in AddFooter and CommandListservFooter
  • [JAMES-536] - Decide what to do with repository implementations configured by default (db/dbfile/file)

Version 2.3.0b1

Released 9 June 2006 Details

Bug

  • [JAMES-499] - Inconsistent usage of the lastUpdated field for Mail objects
  • [JAMES-505] - ClassCastException in UsersRepositoryAliasingForwarding using file based users store
  • [JAMES-512] - OutOfMemoryError -- object not released.
  • [JAMES-522] - Having the ClamAVScan mailet configured, but clamd unavailable when JAMES starts, keeps JAMES from starting.
  • [JAMES-524] - James fails to create mysql tables with mysql-4.1.

Task

  • [JAMES-513] - Rename AddHeader and AddHeaderHandler

Version 2.3.0a3

Details

Bug

  • [JAMES-456] - AddFooter mailet javax.mail.internet.ParseException
  • [JAMES-474] - NullPointerException and bodymessage lost with weird configurations in message spooling
  • [JAMES-489] - ArrayIndexOutOfBoundsException in RemoteDelivery when an mail has errorstate and error_message 0
  • [JAMES-490] - Javamail 1.4 regression: SocketFetcher changed to require SocketFactory implementation
  • [JAMES-501] - sendmail.py get not include in build
  • [JAMES-503] - SpoolManager locking issues
  • [JAMES-504] - RemoteDelivery threads do not unlock delayed mails

Version 2.3.0a2

Details

Bug

  • [JAMES-368] - AddFooter couldn't process mails which MimeType is multipart/related
  • [JAMES-419] - NPE during 8bit conversion of non-mime messages
  • [JAMES-434] - NPE on empty sender and AUTHenticated user
  • [JAMES-443] - AddFooter and Encoding issues
  • [JAMES-446] - NPE while fetching mail (FetchMail)
  • [JAMES-447] - ClassCastException when storing multipart message without Msg ID
  • [JAMES-452] - Broken messages after passing james
  • [JAMES-455] - AddFooter mailet throw UnsupportedEncodingException
  • [JAMES-458] - SSL not working in James 2.3.0a1
  • [JAMES-459] - Incompatible/Duplicate excalibur-cli-1.0.jar library in classpath
  • [JAMES-460] - Running James as an NT service
  • [JAMES-462] - Error in message.getLineCount (Error using NotifyPostmaster with James 2.3)
  • [JAMES-466] - java.sql.SQLException: Error reading from InputStream java.io.IOException in current trunk
  • [JAMES-467] - corrupt messages in james trunk
  • [JAMES-470] - DNSRBLHandler config error
  • [JAMES-473] - AddHeaderHandler configure bug
  • [JAMES-475] - SQLException on james trunk after build and without modifications of config.xml
  • [JAMES-476] - NPE in RemoteDelivery
  • [JAMES-482] - incorrect state on duplicate mail (LinearProcessor)

Improvement

  • [JAMES-158] - Stream body in JDBCMailRepository.store(Mail)
  • [JAMES-299] - Support for SMTP auth to gateway server in RemoteDelivery mailet
  • [JAMES-371] - Speed improvement in SpoolManager
  • [JAMES-438] - add GenericMailet.getInitParameter(name,default)
  • [JAMES-440] - Improve DBCP: provide more DBCP options, like removeAbandoned
  • [JAMES-441] - Add an option to support aliases (CNAME) for MX records
  • [JAMES-445] - Enforcement for HELO/EHLO commands before MAIL
  • [JAMES-450] - "LocalUsers" user repository should be wired in the assembly and not hardcoded in components
  • [JAMES-469] - Make SMTP message queuing configurable (as an Handler)
  • [JAMES-477] - Configure option to disable heloEhloEnforcement to be compatible with james < 2.3.0
  • [JAMES-478] - Only check against RBL if the client is not allowed to relay

New Feature

  • [JAMES-427] - [PATCH] Introduce Unit Testing
  • [JAMES-437] - add failed recipient address to log when authorization fails
  • [JAMES-465] - Check for valid sender domain in mail from
  • [JAMES-468] - Limit MaxRcpt per Email
  • [JAMES-471] - Tarpit support

Task

Wish

  • [JAMES-451] - Check for valid domain in HELO

Version 2.3.0a1

Released 15 February 2006 James 2.3.0a1 is "storage" compatible with 2.2.0 (It uses the same files/db formats of James 2.2.0). Configuration should be updated following this instructions. Mailets developed against 2.2.0 are not binary compatible with 2.3.0 but rebuilding mailets in 2.3.0a1 should be an easy task: just replace "Component"s with "Service"s and replace "MailStore" with "Store" and rebuild. Below are some highlights of features and changes already available:
  • Phoenix container upgraded to the latest trunk: better classpath management for mailets
  • Derby support: also made it the default storage engine
  • JavaMail 1.3.2 (not JavaMail 1.3.3 because of known bugs with Base64 encoding)
  • Upgraded dependencies to the latest known stable releases (dnsjava, excalibur components, cornerstone, etc.)
  • Removed FetchPop
  • Command pattern for SMTPServer configuration (make it easier for developers to customize fastfail)
  • Increased components granularity/flexibility: many top level components have been refactored to be more modular (look at the new assembly.xml)
  • SMTP server now supports 8BITMIME, ENHANCEDSTATUSCODES, PIPELINING
  • Introduced a few experimental S/MIME and Bayesian matcher/mailets
  • Fixed more than 40 bugs against 2.2.0
  • And much more!
Details

Bug

  • [JAMES-138] - Don't keep all mailboxes in-memory forever
  • [JAMES-152] - When a Received header is invalid mail may be created with a null remote address and host name
  • [JAMES-154] - fetchmail config. files not copied to .sar
  • [JAMES-237] - J2 1.5'enum' is a keyword
  • [JAMES-250] - fail to start if installed under a "bin" directory
  • [JAMES-264] - mail list loop caused by using Return-Path
  • [JAMES-286] - Exceeding maximum value with MAIL SIZE causes NullPointerException
  • [JAMES-295] - Missing sqlDefs wont be detected
  • [JAMES-296] - James does not handle Source Routing
  • [JAMES-300] - Fetchmail can't fetch mails
  • [JAMES-305] - AttachmentFileNameIs never matches if the message is S/MIME signed
  • [JAMES-306] - AttachmentFileNameIs may throw UnsupportedEncodingException
  • [JAMES-311] - Nntp very picky with clients
  • [JAMES-312] - AttachmentFileNameIs matcher may throw an Exception examining a multipart/alternative message
  • [JAMES-316] - java.lang.ArrayIndexOutOfBoundsException from RemoteDelivery
  • [JAMES-317] - FromProcessor doesn't delete, throws ClassCastException
  • [JAMES-318] - java.lang.NullPointerException when host is unknown
  • [JAMES-320] - Some messages cause POP3 output stream to freeze on RETR.
  • [JAMES-323] - using toUppercase, toLowerCase, equalsIgnoreCase without specifying the locale is a bug
  • [JAMES-328] - TOP <msg> 0 does not return a terminator on error
  • [JAMES-329] - DefaultUsersJdbcRepository readUserFromResultSet incorrect
  • [JAMES-337] - Exception when FromRepository tries to delete a message
  • [JAMES-343] - James does not compile using Sun JDK 5.0
  • [JAMES-356] - MimeMessageWrapper does not handle multiline headers
  • [JAMES-359] - remote address from Received header is not handled
  • [JAMES-361] - DSNBounce often report the dsn Status 5.5.0 incorrectly
  • [JAMES-372] - Inboxes deleted during OutOfMemoryError
  • [JAMES-378] - DSNBounce creates not rfc1894 compliant notifications
  • [JAMES-379] - MailImpl.duplicate() should also clone attributes and not only the container HashMap
  • [JAMES-380] - ESMTP Compliance fix
  • [JAMES-383] - new posts hanging
  • [JAMES-387] - Exception in BayesianAnalysis
  • [JAMES-396] - Wrong column order (IMHO) in primary key definition for SpoolRepositories.
  • [JAMES-413] - James does not resolve CNAME DNS registrations
  • [JAMES-417] - ClassCastException handling the recipients after a DSNBounce
  • [JAMES-418] - Loader uses wrong method to obtain class loader/doesn't set context class loader
  • [JAMES-420] - Sometimes messages are delayed or stalled in the spool
  • [JAMES-421] - MailImpls sharing MimeMessages / LinearProcessor not cloning it after a partial match.
  • [JAMES-428] - Deadlock in ServerConnection
  • [JAMES-430] - MailImpl#writeContentTo leaks thread
  • [JAMES-431] - Line ending and CRLF.CRLF issues in POP3 and SMTP
  • [JAMES-435] - James Service Wrapper displays wrong James version
  • [JAMES-436] - James trunk cannot be built with jdk1.4

Improvement

  • [JAMES-270] - Add MailAttributes to indicate when default values have been applied
  • [JAMES-303] - AttachmentFileNameIs matcher should be able to analyze zip file attachments
  • [JAMES-321] - Comments on configuri
  • [JAMES-333] - Build Broken in HEAD revision
  • [JAMES-338] - Upgrade to JavaMail 1.3.2
  • [JAMES-357] - DSNBounce should be configured by default
  • [JAMES-360] - Support for Additional "received for" headers: e.g. X-Envelope-To
  • [JAMES-363] - Move PostmasterAlias from code to james-confix.xml
  • [JAMES-369] - Always announce AUTH capability to clients
  • [JAMES-375] - RFC 1854 - Command Pipelining support
  • [JAMES-377] - rfc2034 ENHANCEDSTATUSCODES compliance
  • [JAMES-388] - Upgrade to dnsjava 2.0.0
  • [JAMES-389] - Invert "precompilation" logic for jdbc3
  • [JAMES-395] - Support latest hsqldb in sqlResources.
  • [JAMES-398] - Add SMIME mailets for signature verification and message decrypt
  • [JAMES-399] - Update bouncycastle to 129 and remove jdk13 compatibility
  • [JAMES-407] - James inprotocol handling framework
  • [JAMES-410] - Re-enable EHLO support in RemoteDelivery
  • [JAMES-411] - update Mailet's Mail to support most of the current james mailets
  • [JAMES-412] - Increase James component granularity / flexibility
  • [JAMES-414] - Add more flexibility to LocalDelivery

New Feature

Task

  • [JAMES-149] - Add soft-fail to unresolved received from domains
  • [JAMES-190] - Apache license 2.0
  • [JAMES-391] - Move "candidates" libraries to the official lib / remove unused libraries
  • [JAMES-392] - Resolve deprecation use from MailetAPI for the next release
  • [JAMES-393] - Use Derby and db providers by default instead of file repositories.
  • [JAMES-394] - Remove OLD mm.mysql driver (not compatible with newer MySQL db)
  • [JAMES-400] - Move previous SMIME matcher/mailets to the new "smime" subpackages
  • [JAMES-406] - Investigate about libraries upgradability (cornerstone/excalibur/avalon/phoenix)