Hello

I've just started using cyrus a couple of weeks ago; I am using the RPM
distribution (2.0.9-3) on a RH7.1 system. Right after installing and
configuring it, I moved the data in a different partition (it normally
resides in /var/imap and /var/spool/imap). I reconfigured the
directories (in imapd.conf)
------------------------------------
configdirectory: /data/cyrus/imap
partition-default: /data/cyrus/spool/imap
------------------------------------

At first everything worked fine. However, when I tried to move some
mails (and some mail folders) using Netscape - the imap connection
dropped. I could not connect to it with the same user until I restarted
the server.
After examining the logs the following thing showed up:
----------------------------------------------------------------------------------------------------

Nov  2 21:35:28 barracuda imapd[23988]: error opening
'/data/cyrus/imap/user/i/ionut.sub/cyrus.seen': Not a directory
----------------------------------------------------------------------------------------------------

(ionut is the username).

I've looked through the code (unfirtunatelly I have version 2.0.16 of
the source) and the following thing from imap/seen_db.c looked strange:

-- line 206 --
----------------------------------------------------
    if (fd == -1 && errno == ENOENT) {
        /* no old-style seen file for this database */
        *seenuidsptr = xstrdup("");
        return 0;
    } else if (fd == -1) {
        syslog(LOG_ERR, "error opening '%s': %m", fnamebuf);
        return IMAP_IOERROR;
    }
----------------------------------------------------

once again I'm new to cyrus so I'm not familiar with its history. I
think though that this is is some backward compatibility check for the
\seen flags database for the mailbox - in the changelog of cyrus-imapd
it said the location of this db location was changed and the code
ensures the migration to the new format.

This code checks for  the existence of cyrus.seen and if it does not
exist it just assumes no old version (as far as I can see).
Unfortunatelly, the error returned by the system is not ENOENT as one
would expect but instead it is ENOTDIR (cause the ionut.sub is a file
not a directory); thus, this piece of code returns IMAP_IOERROR and the
thread seems to hang (I did not look further into it). That user (in
this case 'ionut') cannot connect to the server until the server is
restarted.


Am I missing something here ?


Ionut
[EMAIL PROTECTED]

Reply via email to