Joint Scientific IT and Technical Services

Personal Homepage

Wormhole (Cernko, Patrick)

The Dovecot IMAP server up to version 2.3 included online replication support. This feature allows setting up a service with two redundant servers. Both servers hold all data of the users. As the replication works in both ways, it allows running the servers in an active-active setup. Using Dovecot's Director feature, the users' requests can be balanced on both servers.

Unfortunately the replication feature was removed in the 2.4 release. I have reintegrated the removed code of the replication feature into Dovecot 2.4.1.

I had to adopt some (few) parts to reflect changes, that where made to the APIs and interfaces. To continue support for mail_replica and noreplicate as userdb settings, I established a workaround. The code has been tested and we started using it in our production environment.

The initial version of the code was provided as a patch for Dovecot 2.4.1:

Project Wormhole is a successor solution, that is provided as an extension/plugin for Dovecot. The first version still required a rather small patch for Dovecot. This patch adds some missing API calls to extend the `dsync` code of Dovecot with required hooks. The current version of the API patch can be found here:

Unfortunately the patch did not make it into Dovecot source.

Since version 0.3, Wormhole can be used without the requirement to modify the Dovecot sources. However, this limits the backward compatibility with existing Dovecot 2.3 replication setups.

The current version of wormhole can be found at:
https://codeberg.org/errror/wormhole

If you want to contribute or found a bug, feel free to contact me by mail or at codeberg. The code is released with the same license as Dovecot itself (LGPLv2.1), see https://doc.dovecot.org/main/license.html.