Re: 3.9.0 and S3 BlobStore

Jerry Malcolm <[email protected]> Thu, 1 Jan 2026 09:50:19 -0600
Newsgroups gmane.comp.jakarta.james.user
Message-ID <[email protected]>
Jean,

Thank you so much for the detailed explanation.=C2=A0 One clarification tha=
t=20
might make decisions easier... I'm doing a completely clean install, and=20
I'm already set up to use imapsync to populate the new instance.=C2=A0 So n=
o=20
worries about migration.

I don't believe I care about spring vs guice.=C2=A0 I've never used a guice=
=20
version.=C2=A0 But spring-->guice should be transparent unless I've done=20
custom spring stuff, correct (which I haven't)?

So it really comes down to mysql vs. postgres, correct?=C2=A0 I've never us=
ed=20
postgres.=C2=A0 But installing and learning it is doable. But before I head=
=20
down that path, I would like to understand any other possibilities.=C2=A0 Y=
ou=20
said there were only the 4 pre-packaged assemblies with S3.=C2=A0 Does that=
=20
mean that (with a little work on my part), there 'could' be a=20
custom-packaged assembly created that would support mysql/s3?=C2=A0 =C2=A0 =
I'm a=20
programmer, but I don't purport to know the inner workings of James=20
wiring.=C2=A0 But just for exploration purposes, how big a project would it=
=20
be to make james use mysql with s3 instead of postgres with s3=20
(obviously requiring some code changes and wiring).=C2=A0 But I'm just=20
curious if this is something that is doable on my part?=C2=A0 If it's massi=
ve=20
changes... then on to postgres.=C2=A0 But I'm not adverse to a little codin=
g,=20
especially if it reduces the learning curve for a new db environment.=C2=A0=
=20
 =C2=A0Or if there are plans anytime in the immediate future for james to=
=20
release a mysql/s3 option, then I might just pay a bit more for db=20
storage and wait it out.

Again, I appreciate you taking time on New Years Day to answer my=20
questions=C2=A0 Thanks again.

Jerry


On 1/1/2026 3:38 AM, Jean Helou wrote:
> Hello jerry,
>
> I'm afraid you are a bit out of luck: james has a modular architecture an=
d
> there are multiple implementations for most if not all modules, this mean=
s
> that the number of module combination is very high.
> the packaged assemblies cover some of the combinations, some assemblies a=
re
> 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 usi=
ng
> 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 includ=
ed
> 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 b=
ug
> 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 on=
e
> way so mails you send/receive  with the postgres server will never be kno=
wn
> 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 seein=
g
> the actual errors, a full compilation running all tests takes about 5 hou=
rs
> (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 al=
so
> 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-pos=
tgres-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=E2=80=AFPM Jerry Malcolm <techstuff@malcolms=
.com>
> 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]
>>
>>