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] >> >>