Greetings,
I'm all out of ideas, and hoping that someone on
this mailing list can help me.
After reading the book Managing IMAP, I
decided to give Cyrus IMAP a try. So I set up a Linux box with Redhat 7.1,
downloaded and installed Postfix (20010228-pl04), and downloaded and installed
Cyrus IMAP (1.5.19). I have Postfix configured to use the Cyrus deliver
program as the MDA, and everything appeared to be working correctly. That
is I can send and receive emails using several IMAP clients (Netscape, Eudora,
and Outlook). However, the moment I create
an additional mailbox under a user's mail directory, problems with the
cyrus.seen files begin to crop up.
Specifically, I create a user.amyers mailbox
using the cyradm utility. I am then able to access mail, and the IMAP
server maintains the cyrus.seen file without difficulty.
bash-2.04$ ls -lR amyers
amyers: total 88 -rw-rw---- 1 cyrus mail 652 Oct 25 20:01 235. -rw-rw---- 1 cyrus mail 1285 Oct 25 21:01 251. -rw-rw---- 1 cyrus mail 4813 Oct 26 14:01 360. -rw-rw---- 1 cyrus mail 1402 Oct 26 15:01 461. -rw-rw---- 1 cyrus mail 4467 Oct 26 16:01 565. -rw-rw---- 1 cyrus mail 1421 Oct 26 16:06 566. -rw-rw---- 1 cyrus mail 11741 Oct 26 16:07 567. -rw-rw---- 1 cyrus mail 1787 Oct 26 16:09 568. -rw-rw---- 1 cyrus mail 11010 Oct 26 16:09 569. -rw-rw---- 1 cyrus mail 5030 Oct 26 16:12 570. -rw-rw---- 1 cyrus mail 7144 Oct 26 16:12 cyrus.cache -rw-rw---- 1 cyrus mail 135 Oct 26 15:27 cyrus.header -rw-rw---- 1 cyrus mail 564 Oct 26 16:12 cyrus.index -rw-rw---- 1 cyrus mail 180 Oct 26 16:28 cyrus.seen I then create a user.amyers.temp mailbox, and the
cyrus.seen files are no longer maintained properly. The system creates cyrus.seen.NEW files which differ from the
cyrus.seen files. From this point on, each time I move from one mailbox to
the next the message status is not preserved and the mail client continuously
complains that the mailboxes are not synchronized. When I synchronize the
mailboxes, every message reverts to an unread status.
bash-2.04$ ls -lR amyers
amyers: total 96 -rw-rw---- 1 cyrus mail 652 Oct 25 20:01 235. -rw-rw---- 1 cyrus mail 1285 Oct 25 21:01 251. -rw-rw---- 1 cyrus mail 4813 Oct 26 14:01 360. -rw-rw---- 1 cyrus mail 1402 Oct 26 15:01 461. -rw-rw---- 1 cyrus mail 4467 Oct 26 16:01 565. -rw-rw---- 1 cyrus mail 1421 Oct 26 16:06 566. -rw-rw---- 1 cyrus mail 11741 Oct 26 16:07 567. -rw-rw---- 1 cyrus mail 1787 Oct 26 16:09 568. -rw-rw---- 1 cyrus mail 11010 Oct 26 16:09 569. -rw-rw---- 2 cyrus mail 5030 Oct 26 16:12 570. -rw-rw---- 1 cyrus mail 7144 Oct 26 16:12 cyrus.cache -rw-rw---- 1 cyrus mail 135 Oct 26 15:27 cyrus.header -rw-rw---- 1 cyrus mail 564 Oct 26 16:12 cyrus.index -rw-rw---- 1 cyrus mail 180 Oct 26 16:31 cyrus.seen -rw-rw---- 1 cyrus mail 240 Oct 26 16:31 cyrus.seen.NEW drwxrwx--- 2 cyrus mail 4096 Oct 26 16:31 temp amyers/temp:
total 20 -rw-rw---- 2 cyrus mail 5030 Oct 26 16:12 1. -rw-rw---- 1 cyrus mail 1064 Oct 26 16:31 cyrus.cache -rw-rw---- 1 cyrus mail 135 Oct 26 16:31 cyrus.header -rw-rw---- 1 cyrus mail 96 Oct 26 16:31 cyrus.index -rw-rw---- 1 cyrus mail 0 Oct 26 16:31 cyrus.seen -rw-rw---- 1 cyrus mail 0 Oct 26 16:31 cyrus.seen.NEW If I delete the temp mailbox and overwrite
cyrus.seen with cyrus.seen.NEW, everything goes back to normal!
bash-2.04$ ls -lR amyers/
amyers/: total 88 -rw-rw---- 1 cyrus mail 652 Oct 25 20:01 235. -rw-rw---- 1 cyrus mail 1285 Oct 25 21:01 251. -rw-rw---- 1 cyrus mail 4813 Oct 26 14:01 360. -rw-rw---- 1 cyrus mail 1402 Oct 26 15:01 461. -rw-rw---- 1 cyrus mail 4467 Oct 26 16:01 565. -rw-rw---- 1 cyrus mail 1421 Oct 26 16:06 566. -rw-rw---- 1 cyrus mail 11741 Oct 26 16:07 567. -rw-rw---- 1 cyrus mail 1787 Oct 26 16:09 568. -rw-rw---- 1 cyrus mail 11010 Oct 26 16:09 569. -rw-rw---- 1 cyrus mail 5030 Oct 26 16:12 570. -rw-rw---- 1 cyrus mail 7144 Oct 26 16:12 cyrus.cache -rw-rw---- 1 cyrus mail 135 Oct 26 15:27 cyrus.header -rw-rw---- 1 cyrus mail 564 Oct 26 16:12 cyrus.index -rw-rw---- 1 cyrus mail 240 Oct 26 16:36 cyrus.seen Has anybody run into this problem before? I
tried to search the archives of this mailing list, but I could not find any
reference to such a problem. The web site http://multivac.fatburen.org/localdoc/cyrus/server-design gives
a high level view of the steps taken by each IMAP procedure. The steps
taken for maintaining the seen file is given as:
update recent/seen info:
lock cyrus.seen
find record
if user appears to have read
everything and previously hadn't
dropoff
request for IMSP SEEN command
else if user previously had read
everything but no longer does
dropoff
request for IMSP SEEN (0) command
if enough room to update
in place
update record in place
else
create cyrus.seen.NEW
copy
data, updating record
rename cyrus.seen.NEW to cyrus.seen
release lock
I'm guessing the problem lies in the highlighted
portion. Apparently, IMAP is convinved that there is not enough room to
update the file in place. However, it fails to rename the cyrus.seen.NEW
file, yet this only occurs when there are multiple mailbox files.
Any ideas on how to fix this? Has this
problem been addressed in more recent Cyrus IMAP versions?
Many thanks,
Andrew
|