Hope my subject doesn't offend anyone. It was probably a poor attempt at humor. :)
Recently, I took on a project of testing and installing Cyrus-IMAPD for our company. I liked a lot of the features that it offered such as a 'sealed box', sieve and just an overall outstanding imap server. It also came highly recommended from a few of my peers. With that, I took off with the project.
My ultimate goal was to install it on FreeBSD 4.9 on a nice, high end server. Originally, I decided to download the source and compile from hand, with intentions of getting a feel for it. Once that was complete, I was going to do the actual install through the FreeBSD ports tree.
Needless to say, I ran into quite a few interesting things that have happened with my testing of Cyrus. My intentions are to tell what I have found in hopes of getting answers to some of the problems I ran into, as well as to hopefully help others some day in an attempt to prevent them from running into the same pitfalls I ran into.
(NOTE: If it has success in parenthesis, it means it was a successful login)
TEST 1
Synced source and ports.
cd /usr/ports/mail/cyrus-imapd2
Edited the Makefile to use BerkeleyDB 41 (changed 3 to 41)
Options: make -DWITH_SKIPLIST -DWITH_MURDER make -DWITH_SKIPLIST -DWITH_MURDER install clean
edited /etc/services --> added sieve 2000/tcp edited /etc/rc.conf ---> added cyrus_imapd_enable="YES" at bottom edited /usr/local/etc/imapd.conf ---> added cyrusadm to "admins" section executed /usr/local/cyrus/bin/mkimap
rebooted
Did the following (To remove the following entry in /var/log/auth.log and /var/log/messages)
OTP unavailable because can't read/write key database /etc/opiekeys: Permission denied
touch /etc/opiekeys chown cyrus /etc/opiekeys
testing with imtest:
imtest -m login -a testuser -p imap localhost (success) Jan 14 14:58:01 obsidian imapd[142]: no user in db Jan 14 14:58:01 obsidian imapd[142]: login: localhost[::1] testuser plaintext
imtest -m DIGEST-MD5 -a testuser -p imap localhost (success)
Jan 14 14:58:13 obsidian imapd[142]: no user in db
Jan 14 14:58:13 obsidian imapd[142]: login: localhost[::1] testuser DIGEST-MD5 User logged in
imtest -m CRAM-MD5 -a testuser -p imap localhost (success)
Jan 14 14:58:21 obsidian imapd[142]: no user in db
Jan 14 14:58:21 obsidian imapd[142]: login: localhost[::1] testuser CRAM-MD5 User logged in
imtest -m NTLM -a testuser -p imap localhost (success)
Jan 14 14:58:33 obsidian imapd[142]: login: localhost[::1] testuser NTLM User logged in
cyradm --user cyrusadm localhost (success)
Jan 14 15:01:34 obsidian imapd[171]: no user in db
Jan 14 15:01:34 obsidian imapd[171]: login: localhost[::1] cyrusadm DIGEST-MD5 User logged in
saslpasswd -d [EMAIL PROTECTED]
Jan 14 15:02:20 obsidian saslpasswd2: setpass succeeded for [EMAIL PROTECTED]
Jan 14 15:02:20 obsidian saslpasswd2: Couldn't update db
Jan 14 15:02:20 obsidian last message repeated 2 times
Success with logging in with a imap client:
Jan 14 15:05:05 obsidian imapd[178]: no user in db
Jan 14 15:05:05 obsidian imapd[178]: login: [192.168.1.90] testuser CRAM-MD5 User logged in
For the most part, everything appears to work. BUT, after watching the logs for a bit, I get the following:
Jan 14 15:08:05 obsidian ctl_cyrusdb[180]: checkpointing cyrus databases
Jan 14 15:08:05 obsidian ctl_cyrusdb[180]: DBERROR: error listing log files: DB_NOTFOUND: No matching key/data pair found
Jan 14 15:08:05 obsidian ctl_cyrusdb[180]: DBERROR: archive /var/imap/db: cyrusdb error
Jan 14 15:08:05 obsidian ctl_cyrusdb[180]: done checkpointing cyrus databases
I restarted cyrus to see more information:
Jan 14 15:12:17 obsidian master[209]: ready for work
Jan 14 15:12:17 obsidian ctl_cyrusdb[211]: checkpointing cyrus databases
Jan 14 15:12:17 obsidian ctl_cyrusdb[211]: DBERROR: error listing log files: DB_NOTFOUND: No matching key/data pair found
Jan 14 15:12:17 obsidian ctl_cyrusdb[211]: DBERROR: archive /var/imap/db: cyrusdb error
Jan 14 15:12:17 obsidian ctl_cyrusdb[211]: done checkpointing cyrus databases
Now im getting DBerrors... I thought i'd post my 'ver' output from within cyradm:
localhost> ver name : Cyrus IMAPD version : v2.1.16 2003/11/19 16:45:28 vendor : Project Cyrus support-url: http://asg.web.cmu.edu/cyrus os : FreeBSD os-version : 4.9-RELEASE environment: Cyrus SASL 2.1.17 Sleepycat Software: Berkeley DB 4.1.25: (December 19, 2002) Built w/OpenSSL 0.9.7c 30 Sep 2003 Running w/OpenSSL 0.9.7c 30 Sep 2003 CMU Sieve 2.2 TCP Wrappers mmap = shared lock = fcntl nonblock = fcntl auth = unix idle = poll mailboxes.db = skiplist seen.db = skiplist subs.db = flat deliver.db = db3-nosync tls_sessions.db = db3-nosync
I continued to test. This time I setup TLS as per instructions on the web page.
I was able to connect both through 'imtest' and through a Mozilla client with no problems at all.
What is odd though is that when I restarted the cyrus server, here are the entries from my messages log:
Jan 14 15:21:30 obsidian master[279]: process started
Jan 14 15:21:30 obsidian ctl_cyrusdb[280]: recovering cyrus databases
Jan 14 15:21:30 obsidian ctl_cyrusdb[280]: skiplist: recovered /var/imap/mailboxes.db (2 records, 488 bytes) in 0 seconds
Jan 14 15:21:30 obsidian ctl_cyrusdb[280]: done recovering cyrus databases
Jan 14 15:21:30 obsidian master[279]: ready for work
Jan 14 15:21:30 obsidian ctl_cyrusdb[281]: checkpointing cyrus databases
Jan 14 15:21:30 obsidian ctl_cyrusdb[281]: done checkpointing cyrus databases
So now, no db errors?
Looking closer at the original DB error message, I noticed it was not looking in the right place: /var/imap/mailboxes.db
You can see in the log above, that it is looking at the correct location and DB and no errors.
So my question is, why is that? Why does it first start off with an error message, then after some playing around, it finds it?
Is that a bug? Something on my end?
It find it very odd that this occurs.
I will continue to test this and will be more than happy to post my results and findings to anyone who is interested in seeing them.
I appreciate any feedback and comments.
Jason