Upgrading Comments

James upgrading involves a number of steps, each of which is described in some detail in the following sections. But as this sequence of steps has confused some users in the past, additional comments seem warranted.

It is important to realize that the James configuration files are not unpacked from the James distribution until the first time James is started. This is a consequence of the design of the Avalon Phoenix container used to run James. Once James has been started, the distribution will be unpacked. The server should be stopped, the configuration files edited, and the server restarted.

So the Upgrading sequence is: 1) Start, 2) Stop, 3) Move 4) Edit, 5) Restart.

Copy mailboxes and users

Copy mailboxes and users

Remove the apps/james/var directory and copy the apps/james/var directory of the old james installation in this place.

Copy and modify config.xml

Remove the fetchpop block

It's necessary to remove the fetchpop block in config.xml because fetchpop was removed in 2.3.

Move mailet and matcher packages config

Move <mailetpackages> and <matcherpackages> outside of the <spoolmanager> block.

Add necessary mailets

Add the following line as the first mailet of the "root" processor:

 
<mailet match="All" class="PostmasterAlias"/>

This was hardcoded in 2.2.0 and previous. Now we made it configurable.

Move the spoolrepository config

Move the spoolrepository out of the mailstore. Its also necessary to change the config syntax. For example:

<spoolRepository>
  <repository destinationURL="db://maildb/spool/spool" type="SPOOL"/>
</spoolRepository>
Must converted to
<spoolrepository destinationURL="db://maildb/spool/spool" type="SPOOL"/>

Move the objectstore

Move the objectstore config into the mailstore config.

Add SSL to server-sockets

To be able to use SSL you need to add this SSL config to the server-sockets block:

 
<!--
<factory name="ssl" class="org.apache.avalon.cornerstone.blocks.sockets.TLSServerSocketFactory">
  <ssl-factory>
    <keystore>
      <file>conf/keystore/</file>
      <password>secret</password>
      <key-password>keysecret</key-password>
      <type>JKS</type>
      <protocol>TLS</protocol>
      <algorithm>SunX509</algorithm>
      <authenticate-client>false</authenticate-client>
    </keystore>
  </ssl-factory>
</factory>
-->

Modify costum mailets if necessary

Please note the following things that were changed. So maybe it's necessary for you to change some stuff in your mailets.

Avalon updates

  • avalon Component has been replaced by avalon Service
  • avalon Composable has been replaced by avalon Serviceable
  • avalon ComponentManager has been replaced by avalon ServiceManager

Cornerstone updates

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

Start James

Now you should be able to start james without problems.