- C 77.9%
- Shell 13.6%
- M4 4.4%
- Makefile 4.1%
Introduction
This is wormhole, a project to bring back Dovecot's replication feature for Dovecot 2.4 and later. It is mainly a fork of the Dovecot 2.3 replication code ported to Dovecot 2.4. The forked code was removed by the Dovecot maintainers from Dovecot starting with Version 2.4. This project aims to provide the feature as a plugin for Dovecot 2.4 and higher.
Installation
To install wormhole you first have to install Dovecot or at least the Dovecot development package from your distribution or the Dovecot community repositories. After that you compile and install the project with (assuming you have Dovecot installed in /usr):
./configure --prefix=/usr
make
make check # optional
make install
Patch for Dovecot
For best backward compatibility, you can find a patch for Dovecot in
the patches directory. This patch will add a hook system do
doveadm's sync and dsync-server commands. These hooks will be
used by wormhole to extend sync and dsync-server with replication
specific features. The availability of this hooks is autodetected by
configure.
If you do not need backward compatibility with existing Dovecot-2.3
replication servers, you don't need this patch. It is even possible to
run mixed 2.3/2.4 setups without this patch but you will have limited
support for noreplicate setting.
Packages
Wormhole is available as openSUSE package in the server:main repository. Thanks to Marcus Rueckert (@darix)!
On Debian Bookworm and Trixie you can use make debian-package to
build a package. The package will be build against the Dovecot package
installed, thus either the CE package on bookworm or the package from
the Debian repository on Trixie.
Build dependencies
Debian
For compiling the software, you need:
apt install dovecot-dev
If you want to run the included test suite or build from git, you also need:
apt install bash curl build-essential automake libtool bison flex pkg-config procps libssl-dev zlib1g-dev lsb-release
Alpine Linux
For compiling the software, you need:
apk add make dovecot dovecot-dev autoconf automake libtool gcc libc-dev
# minimal dovecot config in case you just installed it:
cat <<EOF > /etc/dovecot/dovecot.conf
dovecot_config_version = 2.4.1
dovecot_storage_version = 2.4.1
EOF
If you want to run the included test suite or build from git, you also need:
apk add tar bash curl bison flex patch findutils procps openssl-dev zlib-dev lsb-release
Other platforms
Create a pull request or sent me a mail in case you found out, what's needed!
Upgrading from Dovecot 2.3
Configuration
See Replication with dsync for details. All configuration parameters are described in Replication Settings.
Authors and acknowledgements
First I want to thank Timo Sirainen and his team from Dovecot for providing the replication feature in Dovecot since 2012. Most of the code in this project is based on their work!
Maintainer of this project and author of the new code to bring replication back into Dovecot 2.4:
- Patrick Cernko pcernko@mpi-klsb.mpg.de
Contributions
- 2025年10月08日 Marcus Rueckert (@darix): fixed linking against dovecot's notify plugin
- 2025年10月08日 Aki Tuomi (@cmouse): removed linking against notify-plugin completely
- 2025年10月09日 Marcus Rueckert (@darix): openSUSE packages
- 2025年10月12日 Sven Hankel wormhole@findst.net: fixed linker rpath detection and linking against dovecot libs
- 2025年10月17日 Kirill A. Korinsky kirill@korins.ky: replicator: fixed infinity loop on sync replication
License
Wormhole is released under LGPLv2.1 (see COPYING) similar to the forked code of Dovecot's replication feature.
Wormhole documentation (in doc/) is released under Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International Public License (see doc/LICENSE) similar to the forked documentation of Dovecot's replication documentation.
Questions and Contributing
If you have questions or want to report issues or contribute, you can do so on Codeberg:
The official website of this project is: https://people.mpi-klsb.mpg.de/~pcernko/wormhole.shtml