bcb4e51a409d94ae670de96afb8483a4f7855294 |
|
01-Jan-2018 |
Stephan Bosch <stephan.bosch@dovecot.fi> |
Updated copyright notices to include the year 2018. |
c864fdd520b0c3f10a4b9bc5373368f4ae8faaff |
|
28-Dec-2017 |
Timo Sirainen <timo.sirainen@dovecot.fi> |
dsync: Add per-mailbox sync lock that is always used.
Both importing and exporting gets the lock before they even sync the
mailbox. The lock is kept until the import/export finishes. This guarantees
that no matter how dsync is run, two dsyncs can't be working on the same
mailbox at the same time.
This lock is in addition to the optional per-user lock enabled by the -l
parameter. If the -l parameter is used, the same lock timeout is used for
the per-mailbox lock. Otherwise 30s timeout is used.
This should help to avoid email duplication when replication is enabled for
public namespaces, and maybe in some other rare situations as well. |
6fd1a97ebe9696dd28323ccc55b98d304d49acf7 |
|
28-Dec-2017 |
Timo Sirainen <timo.sirainen@dovecot.fi> |
dsync: Add debug logging for .dovecot-sync.lock locking/unlocking |
47a5a7e8296f3b8f2fac9a0659d4de3f2723ba4a |
|
06-Oct-2017 |
Martti Rannanjärvi <martti.rannanjarvi@dovecot.fi> |
global: Use PRI* macros and %zu instead of casting |
69a71891361b2b27ff68ed84b29278486628464a |
|
27-Sep-2017 |
Aki Tuomi <aki.tuomi@dovecot.fi> |
dsync: Add hashed_headers setting
This makes it possible to configure them |
c69a177207ed18d0f0210347430a60957136bd6c |
|
19-Sep-2017 |
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi> |
global: start relying on pool_unref(NULL) being a no-op
Cleanup performed with the following semantic patch:
@@
expression E;
@@
- if (E != NULL) {
- pool_unref(&E);
- }
+ pool_unref(&E); |
f3c24c2c92802cb773315eba1132254932d8709b |
|
23-Jun-2017 |
Timo Sirainen <timo.sirainen@dovecot.fi> |
dsync: Use header hashing version 3 |
a76faea3eb26c4cd67886fbe02c604f74d54be8c |
|
17-May-2017 |
Timo Sirainen <timo.sirainen@dovecot.fi> |
dsync: Try to commit transactions every dsync_commit_msgs_interval messages
This was first attempted to be implemented by
ec0cc8fa647794e44a1afaa448f495a713048dc4, but it was later partially
reverted by 5973d496b16721af6d2c1fa90b016aacddf13554. This current
commit should fix its problems. |
bf7dc750b95039981c0e9d728f313d50cf38a156 |
|
23-Mar-2017 |
Martti Rannanjärvi <martti.rannanjarvi@dovecot.fi> |
global: Log internal storage error on failure |
2454dfa32c93c20a8522c6ed42fe057baaac9f9a |
|
01-Jan-2017 |
Stephan Bosch <stephan.bosch@dovecot.fi> |
Updated copyright notices to include the year 2017. |
efe78d3ba24fc866af1c79b9223dc0809ba26cad |
|
24-Dec-2016 |
Stephan Bosch <stephan.bosch@dovecot.fi> |
global: Replaced all instances of memset(p, 0, sizeof(*p)) with the new i_zero() macro.
Used the following script:
C_FILES=`git ls-files *.c`
H_FILES=`git ls-files *.h`
for F in "$C_FILES $H_FILES"; do
echo "$F"
perl -p -i -e 's/safe_memset\(&\(?([^,]*)\)?,\s*0,\s*sizeof\(\g1\)\)/i_zero_safe(&$1)/g' $F
perl -p -i -e 's/safe_memset\(([^,]*),\s*0,\s*sizeof\(\*\g1\)\)/i_zero_safe($1)/g' $F
perl -p -i -e 's/memset\(&\(?([^,]*)\)?,\s*0,\s*sizeof\(\g1\)\)/i_zero(&$1)/g' $F
perl -p -i -e 's/memset\(([^,]*),\s*0,\s*sizeof\(\*\g1\)\)/i_zero($1)/g' $F
done |
69a9934b56438719c9eed2ca876b08a4ff445dd7 |
|
12-Dec-2016 |
Timo Sirainen <timo.sirainen@dovecot.fi> |
dsync: Fix .dovecot-sync.lock timeout checking
Whenever the lock file was recreated, the lock timeout was reset. Switched
to using file_create_locked(), which already solves this problem and has
compatible locking. |
0eb3485b45b0233eb089c0337858a195cb341f0b |
|
11-Dec-2016 |
Timo Sirainen <timo.sirainen@dovecot.fi> |
dsync: Improve process title during initialization
If something is hanging, this should make it clear what exactly it is. |
4f7951e71128c120d8a502d6406cc603fcc8eb0b |
|
01-Dec-2016 |
Timo Sirainen <timo.sirainen@dovecot.fi> |
dsync: When logging "Mailbox changed caused a desync", log also the reason.
The reason is usually somewhere in the debug logs, but it's difficult to
find from there. |
ee8294dbc7bb549557f6ba1264d66b55fbef69b6 |
|
10-Oct-2016 |
Aki Tuomi <aki.tuomi@dovecot.fi> |
doveadm-sync: Add end-date support |
ae949831f1f668b5501b4b125e7f7b1767fb109b |
|
11-Aug-2016 |
Timo Sirainen <timo.sirainen@dovecot.fi> |
doveadm sync/backup: Added -S <max size> parameter to skip too large mails. |
afd6d387ea65843b59fb6051fb567719d2a5279c |
|
08-Aug-2016 |
Aki Tuomi <aki.tuomi@dovecot.fi> |
dsync: Add support for features
Add empty_header_workaround as first feature |
e229fe84553486b4ab37584f2a896a33384d0d70 |
|
29-Jun-2016 |
Timo Sirainen <timo.sirainen@dovecot.fi> |
dsync: When full resync is wanted in a stateful sync, output empty state.
This continues 3d49dc64d, which didn't actually work because
brain->require_full_resync was either cleared earlier or it was never
even set in this brain. |
f0339f522dc9c8e2e8a29ef9a3f937c431c6bd1b |
|
06-Jun-2016 |
Timo Sirainen <timo.sirainen@dovecot.fi> |
global: Use only explicit int -> bool conversions
These were checked with a patched clang. |
3d49dc64d5719e5f2497339c0137f7672a02018e |
|
25-Apr-2016 |
Timo Sirainen <timo.sirainen@dovecot.fi> |
dsync: If full resync is requested, return empty state string.
If the state is wrong, it's better to fully resync all the mailboxes rather
than just the one where a problem was noticed. |
45af47783693b3ba2768c5ad34eeff68132382d0 |
|
26-Jan-2016 |
Timo Sirainen <timo.sirainen@dovecot.fi> |
dsync: When comparing headers' hashes to match messages, try to normalize the input.
This is especially useful because some IMAP servers return different data
depending on whether we're fetching only specific header fields, all headers
or entire body. For now we're assuming that any non-ASCII is going to be
replaced with '?', which helps at least with Zimbra and Yahoo. The header
hashing algorithm is now versionable, so it can be modified more easily in
future.
This change should make imapc_features=zimbra-workarounds setting obsolete. |
02c335c23bf5fa225a467c19f2c063fb0dc7b8c3 |
|
12-Jan-2016 |
Timo Sirainen <timo.sirainen@dovecot.fi> |
global: freshen copyright
git ls-files | xargs perl -p -i -e 's/(\d+)-201[0-5]/$1-2016/g;s/ (201[0-5]) Dovecot/ $1-2016 Dovecot/' |
14b1d2a2634e75b988078baee1e8ad678de28a04 |
|
20-Oct-2015 |
Timo Sirainen <tss@iki.fi> |
dsync: Added DSYNC_BRAIN_FLAG_NO_NOTIFY to enable MAILBOX_TRANSACTION_FLAG_NO_NOTIFY
It's arguable that this should be enabled by default, but people might like
to keep mail_log notifications for dsync. |
46b823ac3bce2c0f9f0fc73911e48d3a77b04fbe |
|
08-Sep-2015 |
Timo Sirainen <tss@iki.fi> |
Replaced unlink() calls with i_unlink*() wherever possible. |
1a1d00fd04bfcf8436b00b58d527e46b23523c9d |
|
27-Aug-2015 |
Timo Sirainen <tss@iki.fi> |
dsync: Added -D parameter to disable mailbox renaming.
The renaming logic is annoyingly complex and there are some bugs left in it.
With this parameter renames are never even attempted, but instead a rename
would be done (slowly) with mailbox delete + create + fill.
Although with imapc protocol mailbox renames are rarely detected anyway. |
ce0e25f26d6e67480ee39b5ca0ad634fa60c4605 |
|
18-Mar-2015 |
Timo Sirainen <tss@iki.fi> |
dsync: Use storage's mail_error to choose the doveadm exit code.
Instead of always assuming that all errors are EX_TEMPFAIL. |
24bd831901b8fd59718e353b36eaef6a950f09a2 |
|
13-Mar-2015 |
Timo Sirainen <tss@iki.fi> |
dsync: Added an extra "finish" state to allow slave-dsync to report error to master-dsync.
I'm not sure if that's actually necessary, but just trying to follow the
different possibilities on how dsync run can finish made me unsure about it.
This should make it at least clear that if a slave-dsync has a failure flag
set at deinit master-dsync will know about it before it returns success. |
f771d4d1fd4a4df3271d86f9be00c2fabaa99348 |
|
03-Mar-2015 |
Timo Sirainen <tss@iki.fi> |
dsync: Open mailboxes with readonly-flag whenever possible.
There shouldn't be any actual functional difference though. |
2e652d2651b2800f99a17dcb3014a009fe4660d3 |
|
20-Jan-2015 |
Timo Sirainen <tss@iki.fi> |
dsync: Added -F parameter to sync only mails with[out] specific flag. |
70df8f39fb3db7c49b18c855178f8172176a037a |
|
20-Jan-2015 |
Timo Sirainen <tss@iki.fi> |
dsync: If same GUID already exists in storage, try to copy it instead of recreating the mail.
This way most mailbox backends can reduce disk space by only doing a
reference count update.
This feature isn't enabled by default. A virtual "All Mails" mailbox needs
to be configured using the virtual plugin. Then you need to give this
mailbox as -a parameter, e.g.:
doveadm sync -a "Virtual/All Mails" ...
Currently this is implemented by reading through all the GUIDs in the
virtual mailbox. This of course isn't very efficient for things like
incremental replication. An upcoming conversation plugin will keep track of
all the mails' GUIDs, so in future replication should be able to have this
functionality efficiently as well. |
3561c7bb472a78af74d755219cc0fc71c85ff5c2 |
|
19-Jan-2015 |
Timo Sirainen <tss@iki.fi> |
dsync: Added -t <timestamp> parameter to save only mails newer than <timestamp>
If one side has old mails that don't exist on the other side, they are
ignored (not synced and not deleted). |
7cb128dc4cae2a03a742f63ba7afee23c78e3af0 |
|
05-Jan-2015 |
Phil Carmody <phil@dovecot.fi> |
global: freshen copyright
Robomatically:
git ls-files | xargs perl -p -i -e 's/(\d+)-201[0-4]/$1-2015/g;s/ (201[0-4]) Dovecot/ $1-2015 Dovecot/'
Happy 2015 everyone!
Signed-off-by: Phil Carmody <phil@dovecot.fi> |
49c7e0ae3f2c470e6ee70a540b5816a574f98f51 |
|
24-Oct-2014 |
Timo Sirainen <tss@iki.fi> |
dsync: Removed in/out state from debugging.
This was initially added for debugging hangs, but those haven't existed for
a long time now. Maybe we should eventually make debug categories
configurable, but for now nobody wants to see these messages. |
d519a0449d0e536a32db93305516fdbd7db6773d |
|
29-Sep-2014 |
Timo Sirainen <tss@iki.fi> |
dsync: Added DSYNC_BRAIN_FLAG_NO_MAIL_PREFETCH to avoid opening mails unnecessarily. |
0219a05495ca78d0ccc2a4d5dcfcf17aa859481f |
|
15-Sep-2014 |
Timo Sirainen <tss@iki.fi> |
dsync: Moved all doveadm-specific code to doveadm-dsync.c |
9f240e2ce97176146b63506a8ee04034f712cf45 |
|
11-May-2014 |
Timo Sirainen <tss@iki.fi> |
dsync: mailbox_metadata.cache_fields must be copied to permanent memory.
Any other call to mailbox_get_metadata() would have cleared the memory. |
7d315281ae13a66e13da2b1ad006bdb883018278 |
|
28-Apr-2014 |
Timo Sirainen <tss@iki.fi> |
dsync: Include messages_count in the mailbox states.
This allows detecting that stateful dsync can't be done when message count
is suddenly wrong. |
466d1b7778d98555bfeac1482ed9ae55df544a7a |
|
28-Apr-2014 |
Timo Sirainen <tss@iki.fi> |
dsync: If dsync was started via doveadm-server, show the remote client's IP address in ps output. |
e475db821baf0c4680dec4441d033697ecebfe06 |
|
25-Apr-2014 |
Timo Sirainen <tss@iki.fi> |
dsync: Added more debug output |
debafc38f98c84dd14ccca9f2d2983dc8faa9aa7 |
|
15-Apr-2014 |
Timo Sirainen <tss@iki.fi> |
dsync: Fix to previous commit to actually compile.. |
f038c71a96544bd4e8025ce528e749cce6a7adc1 |
|
15-Apr-2014 |
Timo Sirainen <tss@iki.fi> |
dsync: Fixed giving -n "" followed by other -n parameters. |
e569900bba2abb0fb8a5b6b6bee1b428c016db6c |
|
07-Apr-2014 |
Timo Sirainen <tss@iki.fi> |
dsync: Fixed using -n "" parameter |
d487aa885845c33fb358d5b3b514eece6791db0e |
|
25-Mar-2014 |
Timo Sirainen <tss@iki.fi> |
dsync: Support multiple -n parameters. |
a8c5a86d183db25a57bf193c06b41e092ec2e151 |
|
04-Feb-2014 |
Timo Sirainen <tss@iki.fi> |
Updated copyright notices to include year 2014. |
d0ff92b81b05166d800e04bbd2054a664305a330 |
|
22-Sep-2013 |
Timo Sirainen <tss@iki.fi> |
dsync: Added -P parameter to do a purge for the remote storage after syncing. |
36723cf206a7b64b9d972ab0719bbfaacc9316fa |
|
26-Jun-2013 |
Timo Sirainen <tss@iki.fi> |
dsync: Added -1 parameter to do a "one way sync" without reverting changes.
This can be useful during migration when you don't want to delete any mails,
but you also don't want to send changes to the old server either. |
08bbf28bf9ca4965020fe8b29a3f8be5f0d03dff |
|
24-Jun-2013 |
Timo Sirainen <tss@iki.fi> |
dsync: Don't crash at deinit when dsync fails early. |
3c73d884362b72c86753939551c94f8baa5702f8 |
|
24-Jun-2013 |
Timo Sirainen <tss@iki.fi> |
dsync: Don't try to find mailboxes from unwanted namespaces. |
47255691575e06a1c95ce78ff0a1b502199de3ab |
|
24-Jun-2013 |
Timo Sirainen <tss@iki.fi> |
dsync: If verbose_proctitle=yes, show the current state in it. |
e7ee14568b0479f2fab7d91efa4dbeeea500f241 |
|
24-Jun-2013 |
Timo Sirainen <tss@iki.fi> |
dsync: State names were wrong in debug/error messages. |
237a6211c7fc4d6dbb58dd0467da6dba1b8f21f6 |
|
13-Jun-2013 |
Timo Sirainen <tss@iki.fi> |
Memory leak fixes. |
f40c798116d0b1d735d5eeb8db3dc2022e7e064d |
|
05-Jun-2013 |
Timo Sirainen <tss@iki.fi> |
dsync: If unexpected changes happened during sync, log a warning and exit with code 2.
This was done by v2.1 dsync, but the code got temporarily lost in v2.2. |
fd32c46c360e61de2c957c3d2241eaacab7b3eec |
|
26-May-2013 |
Timo Sirainen <tss@iki.fi> |
dsync: Added -x parameter to exclude mailboxes from sync.
Multiple -x parameters can be added. Giving \flag as parameter means that
the mailbox with the given SPECIAL-USE \flag is skipped. For example:
doveadm sync -x '\All' -x '\Flagged' -x '\Important' mdbox:~/mdbox |
f1a5b3a0176aa370830249ce5423bbc47fe032c7 |
|
26-May-2013 |
Timo Sirainen <tss@iki.fi> |
dsync: Small code cleanup. |
2e657dc3d6f973b13379e7c448f1ab96862799b5 |
|
08-Apr-2013 |
Timo Sirainen <tss@iki.fi> |
dsync: -U parameter never updated replicator's full_sync state. |
2d66fbf7a14d354cd7ffa3e504fc660a99f22f75 |
|
08-Apr-2013 |
Timo Sirainen <tss@iki.fi> |
dsync: If dsync fails due to lock timeout, give a better error message. |
b8e6e314eb2f9f1fc8ce2999034321bfeb7a2269 |
|
07-Apr-2013 |
Timo Sirainen <tss@iki.fi> |
dsync: Fixed talking to earlier dsync without mailbox attribute support.
Most importantly it can now be used as an example how to add more features
to dsync. |
9f99b5c3e607c41c16a6380203d401250d9e2603 |
|
25-Mar-2013 |
Timo Sirainen <tss@iki.fi> |
doveadm sync/backup: Added -g <guid> to sync only the specified mailbox (by GUID)
Similar to -m <mailbox name>. |
44a529ca5ae82d6b11dc3096a51c3748856dcd08 |
|
21-Mar-2013 |
Timo Sirainen <tss@iki.fi> |
dsync: Use fcntl() locking instead of flock(). |
f48fdb57185ca68e8c079e174f3e04da36646880 |
|
21-Mar-2013 |
Timo Sirainen <tss@iki.fi> |
dsync: -m '' parameter now syncs mailbox list, but no actual mails. |
ea245d7a9683e7bb9cd74fcdf1a26d049b2947eb |
|
26-Feb-2013 |
Timo Sirainen <tss@iki.fi> |
dsync: If I/O gets stalled, log the state in which it happened. |
4fa4166f9b7770e11bc9969f78d66841f05e5939 |
|
19-Feb-2013 |
Timo Sirainen <tss@iki.fi> |
dsync: Renamed -a parameter to -N. It also now skips invisible namespaces. |
49985fd8bc8d6556421830ee20107dbd1b34be5e |
|
18-Feb-2013 |
Timo Sirainen <tss@iki.fi> |
dsync: Fix to checking which side should do the locking. |
0cffbb35d3921aaee6963e90f0669175fa4f7784 |
|
17-Feb-2013 |
Timo Sirainen <tss@iki.fi> |
dsync: If locking fails, fail instead of continuing. |
564aa838fe1da8024510192b6f616b787e33ce85 |
|
17-Feb-2013 |
Timo Sirainen <tss@iki.fi> |
dsync: Use full hostname+domain when comparing if hosts are different in locking. |
0e03baa885b89cd42fb76fe0282f272f035638cd |
|
16-Feb-2013 |
Timo Sirainen <tss@iki.fi> |
dsync: -l parameter locking is now done on the server with "lower" hostname.
This allows running multi-master replication on two servers without two
dsyncs mixing up changes by running at the same time. |
979d89c147520f2934c14c31aeb9310fd2d62a46 |
|
10-Feb-2013 |
Timo Sirainen <tss@iki.fi> |
dsync: Automatically figure out which mailboxes can sync with message GUIDs. |
887a9fbbb2ca6afd53365ba2ccae0ef8728d6948 |
|
10-Feb-2013 |
Timo Sirainen <tss@iki.fi> |
dsync: Renamed "guid_requests" to "mail_requests"
The mails aren't necessarily requested by their GUID. |
5a580c3a38ced62d4bcc95b8ac7c4f2935b5d294 |
|
02-Feb-2013 |
Timo Sirainen <tss@iki.fi> |
Oops :) Update copyrights to 2013 without breaking all .c files. |
cca4ba2a504d70a9fe9fee37f8433997359de52c |
|
02-Feb-2013 |
Timo Sirainen <tss@iki.fi> |
Updated copyright notices to include year 2013. |
f476a2abe41082176e65425358bf01bdcc86a41c |
|
09-Jan-2013 |
Timo Sirainen <tss@iki.fi> |
dsync: Close mail streams earlier on failures to avoid assert-crashing |
66088eb6144f98adbbd9799f902c87cbdd0a4eeb |
|
08-Jan-2013 |
Timo Sirainen <tss@iki.fi> |
dsync: Fixes to handling output stream buffering. |
707f172cd4e4c91af86ff5bd82a60a873dec6f70 |
|
15-Dec-2012 |
Timo Sirainen <tss@iki.fi> |
dsync: Added back support for syncing only one mailbox (-m parameter) |
ec66a68735096e81df73176231b49179222ad9ce |
|
14-Dec-2012 |
Timo Sirainen <tss@iki.fi> |
dsync: Added -a parameter to sync all namespaces, not just the default one. |
5332128f69ad688cc024897c2a92f6b37ef8d05c |
|
14-Dec-2012 |
Timo Sirainen <tss@iki.fi> |
dsync: Added debugging and rawlogging support. |
9b706b345064ce8e8a657f54633f009a101298ea |
|
29-Oct-2012 |
Timo Sirainen <tss@iki.fi> |
If prefix="" namespace isn't defined, autocreate it as an unusable namespace.
This avoids having to handle mail_namespace_find() errors all over the
place. Instead now the mailbox accesses will simply fail. |
c307328f59c963eba21091ecd36c9435d42b47d8 |
|
20-Oct-2012 |
Timo Sirainen <tss@iki.fi> |
doveadm sync/backup: Added -s <state> parameter to do a fast stateful sync.
Initially use an empty string for the input state. The output state is
written to stdout. |
e83126866761632b437e532dfdc30be01d14039d |
|
21-Oct-2012 |
Timo Sirainen <tss@iki.fi> |
doveadm: "backup" command is working again. |
a85473f7c11c8734bdee9c2cbe4b767f144a18aa |
|
07-Sep-2012 |
Timo Sirainen <tss@iki.fi> |
dsync: Renamed "slave" to "ibc" (= inter-brain communicator) |
678d0463849ba777106eb7875f27db07a5d8e3df |
|
19-Aug-2012 |
Timo Sirainen <tss@iki.fi> |
Hash table API is now (mostly) type safe. |
7536dca18968a279b69c685eedda205bee228fd4 |
|
19-Aug-2012 |
Timo Sirainen <tss@iki.fi> |
hash_table_create(): Removed table_pool parameter.
Every single caller was using default_pool there, so there's no point in
having it. |
116ba2eb9ecb30955c957bd9d3d87444f22e741f |
|
17-Aug-2012 |
Timo Sirainen <tss@iki.fi> |
doveadm backup: Fixed "is source empty" check.
In POP3 boxes there is only INBOX, and it's possible that source becomes
empty while backup has mails. The check is now "has source always been
empty?" |
a10ed8c47534b4c6b6bf2711ccfe577e720a47b4 |
|
23-Jun-2012 |
Timo Sirainen <tss@iki.fi> |
Marked functions parameters that are allowed to be NULL. Some APIs were also changed.
The non-obvious APIs where NULL parameter was changed to "" are
master_service_init() and auth_master_user_list_init().
These checks can currently be enabled only on a patched clang:
http://llvm.org/bugs/show_bug.cgi?id=6786 |
7bd5b1c64cc987715bdaf8cc4907c3c37d5d7b29 |
|
22-May-2012 |
Timo Sirainen <tss@iki.fi> |
Initial version of dsync rewrite.
* doveadm backup not implemented at all yet
* syncing mailbox renames is somewhat broken (at least renaming \noselect
mailboxes)
* saving/restoring "state" is implemented by dsync brain, but not by
doveadm. this should be easy to do, just need to figure out how the
replication code wants it. |
acb0236a7a1242f567cec83480c1efc9fc352f63 |
|
02-Mar-2012 |
Timo Sirainen <tss@iki.fi> |
Increased initial memory pool sizes and marked some of them as "growing". |
5f5870385cff47efd2f58e7892f251cf13761528 |
|
12-Feb-2012 |
Timo Sirainen <tss@iki.fi> |
Updated copyright notices to include year 2012. |
0e454b53e69f4647b569efbc108791403318625a |
|
28-Jan-2012 |
Timo Sirainen <tss@iki.fi> |
dsync: If brain fails but workers don't, exit without assert-crashing. |
885a3c2287ae3e5827aa580ea06b231de38abb47 |
|
29-Dec-2011 |
Timo Sirainen <tss@iki.fi> |
Merged dsync into "doveadm dsync".
dsync symlink is installed for backwards compatibility. |