Hello jerry,

I'm afraid you are a bit out of luck: james has a modular architecture and
there are multiple implementations for most if not all modules, this means
that the number of module combination is very high.
the packaged assemblies cover some of the combinations, some assemblies are
configurable to make it possible to cover even more through configuration (
at the cost of increased package size )

Unfortunately there is no pre-packaged assembly which supports both MySQL
AND S3 blobstore today.

Only 4 assemblies have blobstore capabilities :
- james distributed
- james distributed pop3
- james postgresql
- scaling pulsar smtp ( this is a demo assembly for an SMTP only server
which uses the pulsar message broker/postgres and s3 )
so that really only leaves 2 options:
- james distributed
- james postgresql

The former is designed for large enterprise deployments and relies on
complex systems
The latter is designed for small to medium deployments

Given you are using the spring/mysql james server  today and only want s3
to optimize storage costs, I think your best bet is to go with  james
postgresql. The distributed version is designed for enterprise with tens or
hundreds of thousands of users, or for high volume servers. Cassandra is
not easy to operate.

Unless you customized it quite heavily, the spring assembly should be using
the jpa implementation to access the database, this means you can use the
provided migration tool[1]  to move you data from JPA to Postgres.
You will have to build the migration tool from source as it is not included
in the officially published artifacts for the project.
This is a one shot operation after which you will be able to use the
james-server-postgres-app assembly which supports both postgres and s3
blobstore.

The postgres server is an officially published artifact[2]  (there is a bug
in the website as the title for that link is
also  james-server-distributed-guice.zip but its only the title which is
incorrect, the link goes to the right place)
You can run both servers side by side for a while, repeatedly running the
migration tool (it is designed for this) until you are satisfied the
migration is complete with the limitation that the migration only goes one
way so mails you send/receive  with the postgres server will never be known
by the mysql server.
A basic configuration will
- store queued messages (either incoming or outgoing) in postgres
- store mailbox messages (long term storage for received or sent messages)
in s3
further configuration can store queued messages in s3 too if you want

With regards to your compilation problems it's hard to tell without seeing
the actual errors, a full compilation running all tests takes about 5 hours
(there are a lot of rather slow integration tests when you build
everything), so you probably want to either skip the tests or target a
specific project

mvn clean package -DskipTests will build everything without running the
tests
mvn clean package -am -pl :$project-name will build a project and all its
dependencies running all the tests for all the built projects, you can also
add the -DskipTests to avoid running the tests

if you encounter further errors don't hesitate to upload the output to a
pastebin or filebin of some kind and include the link, the last build for
master[3] and the 3.9.x[4] branch on the james CI are green so the build
should be ok

Cheers,
Jean

1
https://github.com/apache/james-project/tree/master/server/apps/migration/core-data-jpa-to-pg
2
https://www.apache.org/dyn/closer.lua/james/server/3.9.0/james-server-postgres-app.zip
3 https://ci-builds.apache.org/job/james/job/ApacheJames/job/master/
4 https://ci-builds.apache.org/job/james/job/ApacheJames/job/3.9.x/

On Wed, Dec 31, 2025 at 7:31 PM Jerry Malcolm <[email protected]>
wrote:

> I am so confused.  I have been trying for 5 days to upgrade to James
> 3.9.0 and begin using AWS S3 blobstore.   I've been using ChatGPT for
> guidance.  But I'm beginning to realize that ChatGPT is just making up
> answers on the fly, giving me completely different and wrong answers
> depending on the time of day.
>
> - first answer from ChatGPT - I should install 3.9.0 spring with
> JPA/mySQL and configure AWS S3 for blob storage (never could get james
> to even recognize that I had blob storage configured)
>
>   - revised answer from ChatGPT - Oh, you can't use blobstore with
> JPA/mySQL... you have to get Cassandra version to use blobstore.... took
> over a day to make cassandra happy with it's Java 17 requirement while
> keeping James 3.9.0 happy with its required Java 21.   Now I can't find
> the 'required' James 3.9.0 Spring-Cassandra version zipfile to download
>
> - revised answer from ChatGPT - Oh, there is no Spring/Cassandra.... you
> need to use 3.9.0 Guice/Cassandra, which is not recommended since Spring
> is strategic even though with last release spring was going away.....
> <head exploding icon>
>
> I'm sick of 'recommendation du-jour' from ChatGPT...  I've been on James
> / James-spring for over 20 years with mySQL.  I simply want to cut my
> horrendous RDS/mySQL expenses for James mail data by using S3 for blob
> storage.  I'll use any configuration available that I can get to work as
> long as I can have S3 blob storage.
>
> Oh, yeah... and I cloned the 3.9.0 release source from GitHub and tried
> to run maven.  maven ran for about 20 minutes, then crashed and burned
> on a bunch of errors.  So I had to go with the pre-built 3.9.0 zip.
>
> I have just one simple question.... What are my options for
> configuration in order to use AWS S3 for blob storage.
>
> Thx
>
> Jerry
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>

Reply via email to