>>>>> "James" == James Cook via dovecot <[email protected]> writes:
> Moving mail files between Maildir mailboxes often confuses doveadm
> sync: I end up with copies in both the original and new maildir.
> Exact details and script to reproduce follow.
Are you accessing your Maildir from both a mail client, as well as
using IMAP/POP through doveadm? I would say that this is your
problem. You should (probably) be only using one method or another.
> I can work around this by running doveadm move, but it does not fit
> well with my workflow, which is based on paths to mail files (using
> mblaze as my mail client).
Yeah, so mblaze is a bunch of utilities for interacting with Maildir
files. So since you're screwing around with them behind dovecot's
back, of course you're going to see problems. So don't do that!
> Two questions:
> 1. Is there anything I can do to help dovecot notice the moves,
> other than using doveadm move instead of just mv? I have tried
> liberal use of force-resync but the problem is still there.
> 2. Is this a bug?
No, you're just using it wrong.
> Details:
> OS: OpenBSD current
> $ dovecot --version
> 2.3.21.1 (d492236fa0)
> config: My repro script below uses a one-line config, only setting
> mail_location.
> (An OpenBSD 7.5 server running Dovecot 2.3.21 is involved in my
> real setup, but I was able to reproduce it locally without the
> server involved.)
> To reproduce:
> (shell script follows)
> - Make two maildirs "a" and "b", each with a subfolder ".Archive".
> - Manually write a mail file to a/cur.
> - doveadm sync
> - force-resync everything
> - manually move the file to a/.Archive/cur
> - force-resync everything again
> - doveadm sync
> - Now the mail file appears four times: in a, a/.Archive, b, and b/.Archive.
> Script to do the above follows my signature.
> --
> James
> #!/bin/sh
> set -e
> # Run in a new directory with two maildirs named a and b and a simple config.
> mkdir bug; cd bug
> mkdir -p {a,b}/{,.Archive/}{cur,new,tmp}
> cat > dovecot.conf <<EOF
> mail_location=maildir:$PWD/a
> EOF
> # Deliver an email and sync.
> EXAMPLE_ID=12345.R67890.example.com
> cat > a/cur/$EXAMPLE_ID:2, <<EOF
> some email
> EOF
> doveadm -c dovecot.conf sync maildir:b
> # Move the email and sync again. Run force-resync between steps in case it
> helps.
> doveadm -c dovecot.conf force-resync INBOX
> doveadm -c dovecot.conf force-resync Archive
> doveadm -c dovecot.conf -o mail_location=maildir:$PWD/b force-resync INBOX
> doveadm -c dovecot.conf -o mail_location=maildir:$PWD/b force-resync Archive
> mv a/cur/$EXAMPLE_ID* a/.Archive/cur
> doveadm -c dovecot.conf force-resync INBOX
> doveadm -c dovecot.conf force-resync Archive
> doveadm -c dovecot.conf -o mail_location=maildir:$PWD/b force-resync INBOX
> doveadm -c dovecot.conf -o mail_location=maildir:$PWD/b force-resync Archive
> doveadm -c dovecot.conf sync maildir:b
> echo in a:
> doveadm -c dovecot.conf -fflow fetch 'mailbox guid' all
> echo
> echo in b:
> doveadm -c dovecot.conf -fflow -o mail_location=maildir:$PWD/b fetch 'mailbox
> guid' all
> _______________________________________________
> dovecot mailing list -- [email protected]
> To unsubscribe send an email to [email protected]
_______________________________________________
dovecot mailing list -- [email protected]
To unsubscribe send an email to [email protected]