It turned out that adding support for MySQL (MariaDB) was more work than
just changing the Hibernate dialect. We had to make sure that the
required changes did not require existing users to update the database.
Modifying all the unit tests to support different databases was also
quite a bit of work. That said, now we have it working for MySQL, in
principle adding support for other database (if ever) is now relative easy.
We have uploaded an RPM which does not depend on Postgres and contains
the required configuration files for MySQL.
The RPMs can be downloaded from
1. Install RPMs
Install the RPMs using the quick install guide
Note: skip the parts about postgres
2. Install and configure MySQL (MariaDB)
yum -y install mariadb-server mariadb
systemctl start mariadb
systemctl enable mariadb
max_allowed_packet should be set to a high value (in mysql config)
$ vi /etc/my.cnf.d/server.cnf
Add the following line below [server]
max_allowed_packet = 128M
Note: the max size depends on the largest email, CRL you want to support.
systemctl restart mariadb
3. Create database user and database
mysql -u root
CREATE USER 'djigzo'@'localhost' IDENTIFIED BY 'djigzo';
CREATE DATABASE djigzo CHARACTER SET utf8 COLLATE utf8_general_ci;
GRANT ALL ON djigzo.* TO 'djigzo'@'localhost';
Note 1: The database should be set to UTF8
Note 2: ALL permission should probably be changed to a lower privilege
but we did not yet check what the minimal required privileges are.
4. Import database scheme
$ mysql -u djigzo --password=djigzo djigzo <
5. Tell CipherMail to use MySQL
$ vi /usr/share/djigzo/wrapper/djigzo.wrapper.conf
Uncomment the line:
Because if licensing issues, we use the JDBC driver from MariaDB
(https://downloads.mariadb.org/connector-java/). If you insist on using
the driver from MySQL, you need to remove the MariaDB jdbc driver, add
the MySQL JDBC driver and configure the hibernate config file to use the
The RPM is probably not final so it might change. We are thinking of
splitting up the packages (RPM, deb) into a back-end package which does
not automatically configure Postgres and a database specific back-end
package which depends on the main back-end package.
Let me know how it goes.
On 06/30/2015 09:37 AM, django(a)nausch.org wrote:
Quoting "Martijn Brinkers" martijn(a)djigzo.com:
Interesting. Why is Postgres not allowed?
It's a political decision - we can use following prioroties ans databeses:
1st Oracle 12
Anyway, perhaps it's not of legal reasons but some technical reason.
That said, Maria DB is not directly supported but you can see whether
you can make it work with Maria DB.
That's a very good idea If you can tell me technical details about
changing the backend database, I'll do it, test it and give feedback to
The database layer uses Hibernate (which is an ORM library).
My colleague Klaus, my database specialist, assumed, that your are using
This however has never tested but it you are willing to spend some
time testing it, I can assist you.
Oh yes, I'll make this tests! So please tell me, what I should do!
Thanks for help!!!
CipherMail email encryption
Open source email encryption gateway with support for S/MIME, OpenPGP
and PDF messaging.