The goal of this project is the creation of a storage plugin for Dovecot, which enables the storage of emails in MongoDB. The focus is currently on a hybrid model where the emails are stored in MongoDB, while all other metadata (lists, index, cache) are stored in a file system that is located locally on the Dovecot server or on shared volumes.
The Plugin is based on 0.0.21 of dovecot-ceph-plugin. Thanks!
Currently this is work in progress!!!
This project is under active development and not in any kind of release state. Be aware it is possible and very likely that APIs, interfaces and or the data format change at any time before a first release.
The code is in a tested state, but is NOT production ready. Although the code is still flagged as experimental, we encourage users to try it out for non-production clusters and non-critical data sets and report their experience, findings and issues.
It is planned to move all or parts of this code into other git repositories to move these parts later into other open source community projects like Ceph and Dovecot.
To compile the plugin you need a configured or installed Dovecot >= 2.3.7
You can clone from github with
git clone https://github.com/jrse/dovecot-mongo-plugin.git
Ceph contains git submodules that need to be checked out with
git submodule update --init --recursive
The build requires that you have the following software/packages installed:
libjansson-devel version >= 2.9
libmongoc
dovecot-devel (dovecot header)
If you are using CentOS make sure you also have the following package installed:
yum install redhat-rpm-config
./autogen.sh
./configure
make
sudo make install
./autogen.sh
./configure --prefix=/home/user/dovecot
make install
./autogen.sh
./configure --with-dovecot=/home/user/workspace/core
make install
This plugin borrows heavily from dovecot-ceph-plugin Dovecot-ceph-plgin which development was sponsored by Deutsche Telekom. We would like to take this opportunity to thank Deutsche Telekom. | |
This plugin borrows heavily from Dovecot itself particularly for the automatic detection of dovecont-config (see m4/dovecot.m4). The lib-dict and lib-storage were also used as reference material for understanding the Dovecot dictionary and storage API. | |
Tallence carried out the initial development. | |
Wido den Hollander from 42on.com for all the help and ideas. |