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

Reply via email to