[Dovecot] Server Migration Attempt - new messages DELETED after secondary rsyncs

Charles Marcus CMarcus at Media-Brokers.com
Fri Dec 27 15:41:37 EET 2013


Starting a new thread, as I've got a lot more details now...

First, I know this may be (or is even likely) something weird happening 
with Thunderbird, but the bottom line is, I have to find a resolution or 
a workaround or something, or I will be unable to pull the trigger on 
the server migration. It is simply unacceptable to lose ANY mails doing 
this.

Goal: migrate mailstore from old server to new server using rsync

Thunderbird (24.2) is set up to access the new account for testing

Problem: after rsync, ls shows new messages (11 for the 27th), but when 
Thunderbird accesses the maildir again after another rsync, MOST (but 
not all) of the new messages are deleted (only one for the 27th remains)

Timo - I'd be happy to do anything necessary to track this down if 
you'll just tell me what you need...

Note: if you are pretty confident that upgrading dovecot on the old 
server and using dsync to do the migration will solve the problem, 
obviously I'm willing to do that if there is no other choice, but... I 
hope you'll want to get to the bottom of this regardless, as, according 
to you and everything I've read, it should work without losing any emails...

Ok, as to details...

Source (ol/active server): dovecot 2.1.17, postfix virtual for delivery, 
vmail owned by postfix:postfix
Note: using prefix=INBOX. courier compatibility namespace

Target: dovecot 2.2.10, dovecot LDA, vmail owned by vmail:vmail, nothing 
being actively delivered (yet)
Note: NOT using prefix=INBOX. courier compatiblity namespace

Both doveconf -n outputs at end of this message

*** Could the different namespaces, or differing dovecot versions cause 
this?

Current /snapshot/ being used was taken at about 3:48am this morning

rsync command (dovecot is STOPPED before performing, source is the 
latest snapshot of the active server):

rsync -rltgovDHP --delete --delete-excluded --exclude-from 
'/path/to/excludes.txt' /snapshot/.../vmail/example.com/user/ 
/.../vmail/example.com/user/

I'm only syncing the one user until I get this problem resolved as it is 
faster.

excludes.txt contains only (just to eliminate these which are still on 
the source):
courierimap*

Right after the rsync:

ls -al /.../user
(changes depending on what is in includes.txt)
-rw-------   1 vmail vmail     51 Dec 18 10:13 dovecot-keywords
-rw-------   1 vmail vmail 221638 Dec 27 02:42 dovecot-uidlist
-rw-------   1 vmail vmail      8 Dec 18 09:56 dovecot-uidvalidity
-r--r--r--   1 vmail vmail      0 Jun  9  2012 dovecot-uidvalidity.4fd32805

ls -al /.../user/cur
(copy/pasted newest thru 12/25 - this list is always the same after a sync)
-rw-------   1 vmail vmail    24904 Dec 25 15:47 
1388004452.Vfe02Ic72976M281736.oldhost.example.com:2,
-rw-------   1 vmail vmail  5825360 Dec 25 22:52 
1388029948.Vfe02Ic7306fM556006.oldhost.example.com:2,
-rw-------   1 vmail vmail    27718 Dec 26 02:19 
1388042391.Vfe02Ic33b40M543019.oldhost.example.com:2,
-rw-------   1 vmail vmail    28083 Dec 26 07:11 
1388059893.Vfe02Ic76388M193423.oldhost.example.com:2,S
-rw-------   1 vmail vmail   100651 Dec 26 08:02 
1388062961.Vfe02Ic763c2M415005.oldhost.example.com:2,
-rw-------   1 vmail vmail     5286 Dec 26 09:41 
1388068882.Vfe02Ic7642dM83715.oldhost.example.com:2,S
-rw-------   1 vmail vmail    53203 Dec 26 09:55 
1388069721.Vfe02Ic7646fM716189.oldhost.example.com:2,S
-rw-------   1 vmail vmail    12039 Dec 26 12:48 
1388080111.Vfe02Ic76742M972942.oldhost.example.com:2,RS
-rw-------   1 vmail vmail    13531 Dec 26 13:14 
1388081648.Vfe02Ic7674cM68343.oldhost.example.com:2,S
-rw-------   1 vmail vmail    25161 Dec 26 15:47 
1388090846.Vfe02Ic768acM489505.oldhost.example.com:2,
-rw-------   1 vmail vmail     5037 Dec 26 16:27 
1388093257.Vfe02Ic76918M766778.oldhost.example.com:2,
-rw-------   1 vmail vmail     3157 Dec 26 17:01 
1388095312.Vfe02Ic76997M703744.oldhost.example.com:2,
-rw-------   1 vmail vmail    22480 Dec 26 17:50 
1388098239.Vfe02Ic769deM225078.oldhost.example.com:2,
-rw-------   1 vmail vmail    10043 Dec 26 19:59 
1388105984.Vfe02Ic76a25M12505.oldhost.example.com:2,
-rw-------   1 vmail vmail    10635 Dec 26 21:11 
1388110298.Vfe02Ic76a65M649895.oldhost.example.com:2,
-rw-------   1 vmail vmail     8695 Dec 26 21:11 
1388110319.Vfe02Ic76a6fM696948.oldhost.example.com:2,
-rw-------   1 vmail vmail    11045 Dec 26 21:56 
1388112965.Vfe02Ic76a57M185504.oldhost.example.com:2,
-rw-------   1 vmail vmail      823 Dec 26 22:40 
1388115600.Vfe02Ib61cf5M913598.oldhost.example.com:2,ST
-rw-------   1 vmail vmail      815 Dec 26 22:40 
1388115627.Vfe02Ib63443M811945.oldhost.example.com:2,ST
-rw-------   1 vmail vmail      785 Dec 26 22:40 
1388115628.Vfe02Ib659c9M617314.oldhost.example.com:2,ST
-rw-------   1 vmail vmail     6156 Dec 27 00:05 
1388120705.Vfe02Ib7aa31M58188.oldhost.example.com:2,ST
-rw-------   1 vmail vmail      869 Dec 27 00:05 
1388120713.Vfe02Ib8506aM185504.oldhost.example.com:2,ST
-rw-------   1 vmail vmail      925 Dec 27 00:29 
1388122155.Vfe02Ibb2a1fM764275.oldhost.example.com:2,ST
-rw-------   1 vmail vmail      823 Dec 27 00:38 
1388122687.Vfe02Ic2f69aM168075.oldhost.example.com:2,ST
-rw-------   1 vmail vmail      801 Dec 27 00:38 
1388122696.Vfe02Ic31befM507147.oldhost.example.com:2,ST
-rw-------   1 vmail vmail      801 Dec 27 00:38 
1388122709.Vfe02Ic3ac2bM981625.oldhost.example.com:2,ST
-rw-------   1 vmail vmail     4576 Dec 27 00:57 
1388123820.Vfe02Ic769e8M270744.oldhost.example.com:2,ST
-rw-------   1 vmail vmail     8379 Dec 27 01:33 
1388126003.Vfe02Ib7fd87M510118.oldhost.example.com:2,ST
-rw-------   1 vmail vmail    27647 Dec 27 02:20 
1388128838.Vfe02Ic7610fM483481.oldhost.example.com:2,
-rw-------   1 vmail vmail     6373 Dec 27 02:42 
1388130144.Vfe02Ic76a99M631316.oldhost.example.com:2,ST
-rw-------   1 vmail vmail     3906 Dec 27 03:01 
1388131281.Vfe02Ic76a9cM599830.oldhost.example.com:2,ST

Start dovecot, select INBOX in Thunderbird for this account, it only 
displays these (I got this ls output from AFTER the messages in the cur 
directory are deleted per below - before doing any of the 3 aqctions 
below, ALL of the messages show in the ls output):
ls -al /.../user/cur
-rw-------   1 vmail vmail    24904 Dec 25 15:47 
1388004452.Vfe02Ic72976M281736.oldhost.example.com:2,
-rw-------   1 vmail vmail  5825360 Dec 25 22:52 
1388029948.Vfe02Ic7306fM556006.oldhost.example.com:2,
-rw-------   1 vmail vmail    27718 Dec 26 02:19 
1388042391.Vfe02Ic33b40M543019.oldhost.example.com:2,
-rw-------   1 vmail vmail    28083 Dec 26 07:11 
1388059893.Vfe02Ic76388M193423.oldhost.example.com:2,S
-rw-------   1 vmail vmail   100651 Dec 26 08:02 
1388062961.Vfe02Ic763c2M415005.oldhost.example.com:2,
-rw-------   1 vmail vmail     5286 Dec 26 09:41 
1388068882.Vfe02Ic7642dM83715.oldhost.example.com:2,S
-rw-------   1 vmail vmail    53203 Dec 26 09:55 
1388069721.Vfe02Ic7646fM716189.oldhost.example.com:2,S
-rw-------   1 vmail vmail    12039 Dec 26 12:48 
1388080111.Vfe02Ic76742M972942.oldhost.example.com:2,RS
-rw-------   1 vmail vmail    13531 Dec 26 13:14 
1388081648.Vfe02Ic7674cM68343.oldhost.example.com:2,S
-rw-------   1 vmail vmail    25161 Dec 26 15:47 
1388090846.Vfe02Ic768acM489505.oldhost.example.com:2,
-rw-------   1 vmail vmail     5037 Dec 26 16:27 
1388093257.Vfe02Ic76918M766778.oldhost.example.com:2,
-rw-------   1 vmail vmail     3157 Dec 26 17:01 
1388095312.Vfe02Ic76997M703744.oldhost.example.com:2,
-rw-------   1 vmail vmail    22480 Dec 26 17:50 
1388098239.Vfe02Ic769deM225078.oldhost.example.com:2,
-rw-------   1 vmail vmail    10043 Dec 26 19:59 
1388105984.Vfe02Ic76a25M12505.oldhost.example.com:2,
-rw-------   1 vmail vmail    10635 Dec 26 21:11 
1388110298.Vfe02Ic76a65M649895.oldhost.example.com:2,
-rw-------   1 vmail vmail     8695 Dec 26 21:11 
1388110319.Vfe02Ic76a6fM696948.oldhost.example.com:2,
-rw-------   1 vmail vmail    11045 Dec 26 21:56 
1388112965.Vfe02Ic76a57M185504.oldhost.example.com:2,
-rw-------   1 vmail vmail    27647 Dec 27 02:20 
1388128838.Vfe02Ic7610fM483481.oldhost.example.com:2,

This is weird, because it does show ONE new message from the 27th.

And again, ls -al on the cur dir at this point still shows ALL of the 
messages (11 for the 27th, and 18 for the 26th) shown in the FIRST ls 
output, ABOVE this second listing (which is shown only to show you what 
Thunderbird is seeing, and what shows in the ls output AFTER doing any 
of the 3 actions below).

Now...

Doing ANY of the following results in MOST (BUT NOT ALL) OF THE NEW 
MESSAGES BEING DELETED ON THE SERVER - ie, ls -al output changes to the 
match what is immediately above (what was showing in Thunderbird right 
after selecting the Inbox right after the rsync).

1. Right-click on the Inbox > Properties > Repair Folder (in Thunderbird)
2. Right-click on INBOX > Compact (in Thunderbird)
3. Manually deleting the .msf file for the INBOX

Obviously, I must find a resolution for this before I can pull the 
trigger on this migration.

************************************************************************

old server dovecon -n:

oldhost : Fri Dec 27, 05:59:12 : ~
  # doveconf -n
# 2.1.17: /etc/dovecot/dovecot.conf
# OS: Linux 3.10.7-gentoo-r1 x86_64 Gentoo Base System release 2.2
auth_default_realm = example.com
auth_mechanisms = plain login
first_valid_uid = 207
last_valid_uid = 207
listen = *
login_log_format_elements = user=<%u> method=%m rip=%r lport=%{lport} 
mpid=%e %c session=<%{session}>
mail_gid = 207
mail_location = maildir:~/:INDEX=MEMORY
mail_uid = 207
managesieve_notify_capability = mailto
managesieve_sieve_capability = fileinto reject envelope 
encoded-character vacation subaddress comparator-i;ascii-numeric 
relational regex imap4flags copy include variables body enotify 
environment mailbox date ihave
namespace inbox {
   inbox = yes
   location =
   mailbox Drafts {
     special_use = \Drafts
   }
   mailbox Junk {
     special_use = \Junk
   }
   mailbox Sent {
     special_use = \Sent
   }
   mailbox "Sent Messages" {
     special_use = \Sent
   }
   mailbox Trash {
     special_use = \Trash
   }
   prefix = INBOX.
   separator = .
}
passdb {
   args = /etc/dovecot/dovecot-sql.conf.ext
   driver = sql
}
plugin {
   sieve = ~/.dovecot.sieve
   sieve_dir = ~/sieve
}
protocols = imap lmtp
service auth-worker {
   user = $default_internal_user
}
service auth {
   unix_listener /var/spool/postfix/private/auth {
     group = postfix
     mode = 0660
     user = postfix
   }
   unix_listener auth-userdb {
     group = postfix
     mode = 0600
     user = postfix
   }
}
service imap-login {
   service_count = 0
}
service imap {
   process_limit = 2048
}
ssl = required
ssl_cert = </etc/ssl/myCerts/imap.pem
ssl_key = </etc/ssl/myCerts/imap_key.pem
userdb {
   args = /etc/dovecot/dovecot-sql.conf.ext
   driver = sql
}
protocol smtp {
   auth_verbose = yes
}
protocol lda {
   mail_plugins = sieve
}
protocol imap {
   mail_max_userip_connections = 20
}
oldhost : Fri Dec 27, 08:22:04 : ~

**********************************************************

new server dovecot -n:

host : Fri Dec 27, 08:13:34 : ~
  # doveconf -n
# 2.2.10: /etc/dovecot/dovecot.conf
# OS: Linux 3.10.17-gentoo x86_64 Gentoo Base System release 2.2
auth_default_realm = example.com
auth_mechanisms = plain login
first_valid_uid = 200
last_valid_uid = 200
listen = *
login_log_format_elements = user=<%u> method=%m %c rip=%r lport=%{lport}
mail_gid = vmail
mail_location = maildir:~
mail_uid = vmail
managesieve_notify_capability = mailto
managesieve_sieve_capability = fileinto reject envelope 
encoded-character vacation subaddress comparator-i;ascii-numeric 
relational regex imap4flags copy include variables body enotify 
environment mailbox date ihave
namespace inbox {
   inbox = yes
   location =
   mailbox Drafts {
     special_use = \Drafts
   }
   mailbox Junk {
     special_use = \Junk
   }
   mailbox Sent {
     special_use = \Sent
   }
   mailbox "Sent Messages" {
     special_use = \Sent
   }
   mailbox Trash {
     special_use = \Trash
   }
   prefix =
   separator = .
}
passdb {
   args = /etc/dovecot/dovecot-sql.conf.ext
   driver = sql
}
plugin {
   sieve = ~/.dovecot.sieve
   sieve_dir = ~/sieve
}
protocols = imap lmtp
service auth-worker {
   user = $default_internal_user
}
service auth {
   unix_listener /var/spool/postfix/private/auth {
     group = postfix
     mode = 0660
     user = postfix
   }
   unix_listener auth-userdb {
     group = vmail
     mode = 0600
     user = vmail
   }
}
service imap-login {
   service_count = 0
}
service imap {
   process_limit = 2048
}
ssl = required
ssl_cert = </etc/ssl/myCerts/imap.pem
ssl_key = </etc/ssl/myCerts/imap_key.pem
userdb {
   args = /etc/dovecot/dovecot-sql.conf.ext
   driver = sql
}
protocol smtp {
   auth_verbose = yes
}
protocol lda {
   auth_verbose = yes
   mail_plugins = sieve
}
protocol imap {
   mail_max_userip_connections = 20
}
host : Fri Dec 27, 08:19:59 : ~


-- 

Best regards,

*/Charles/*


More information about the dovecot mailing list