[Dovecot] Dovecot dsync mail replication issues
Reuben Farrelly
reuben-dovecot at reub.net
Mon Apr 30 13:43:10 EEST 2012
Hi,
I'm trying to set up some dsync based replication between two hosts on
my network. The current topology is a single server running Postfix
with a single dovecot installation with a Maildir per user (only 4 users
including myself). No NFS, just local system users on ext4. I am only
using system users, ie no virtual users. I am using dovecot deliver to
deliver mails into the Maildir's. This - being a very standard Maildir
installation - all works just fine.
I'm running dovecot-2.1.5 (release versions) x86_64 with Gentoo on both
hosts and using key based ssh to transport the data using the root login.
What I would like to do is extend the design so as to replicate the
Maildirs across a second machine and in the future be able to connect
via IMAP into either machine to sync mail. Two way dsync would be
rather cool because I could then deliver via SMTP to either system and
have changes automagically propagate - but initially just simple
replication would be a good start.
I was hoping that dsync would allow me to do this, but I've run into
quite a number of problems while getting this to work.
http://dovecot.org/list/dovecot/2012-March/064243.html
...was very useful and I've based my config on that.
Initially I've tried to sync up the user Maildirs, and this has more or
less worked:
doveadm sync -u lyn remote:root at dustbowl.reub.net
This succeeds without error on the initial sync.
However if I try to run the re-sync again (such as a use case of if the
sync of another Maildir takes 4 hours so I want to resync up the earlier
ones again) I end up with a mysteriously named INBOX folder in both the
source and destination Maildirs:
drwx------ 5 lyn lyn 4096 Apr 30 19:32
.INBOX_7a86a62d465a974fb92f00003b258734
It has the basic structure of a Maildir but is empty in terms of mails:
drwx------ 2 lyn lyn 4096 Apr 30 19:32 cur
-rw------- 1 lyn lyn 220 Apr 30 19:32 dovecot.index.log
-rw------- 1 lyn lyn 51 Apr 30 19:32 dovecot-uidlist
-rw------- 1 lyn lyn 0 Apr 30 19:32 maildirfolder
drwx------ 2 lyn lyn 4096 Apr 30 19:32 new
drwx------ 2 lyn lyn 4096 Apr 30 19:32 tmp
First question: why is this random named directory being created in the
origin Maildir? Shouldn't the replication be more or less read-only in
the origin Maildir?
Second question: If I re-attempt a doveadm sync a second time I get
this error:
tornado Maildir # doveadm sync -u lyn remote:root at dustbowl.reub.net
dsync-local(lyn): Error: Can't rename mailbox
INBOX_7a86a62d465a974fb92f00003b258734 to INBOX: Target mailbox already
exists
dsync-local(lyn): Error: Can't rename mailbox INBOX to
INBOX_eb15f30ea563be4b703200002bd68bb1: Renaming INBOX isn't supported.
tornado Maildir #
It's not clear if the second attempt has failed or succeeded, and it's a
bit odd that it errors out on a directory that the dovecot sync process
itself has created.
Third question: Upon starting Dovecot lots of ugliness is logged in the
mail log:
Apr 30 19:44:59 tornado dovecot: master: Dovecot v2.1.5 starting up
(core dumps disabled)
Apr 30 19:44:59 tornado dovecot: doveadm(mozsync): Error: user mozsync:
Initialization failed: Namespace '':
mkdir(/var/www/xxx/server-full/Maildir) failed: Permission denied
(euid=1016(mozsync) egid=1016(<unknown>) missing +w perm:
/var/www/xxx/server-full, dir owned by 0:0 mode=0755)
Apr 30 19:44:59 tornado dovecot: doveadm(mozsync): Error: sync: User
init failed
Apr 30 19:44:59 tornado dovecot: doveadm(mozsync): Warning: I/O leak:
0x414190 (line 102, fd 16)
Apr 30 19:44:59 tornado dovecot: dsync-local(cisco): Error: remote:
doveadm(cisco): Fatal: User doesn't exist
Apr 30 19:44:59 tornado dovecot: dsync-local(cisco): Error: read() from
worker server failed: EOF
Users mozsync and cisco are not valid mail users and it's not
appropriate that Dovecot tries to create a Maildir for either of them.
The users are system unprivileged users only, and do not ever send or
receive mail.
And - I/O leak? ;)
Also, user cisco is local to one box only, and does not exist (nor does
it need to) on the remote host. So any complaints about this user are
invalid and dovecot needs to ignore replication for this user anyway.
Fourth question, upon starting dovecot again, mail.log then spews
several hundred of these messages:
Apr 30 19:45:06 tornado dovecot: dsync-local(reuben): Error: msg-get
failed: box=Trash uid=114863
guid=1335382569.M98089P29952.tornado,S=6479,W=6625
Before aborting entirely with:
Apr 30 19:45:09 tornado dovecot: imap: Server shutting down. in=328 out=2042
It seems to me that a a few of those problems logged could be solved by
being able to specify which system users to synchronise, rather than
Dovecot making a blind assumption that all users actually have valid
Maildirs that need to be created, and all need to be sync'd between two
hosts.
Subsequent delivery based sync'ing fails silently (pending more
investigation) but I'd like to try and fix the above listed problems
first before worrying about the later stages of the sync not working.
Has anyone else run into these problems or found better ways of making
this type of setup all work?
Thanks,
Reuben
More information about the dovecot
mailing list