Re: James 3.8 one OpenSuSE 15.5

2024-01-09 Thread Rene Cordier

Hi Matt,

Let me answer you this time below in each of your points :)

Cheers,

Rene.

On 1/9/24 21:27, cryptearth wrote:

Hello Rene,

thank you for the kind words.

May let me answer your points:

- Spring vs. Guice: I use James since the Beta of 3.0 and if I recall 
correctly back then the Spring package was the one to use. By the 
usual "never change a running system" I not changed since. I had a 
quick look into it, but unfortunately the links on the install 
instructions https://james.apache.org/server/install.html only lead to 
a 404 - so there's something missing. Also I seem to require docker - 
which I don't have any experience with. I'd rather prefer just to 
build a package, unpack it and start it without having to deal with 
any extra containerization around it. It seems I require some help to 
setup a guice install.


Regarding the 404 on the install page, it looks like you are right. It's 
not normal and I might take a look at it, thanks for the feedback! 
However, docker is one way, but like Sprint you can still just run a jar 
with Guice as well. You can see the download page for example (where the 
links seem to work) : https://james.apache.org/download.cgi .


If you want to try to switch to Guice, the JPA james server is the one 
for you, that you can plug with MariaDB. The distributed version is for 
heavy deployments (which I don't think interests you here) with 
cassandra, opensearch, rabbitmq, ... => 
https://www.apache.org/dyn/closer.lua/james/server/3.8.0/james-server-jpa-guice.zip 
. You will see in the README as well in the zip some basic instructions 
to run it, with docker or manually with the jar like you are used to.


I totally understand the reason behind the fact that you started with 
Spring, so far it works, and it's safe to stick to it. Quite a fair 
statement actually. The problem is that though the main development 
efforts since a while are being done on Guice, and the Spring one is 
quickly maintained, as nobody seems fully willing to keep developing on 
it now. It works but could have potentially some vulnerabilities... I'm 
thinking for example the spring dependencies, that are old and outdated 
I think^^'




- as for using MariaDB: This goes back to 2015 when I started to rent 
my server and own domain. Back then I had basically no knowledge about 
server administration let alone set up a mail server. Although 
there're complete guides on how to setup postfix with dovecot and such 
on opensuse I not managed to get it working. So I looked for a simple 
complete solution and ended up using Citadel/UX. For some reason with 
some update it broke to a state I wasn't able to start it again. Hence 
I wasn't able to get any data out of it as for some reason I just was 
not able to access the BerkeleyDB data file. As I also wasn't able to 
get the regular stuff with maildir running I just wanted a setup using 
a regular MySQL not just for config- and user-data but also as the 
mail storage backend so that in the event I encountered such a 
situation again I can just use regular tools to restore a mysql 
database. As I'm also a hobbyist Java developer for me it was a simple 
idea of "there has to be some simple mail server implemented in Java" 
- and this is how I ended up discovering and using James ever since.


It also already came into play that for some reason I had to manually 
restore my database - exactly the reason why I chose MySQL as storage 
backend. As it was helpful for the reason I chose it I rather stick to 
it for that reason. The switch from MySQL to MariaDB was just 
something OpenSuSE did - so I followed it. As a user I not noticed any 
differences.


As for the database issues mentioned: For some reason I had to set up 
the MySQL- and later the MariaDB-repos instead of using what comes 
with the OpenSuSE repos. I don't know what the difference was but it 
prevented the initial setup of the database structure on first run. 
Hence I'm glad that this is now fixed - whoever is reponsible for it.
I get this :) I was just trying to inform you that these days we work 
also on a Postgresql exclusive implementation for James. JPA is good to 
be able to plug to a lot of different SQL databases with the same code, 
but performances can be a bit meh. We are working on a full postgresql 
implementation of James in parallel as most people using JPA in the 
community are using Postgresql as their database (as it is quite a 
popular one). The goal is to have better performance here than with JPA 
for this particular db. But likely JPA might be enough for your singular 
usage. Was just throwing that here if maybe it was interesting for you.



- sync between main server and backup: I guess the additional forward 
from the main server to the backup and handle them independently seems 
like a neat idea simple to implement. I mostly rely on my backup when 
doing maintenance on the root like OS updates which require a system 
reboot. It's not I want to try to build a 

Re: James 3.8 one OpenSuSE 15.5

2024-01-09 Thread cryptearth

Hello Rene,

thank you for the kind words.

May let me answer your points:

- Spring vs. Guice: I use James since the Beta of 3.0 and if I recall 
correctly back then the Spring package was the one to use. By the usual 
"never change a running system" I not changed since. I had a quick look 
into it, but unfortunately the links on the install instructions 
https://james.apache.org/server/install.html only lead to a 404 - so 
there's something missing. Also I seem to require docker - which I don't 
have any experience with. I'd rather prefer just to build a package, 
unpack it and start it without having to deal with any extra 
containerization around it. It seems I require some help to setup a 
guice install.


- as for using MariaDB: This goes back to 2015 when I started to rent my 
server and own domain. Back then I had basically no knowledge about 
server administration let alone set up a mail server. Although there're 
complete guides on how to setup postfix with dovecot and such on 
opensuse I not managed to get it working. So I looked for a simple 
complete solution and ended up using Citadel/UX. For some reason with 
some update it broke to a state I wasn't able to start it again. Hence I 
wasn't able to get any data out of it as for some reason I just was not 
able to access the BerkeleyDB data file. As I also wasn't able to get 
the regular stuff with maildir running I just wanted a setup using a 
regular MySQL not just for config- and user-data but also as the mail 
storage backend so that in the event I encountered such a situation 
again I can just use regular tools to restore a mysql database. As I'm 
also a hobbyist Java developer for me it was a simple idea of "there has 
to be some simple mail server implemented in Java" - and this is how I 
ended up discovering and using James ever since.


It also already came into play that for some reason I had to manually 
restore my database - exactly the reason why I chose MySQL as storage 
backend. As it was helpful for the reason I chose it I rather stick to 
it for that reason. The switch from MySQL to MariaDB was just something 
OpenSuSE did - so I followed it. As a user I not noticed any differences.


As for the database issues mentioned: For some reason I had to set up 
the MySQL- and later the MariaDB-repos instead of using what comes with 
the OpenSuSE repos. I don't know what the difference was but it 
prevented the initial setup of the database structure on first run. 
Hence I'm glad that this is now fixed - whoever is reponsible for it.


- sync between main server and backup: I guess the additional forward 
from the main server to the backup and handle them independently seems 
like a neat idea simple to implement. I mostly rely on my backup when 
doing maintenance on the root like OS updates which require a system 
reboot. It's not I want to try to build a distributed synchronized 
cluster. I guess for that there're better solutions out there. Looking 
thru the docs there's something pointing to 
https://github.com/apache/james-project/blob/james-project-3.8.0/docs/modules/servers/pages/distributed/run-docker.adoc 
- but that doesn't exists or isn't set to public, same as for the guice 
setup. So it seems there's documentation for what I want to do - but 
it's not available to me.


Have a good one.

Matt

On 09.01.24 08:44, Rene Cordier wrote:

Hello,

Interesting read thanks.

Few remarks though, but feel free to agree or not :) :

- any reason to still run the spring version of James? That version I 
believe is not always up-to-date with dependencies (specially the 
sprint dependencies). Truth is it might get deprecated and removed in 
later release if a consensus is reached, as all active dev is done on 
the Guice versions now. You might want to check that (JPA Guice here 
probably closest to the Spring version)


- note that there is active development at the moment (still WIP) 
regarding a Postgresql reactive implementation with james (Guice). I 
saw you seem to use MariaDB but might interest you for the future maybe?


- for sync between your main server and backup, maybe just redirect 
the mails to both platforms, and let them treat the mails separately? 
If not I guess db backup and sync between the two could do it too.


Good job on running latest James on the new OpenSuse though, thanks 
for sharing!


Rene.

On 1/9/24 10:17, cryptearth wrote:

Hello there everybody,

happy new year 2024 to all of you.
It's been quite some time since I was last active on this maillist. 
After
upgrading my server to OpenSuSE 15.5 and James to 3.8 and after 
reading the
recent topics on the web archive I decided to post a small round up 
how it

went this way.

Important word of warning and security:
This is only a personal write-down how I did my setup. I'm aware 
there're
still some security improvements to be done. This is meant as an 
informative
guide. I'm by no means responsible for any security issues that may 
arise by

following