FreeBSD ZFS maildir to mdbox

Roland van Laar roland at micite.net
Tue Mar 17 22:09:25 UTC 2015


Hello,

I'm converting my mailbox from Maildir to mdbox..
The Maildir is from an 1.2 server.

The new server is a virtual FreeBSD ZFS server.
The conversion is not working, I'm getting either segfaults or the sync 
just quits with errors.
I also did set with mmap_disable=yes. This didn't resolve the problem.
How can I fix this?

The same conversion on a virtual ubuntu 14.04 box works with mentions of 
"filename has the wrong S value" and Corrupted index errors.

The FreeBSD errors and dovecot -n are included below:

dsync(vagrant): Error: 
read(./Maildir/cur/1296038598.29562.mail.micite.net,S=20542:2,Sa) 
failed: Cached message size smaller than expected (20542 < 20640, 
box=INBOX, UID=475)
dsync(vagrant): Error: Maildir filename has wrong S value, renamed the 
file from ./Maildir/cur/1296038598.29562.mail.micite.net,S=20542:2,Sa to 
./Maildir/cur/1296038598.29562.mail.micite.net,S=20640:2,Sa
dsync(vagrant): Error: Corrupted index cache file 
./Maildir/dovecot.index.cache: Broken physical size for mail UID 475
dsync(vagrant): Error: write(/home/vagrant/mdbox/storage/m.12) failed: 
Invalid argument
dsync(vagrant): Error: copy: 
i_stream_read(./Maildir/cur/1296038598.29562.mail.micite.net,S=20542:2,Sa) 
failed: Cached message size smaller than expected (20542 < 20640, 
box=INBOX, UID=475)
dsync(vagrant): Error: 
read(./Maildir/cur/1296038598.29562.mail.micite.net,S=20542:2,Sa) 
failed: Cached message size smaller than expected (20542 < 20640, 
box=INBOX, UID=475) (uid=475, box=INBOX)
dsync(vagrant): Error: Mailbox INBOX: read(msg input) failed: Cached 
message size smaller than expected (20542 < 20640, box=INBOX, UID=475)
dsync(vagrant): Error: 
read(./Maildir/cur/1296038598.29562.mail.micite.net,S=20542:2,Sa) 
failed: Cached message size smaller than expected (20542 < 20640, 
box=INBOX, UID=475) (uid=475, box=INBOX)
dsync(vagrant): Panic: file mail-index-transaction-update.c: line 964 
(mail_index_update_ext): assertion failed: (seq > 0 && (seq <= 
mail_index_view_get_messages_count(t->view) || seq <= t->last_new_seq))
Abort (core dumped)

(gdb) core doveadm.core
Core was generated by `doveadm'.
Program terminated with signal 6, Aborted.
#0  0x00000008013f8a1a in ?? ()
(gdb) bt
#0  0x00000008013f8a1a in ?? ()
#1  0x00000008013f7149 in ?? ()
#2  0x0000000000000000 in ?? ()


or with no core dump:

% doveadm sync maildir:./Maildir
dsync(vagrant): Error: 
read(./Maildir/cur/1296466748.64525.mail.micite.net,S=7629:2,Sa) failed: 
Cached message size smaller than expected (7629 < 7694, box=INBOX, UID=899)
dsync(vagrant): Error: Maildir filename has wrong S value, renamed the 
file from ./Maildir/cur/1296466748.64525.mail.micite.net,S=7629:2,Sa to 
./Maildir/cur/1296466748.64525.mail.micite.net,S=7694:2,Sa
dsync(vagrant): Error: Corrupted index cache file 
./Maildir/dovecot.index.cache: Broken physical size for mail UID 899
dsync(vagrant): Error: write(/home/vagrant/mdbox/storage/m.11) failed: 
Invalid argument
dsync(vagrant): Error: copy: 
i_stream_read(./Maildir/cur/1296466748.64525.mail.micite.net,S=7629:2,Sa) failed: 
Cached message size smaller than expected (7629 < 7694, box=INBOX, UID=899)
dsync(vagrant): Error: 
read(./Maildir/cur/1296466748.64525.mail.micite.net,S=7629:2,Sa) failed: 
Cached message size smaller than expected (7629 < 7694, box=INBOX, 
UID=899) (uid=899, box=INBOX)
dsync(vagrant): Error: Mailbox INBOX: read(msg input) failed: Cached 
message size smaller than expected (7629 < 7694, box=INBOX, UID=899)
dsync(vagrant): Error: 
read(./Maildir/cur/1296466748.64525.mail.micite.net,S=7629:2,Sa) failed: 
Cached message size smaller than expected (7629 < 7694, box=INBOX, 
UID=899) (uid=899, box=INBOX)



% dovecot -n
# 2.2.16: /usr/local/etc/dovecot/dovecot.conf
# OS: FreeBSD 10.1-RELEASE-p6 amd64
mail_location = mdbox:~/mdbox
namespace {
   inbox = yes
   location =
   prefix =
   separator = .
}
passdb {
   args = /usr/local/etc/dovecot/conf.d/dovecot-sql.conf.ext
   driver = sql
}
protocols = lmtp imap
service auth {
   unix_listener /var/spool/postfix/private/auth {
     group = postfix
     mode = 0660
     user = postfix
   }
}
service lmtp {
   unix_listener /var/spool/postfix/private/dovecot-lmtp {
     group = postfix
     mode = 0600
     user = postfix
   }
   user = vmail
}
ssl = required
ssl_cert = </etc/ssl/ec/ec.crt
ssl_key = </etc/ssl/ec/ec.key
userdb {
   args = /usr/local/etc/dovecot/conf.d/dovecot-sql.conf.ext
   driver = sql
}
protocol lmtp {
   postmaster_address = postmaster at micite.net
}



More information about the dovecot mailing list