synchronize multiple James instances across servers

cryptearth <[email protected]> Sat, 8 Mar 2025 03:05:31 +0100
Newsgroups gmane.comp.jakarta.james.user
Message-ID <[email protected]>
Hello there dear James devs and fellow James users,

my hoster OVH currently offers me a great deal on VPSs for less than 12 
bucks a year (less than 1 buck per month) in several datacenters around 
the world. I really tempt to get that deal as I have some ideas to 
utilize multiple servers - having them around the world like in 
Australia and Canada is just a bonus.
One thing I plan to implement is to setup James on each of the servers. 
But then the question came up: How to synchronize them?
Currently I use my home server only as a backup without any 
synchronization with my main root server. In fact: It's currently not 
running due to some issues I have with my home server I have to fix 
first before get James running again.
Now when scaling up to several servers around the world it would be cool 
to take advantage of that by combine them with synchronization. But as 
the additional systems are VPSs only I'd like to setup a master-slave 
setup with each slave James on the VPSs sync up to the master James on 
my powerful root server.
First I thought about fetchmail to at least pull in mails from the 
slaves to the master - but fetchmail is only part of the deprecated 
spring build. As I like to have my mailstorage in a database I would 
like to keep using the guice-jpa build instead of switching the the 
guice-distributed which doesn't use jpa and seems to be meant for use 
with AWS S3 buckets.
I also could write some java code using the java mail api working in a 
fetchmail way itself - but I'm unsure how to inject mails from other 
servers properly into the main server so they do look like if they were 
receive by the masterserver itself.
Could it be done by just synchronizing the MariaDB databases in the 
background or would fiddle with the database while James is running 
screw it up like the several counters for mails and mailboxes?
If James 3.x isn't suited for such a use case maybe that's something to 
be considered for 4.0? Or is that too late into the current development 
now and would delay a 4.0 release?

I would like to explore this idea further to see if and how James can be 
used in a distributed cluster like other mailers can. Building a James 
mail server cluster sounds just cool - and seen from "well, big 
companies like google have several hundrets to thousands mail servers 
deployed around the glob all working together" it sure has to be 
possible with James as well - as broken down it's just some listeners on 
some server sockets with some database backend synchronized by a message 
bus. This should be extendable across multiple servers.

Have a nice weekend everyone.

Greetings from Germany,

Matt