Re: Cyrus IMAPd 2.3.4 Released
On Wed, 24 May 2006 12:44:42 -0400, Ken Murchison [EMAIL PROTECTED] said: It looks like in my haste to make a release with the pop3d bugfix, it didn't do enough testing. I'm seeing the same thing here,and I'm working on it. Is this a good spot to suggest branching from the last stable release (2.3.3 in this case) and just applying the bugfixes if HEAD is only half finished? I know branching sucks in CVS (which is why we've been a subversion shop for about 6 months now), but it's better than the mad scramble we've had the past couple of days due to incomplete features meaning corrupt indexes in a release. Bron ( who shouldn't have blindly gone ahead and rolled out the latest code either, even just to one server... ) -- Bron Gondwana [EMAIL PROTECTED] Cyrus Home Page: http://asg.web.cmu.edu/cyrus Cyrus Wiki/FAQ: http://cyruswiki.andrew.cmu.edu List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html
Re: Cyrus IMAPd 2.3.4 Released
On Thu, 2006-05-25 at 17:56 +1000, Bron Gondwana wrote: On Wed, 24 May 2006 12:44:42 -0400, Ken Murchison [EMAIL PROTECTED] said: It looks like in my haste to make a release with the pop3d bugfix, it didn't do enough testing. I'm seeing the same thing here,and I'm working on it. Is this a good spot to suggest branching from the last stable release (2.3.3 in this case) and just applying the bugfixes if HEAD is only half finished? 2.3 is beta branch. You want stable you go for 2.2. M. -- Miroslaw Psyborg Jaworski GCS/IT d- s+:+ a C++$ UBI$ P+++$ L- E--- W++(+++)$ N++ o+ K- w-- O- M- V- PS+ PE++ Y+ PGP t 5? X+ R++ !tv b++(+++) DI++ D+ G e* h++ r+++ y? Cyrus Home Page: http://asg.web.cmu.edu/cyrus Cyrus Wiki/FAQ: http://cyruswiki.andrew.cmu.edu List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html
Re: Cyrus IMAPd 2.3.4 Released
Is this a good spot to suggest branching from the last stable release (2.3.3 in this case) and just applying the bugfixes if HEAD is only half finished? 2.3 is beta branch. You want stable you go for 2.2. Beta is may be, but still 1. There's no regression testing with cyrus at all. I did try and start a cyrus regression test a while back (just a perl script to test basic IMAP functionality) but there wasn't really interest in taking it up. I still strongly believe that some form of basic regression test that is built up more and more over time is is important. 2. This bug is something that would have turned up with 5 minutes of basic functionality testing (copying a message from one folder to another is broken) 3. 2.3.3 was working really well, and has been working well for months. A serious security issue was found so 2.3.4 was released. 2.3.4 was totally broken. 4. The reason 2.3.4 was totally brokwn was because significant functionality was added from 2.3.3 - 2.3.4 (CONDSTORE stuff). It's a hard compromise between releasing new features regularly and keeping a stable branch. Maybe we need a 2.3.x-rc1 type scheme before an official release so that the obvious things get caught before an actual point release? Or maybe a 2.3.3.1 release for urgent security/minor bug fixes? Just throwing things in the wind, seeing if anything sticks. Maybe this is just a more one off type situation, and a rethinking of release strategy is not needed. Rob Cyrus Home Page: http://asg.web.cmu.edu/cyrus Cyrus Wiki/FAQ: http://cyruswiki.andrew.cmu.edu List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html
Re: Cyrus IMAPd 2.3.4 Released
Robert Mueller wrote: Is this a good spot to suggest branching from the last stable release (2.3.3 in this case) and just applying the bugfixes if HEAD is only half finished? 2.3 is beta branch. You want stable you go for 2.2. Beta is may be, but still 1. There's no regression testing with cyrus at all. I did try and start a cyrus regression test a while back (just a perl script to test basic IMAP functionality) but there wasn't really interest in taking it up. I still strongly believe that some form of basic regression test that is built up more and more over time is is important. 2. This bug is something that would have turned up with 5 minutes of basic functionality testing (copying a message from one folder to another is broken) 3. 2.3.3 was working really well, and has been working well for months. A serious security issue was found so 2.3.4 was released. 2.3.4 was totally broken. 4. The reason 2.3.4 was totally brokwn was because significant functionality was added from 2.3.3 - 2.3.4 (CONDSTORE stuff). It's a hard compromise between releasing new features regularly and keeping a stable branch. Maybe we need a 2.3.x-rc1 type scheme before an official release so that the obvious things get caught before an actual point release? Or maybe a 2.3.3.1 release for urgent security/minor bug fixes? Just throwing things in the wind, seeing if anything sticks. Maybe this is just a more one off type situation, and a rethinking of release strategy is not needed. This hole mess is a result of me having my head up my ass. I usually do pretty thorough testing of any code that I touch, and I *thought* that I had done that with the CONDSTORE stuff. Its now obvious that I didn't do enough testing of the non-CONDSTORE case. -- Kenneth Murchison Systems Programmer Project Cyrus Developer/Maintainer Carnegie Mellon University Cyrus Home Page: http://asg.web.cmu.edu/cyrus Cyrus Wiki/FAQ: http://cyruswiki.andrew.cmu.edu List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html
Re: Cyrus IMAPd 2.3.4 Released
On Thu, 25 May 2006 08:43:46 -0400, Ken Murchison [EMAIL PROTECTED] said: This hole mess is a result of me having my head up my ass. I usually do pretty thorough testing of any code that I touch, and I *thought* that I had done that with the CONDSTORE stuff. Its now obvious that I didn't do enough testing of the non-CONDSTORE case. Happens to us all :( Of course, as Rob suggested, a regression test suite means you don't _have_ to think so much about things that worked in the past. Not entirely so, because your test suite is unlikely to cover every use case, but it should help a lot. We're a bit in the same boat - far too much of our system doesn't have test suites, and even when we do test stuff there's inevitably something different about production. At least we've moved to a relatively stable Debian based infrastructure now where you can get pretty much an entire server running with 'apt-get install fastmail-base; svn co $URL; make -C conf install'. Not quite there yet, but that's the goal. Means we're testing in an environment that's a much like production as we can make it and things don't get littered with as many ad-hoc changes. I hope my emergency patch is useful to you. I seems to have solved the obvious symptoms for us. Of course you probably know better than me if there's anywhere else that's generating index files that needs updating to set that struct member. Possibly a safer approach (bit late now, I know) is to have an init_index function which is _always_ called on one of those structs _before_ you do anything else to it, and then when you add a member to the struct you only need to do the default case in one place (new_index.modseq = 1;). That would have avoided the need to litter the code with bits of initialiser everywhere. There's my object-oriented training talking. We've moved most of our staff accounts (including me!) onto the server that is running 2.3.5+patches so we can eat our own dogfood. Mmm dogfood. Should help us see if anything else is strange. (now I just have to figure things out so that when we move users we retain the UIDVALIDITY so my entire offlineimap store doesn't get stale next time) Bron. -- Bron Gondwana [EMAIL PROTECTED] Cyrus Home Page: http://asg.web.cmu.edu/cyrus Cyrus Wiki/FAQ: http://cyruswiki.andrew.cmu.edu List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html
Re: Cyrus IMAPd 2.3.4 Released
Patrick Radtke wrote: On May 25, 2006, at 6:00 AM, Robert Mueller wrote: 1. There's no regression testing with cyrus at all. I did try and start a cyrus regression test a while back (just a perl script to test basic IMAP functionality) but there wasn't really interest in taking it up. I still strongly believe that some form of basic regression test that is built up more and more over time is is important. I'm interested in a nice regression suite. I've been doing some OpenLDAP stuff recently and they have (what seems like) 2 hours worth of tests that occur once you build the software. For a long time, I've been meaning to look at how they do it and see if a similar approach could be used with Cyrus IMAPd, but other projects always take a priority. The nice thing about regression testing is that we can start small. If there was some agreed upon methodology then when anyone (e.g. Ken, someone submitting a patch, someone reporting a bug, etc) can create a tests to show how a bug gets triggered or that new code/patch doesn't introduce bugs. I agree that a test suite is something that we need. I'll add this to our TODO list. As always, code contributions are always welcome. -- Kenneth Murchison Systems Programmer Project Cyrus Developer/Maintainer Carnegie Mellon University Cyrus Home Page: http://asg.web.cmu.edu/cyrus Cyrus Wiki/FAQ: http://cyruswiki.andrew.cmu.edu List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html
Re: Cyrus IMAPd 2.3.4 Released
On May 25, 2006, at 6:00 AM, Robert Mueller wrote:1. There's no regression testing with cyrus at all. I did try and start a cyrus regression test a while back (just a perl script to test basic IMAP functionality) but there wasn't really interest in taking it up. I still strongly believe that some form of basic regression test that is built up more and more over time is is important. I'm interested in a nice regression suite.I've been doing some OpenLDAP stuff recently and they have (what seems like) 2 hours worth of tests that occur once you build the software.For a long time, I've been meaning to look at how they do it and see if a similar approach could be used with Cyrus IMAPd, but other projects always take a priority.The nice thing about regression testing is that we can start small. If there was some agreed upon methodology then when anyone (e.g. Ken, someone submitting a patch, someone reporting a bug, etc) can create a tests to show how a bug gets triggered or that new code/patch doesn't introduce bugs.-Patrick Cyrus Home Page: http://asg.web.cmu.edu/cyrus Cyrus Wiki/FAQ: http://cyruswiki.andrew.cmu.edu List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html
Re: Cyrus IMAPd 2.3.4 Released
I agree that a test suite is something that we need. I'll add this to our TODO list. As always, code contributions are always welcome. See below and attached, a copy of what I sent april '04. It's not great, but it's a start... Rob Hi Ken Rob Given that there's currently no regression test for cyrus, I thought it might be worth creating one. The basic idea being that the tests are kept up to date, and any new features get a basic set of tests. Also anytime a bug is discovered, a test is added that shows the bug, and left to make sure it doesn't come back in the future. We're willing to fund the starting of this project (geared towards the most recent patches for our needs), but hope CMU will keep it up to date in the future as well. I'm not quite sure how any of this would work (both funding and maintenance wise), but maybe you can make some suggestions? Anyway, I think there should be a generic imap component, and cyrus specific component, in that it does some tests that rely on cyrus and/or it's utilities (eg check location of spool directory and meta files, corrupt a mailbox and run reconstruct, check quota and quota fixing, etc) I think it's probably best to write the script in perl, and here's a couple of modules that should help: http://search.cpan.org/~robm/Mail-IMAPTalk-1.00/ http://search.cpan.org/~lhoward/Net-LMTP-0.02/ I tend to like creating two main types of tests: 1. A very structured set that test very specific set of actions. I tend to make it so each 'batch' of tests is a function and is independent, and that it leaves everything exactly how it was beforehand so you can easily run the same test suite over and over, or a particular test function. eg sub TestBasicFolder { $Imap-create('user.test1') || die Could not create user.test1; my $ACL = $Imap-getacl('user.test1') || die Could not get user.test1 ACL 1; $Imap-setacl('user.test1', 'admin', 'lrswipcda') || die Could not set user.test1 ACL; $ACL = $Imap-getacl('user.test1') || die Could not get user.test1 ACL 2; ... some more tests ... $Imap-delete('user.test1') || die Could not delete user.test1; } 2. Ones that pick a bunch of random commands from a set and executes them, somehow keeping internally what it expects the state to be and making sure that it is. eg something like: sub TestRandomFolderCreateDelete { my @Folders; for (1 .. 10) { my $Rand = rand(); # Create a random folder if ($Rand 0.7) { my $Folder = user. . RandomFolderName(int(rand(20))); $Imap-create() || die Could not create folder $Folder: $@; push @Folders, $Folder; # Delete a random folder } elsif ($Rand 0.9) { my $Folder = splice @Folders, int(rand(@Folders));, 1; $Imap-delete($Folder) || die Could not delete folder $Folder: $@; # Check mailbox list } else { my %List = map { $_-[2] = 1 } $Imap-list('*', '*'); for (@Folders) { delete $List{$_} || die Folder $_ not found; } !%List || die Not all folders found; } } for (@Folders) { $Imap-delete($_) || die Could not delete folder $Folder: $@; } my @List = $Imap-list('*', '*'); [EMAIL PROTECTED] || die Unexpectedly found folders; } I find tests like this quite important to find the more obscure bugs. Once it does find a bug, I then find that I try differnet values of srand() at the start (which then makes rand generate the same sequence each time the program is run) until the bug is reproducible so I can track it down. So basic things I can think of: 1. Login as 'administrator' user and create a bunch of user.* mailboxes and sub-folders and listing 2. Test deleting some folders (eg test problem of deleting user.adminxxx folder name) and listing 3. Set/get/myrights tests ACL's on the mailboxes (eg try read only, post only, sharing other users folder, etc) 4. Set quotas on the mailboxes (different quota roots, etc) 5. Login as a user for one of the mailboxes. Test different ACL's set above (eg try read only, post only, sharing other users folder, etc) 6. Appending messages to a mailbox 7. Reading messages (and seen flag) 8. Setting/getting other flags 9. Delivering email via LMTP (and of course + addressing) 10. LMTP new wildcard addressing 11. POP access to a mailbox 12. POP access to sub-folder 13. Group ACLs 14. Sieve actions A couple of tricky things: 1. User logins. Since these are separate to the actual mailbox names, I'm not sure how to easily handle this... maybe force usage of a saslauthd daemon that always authorises all username/password combinations... 2. imapd.conf will need to be changed and then the server restarted from the code To get the ball rolling, I looked at some existing code I had, and started the outlines of how I think things might work. I've attached the script, which currently has 3 tests which I've just tested at home and verified that it works. Rob cyrus_regression_test.pl Description: Binary data Cyrus Home Page: http://asg.web.cmu.edu/cyrus Cyrus Wiki/FAQ: http://cyruswiki.andrew.cmu.edu
Re: Cyrus IMAPd 2.3.4 Released
Ken Murchison wrote: Hajimu UMEMOTO wrote: Hi, On Tue, 23 May 2006 12:38:12 -0400 Ken Murchison [EMAIL PROTECTED] said: May 24 01:03:55 ameno lmtpunix[37779]: accepted connection May 24 01:03:55 ameno lmtpunix[37779]: lmtp connection preauth'd as postman May 24 01:03:55 ameno lmtpunix[37779]: verify_user(user.ume) failed: Mailbox has an invalid format And, my MUA complains to cannot find %INBOX. murch If you reconstruct the mailbox, do the problems go away? Yes, it fixed the problem. Thank you. However, when I update an index from my MUA, new messages don't appear in the index at all. I'm sure there are new messages in my mailbox, though. I downgraded to 2.3.3, then the new messages appeared in the index of my MUA. Any idea? Not off the top of my head. I'll look into this tomorrow. I have the same problem. I didn't reconstruct my mailboxes, but I guess it will be fixed if I do. Because I haven't yet configured lmtp to deliver to my cyrus installation I have only tested this with an imap client. If I move an email to my test imap account the message doesn't show up. If I then start the 2.3.3 cyrus the messages show up. -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- Rudy Gevaert [EMAIL PROTECTED] tel:+32 9 264 4734 Directie ICT, afd. Infrastructuur Direction ICT, Infrastructure dept. Groep Systemen Systems group Universiteit Gent Ghent University Krijgslaan 281, gebouw S9, 9000 Gent, Belgie www.UGent.be -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- Cyrus Home Page: http://asg.web.cmu.edu/cyrus Cyrus Wiki/FAQ: http://cyruswiki.andrew.cmu.edu List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html
Re: Cyrus IMAPd 2.3.4 Released
Hajimu UMEMOTO wrote: Hi, On Tue, 23 May 2006 12:38:12 -0400 Ken Murchison [EMAIL PROTECTED] said: May 24 01:03:55 ameno lmtpunix[37779]: accepted connection May 24 01:03:55 ameno lmtpunix[37779]: lmtp connection preauth'd as postman May 24 01:03:55 ameno lmtpunix[37779]: verify_user(user.ume) failed: Mailbox has an invalid format And, my MUA complains to cannot find %INBOX. murch If you reconstruct the mailbox, do the problems go away? Yes, it fixed the problem. Thank you. However, when I update an index from my MUA, new messages don't appear in the index at all. I'm sure there are new messages in my mailbox, though. I downgraded to 2.3.3, then the new messages appeared in the index of my MUA. Any idea? It looks like in my haste to make a release with the pop3d bugfix, it didn't do enough testing. I'm seeing the same thing here,and I'm working on it. -- Kenneth Murchison Systems Programmer Project Cyrus Developer/Maintainer Carnegie Mellon University Cyrus Home Page: http://asg.web.cmu.edu/cyrus Cyrus Wiki/FAQ: http://cyruswiki.andrew.cmu.edu List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html
Re: Cyrus IMAPd 2.3.4 Released
Hi, On Tue, 23 May 2006 10:44:15 -0400 Ken Murchison [EMAIL PROTECTED] said: murch I am pleased to announce the release of Cyrus IMAPd 2.3.4. This is a murch BETA-quality release, reflecting that it has significant numbers of new murch features that have not been tested on a wide-scale basis, although murch earlier versions of this code have been running at several sites for murch quite some time. Are there any backward compatibility issue against 2.3.3? The lmtpd cannot accept any new message with following message: May 24 01:03:55 ameno lmtpunix[37779]: accepted connection May 24 01:03:55 ameno lmtpunix[37779]: lmtp connection preauth'd as postman May 24 01:03:55 ameno lmtpunix[37779]: verify_user(user.ume) failed: Mailbox has an invalid format And, my MUA complains to cannot find %INBOX. I'm not sure they are related to this problem, but I have following settings in my imapd.conf: unixhierarchysep: yes altnamespace: yes duplicatesuppression: no flushseenstate: yes Sincerely, -- Hajimu UMEMOTO @ Internet Mutual Aid Society Yokohama, Japan [EMAIL PROTECTED] [EMAIL PROTECTED],jp.}FreeBSD.org http://www.imasy.org/~ume/ Cyrus Home Page: http://asg.web.cmu.edu/cyrus Cyrus Wiki/FAQ: http://cyruswiki.andrew.cmu.edu List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html
Re: Cyrus IMAPd 2.3.4 Released
Hajimu UMEMOTO wrote: Hi, On Tue, 23 May 2006 10:44:15 -0400 Ken Murchison [EMAIL PROTECTED] said: murch I am pleased to announce the release of Cyrus IMAPd 2.3.4. This is a murch BETA-quality release, reflecting that it has significant numbers of new murch features that have not been tested on a wide-scale basis, although murch earlier versions of this code have been running at several sites for murch quite some time. Are there any backward compatibility issue against 2.3.3? The lmtpd cannot accept any new message with following message: There *shouldn't* be. The cyrus.index format has changed, bu the mailboxes should be upgraded on the fly, just like with previous changes. May 24 01:03:55 ameno lmtpunix[37779]: accepted connection May 24 01:03:55 ameno lmtpunix[37779]: lmtp connection preauth'd as postman May 24 01:03:55 ameno lmtpunix[37779]: verify_user(user.ume) failed: Mailbox has an invalid format And, my MUA complains to cannot find %INBOX. If you reconstruct the mailbox, do the problems go away? I'm not sure they are related to this problem, but I have following settings in my imapd.conf: unixhierarchysep: yes altnamespace: yes duplicatesuppression: no flushseenstate: yes Sincerely, -- Hajimu UMEMOTO @ Internet Mutual Aid Society Yokohama, Japan [EMAIL PROTECTED] [EMAIL PROTECTED],jp.}FreeBSD.org http://www.imasy.org/~ume/ -- Kenneth Murchison Systems Programmer Project Cyrus Developer/Maintainer Carnegie Mellon University Cyrus Home Page: http://asg.web.cmu.edu/cyrus Cyrus Wiki/FAQ: http://cyruswiki.andrew.cmu.edu List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html
Re: Cyrus IMAPd 2.3.4 Released
Hi, On Tue, 23 May 2006 12:38:12 -0400 Ken Murchison [EMAIL PROTECTED] said: May 24 01:03:55 ameno lmtpunix[37779]: accepted connection May 24 01:03:55 ameno lmtpunix[37779]: lmtp connection preauth'd as postman May 24 01:03:55 ameno lmtpunix[37779]: verify_user(user.ume) failed: Mailbox has an invalid format And, my MUA complains to cannot find %INBOX. murch If you reconstruct the mailbox, do the problems go away? Yes, it fixed the problem. Thank you. However, when I update an index from my MUA, new messages don't appear in the index at all. I'm sure there are new messages in my mailbox, though. I downgraded to 2.3.3, then the new messages appeared in the index of my MUA. Any idea? Sincerely, -- Hajimu UMEMOTO @ Internet Mutual Aid Society Yokohama, Japan [EMAIL PROTECTED] [EMAIL PROTECTED],jp.}FreeBSD.org http://www.imasy.org/~ume/ Cyrus Home Page: http://asg.web.cmu.edu/cyrus Cyrus Wiki/FAQ: http://cyruswiki.andrew.cmu.edu List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html
Re: Cyrus IMAPd 2.3.4 Released
Hajimu UMEMOTO wrote: Hi, On Tue, 23 May 2006 12:38:12 -0400 Ken Murchison [EMAIL PROTECTED] said: May 24 01:03:55 ameno lmtpunix[37779]: accepted connection May 24 01:03:55 ameno lmtpunix[37779]: lmtp connection preauth'd as postman May 24 01:03:55 ameno lmtpunix[37779]: verify_user(user.ume) failed: Mailbox has an invalid format And, my MUA complains to cannot find %INBOX. murch If you reconstruct the mailbox, do the problems go away? Yes, it fixed the problem. Thank you. However, when I update an index from my MUA, new messages don't appear in the index at all. I'm sure there are new messages in my mailbox, though. I downgraded to 2.3.3, then the new messages appeared in the index of my MUA. Any idea? Not off the top of my head. I'll look into this tomorrow. -- Kenneth Murchison Systems Programmer Project Cyrus Developer/Maintainer Carnegie Mellon University Cyrus Home Page: http://asg.web.cmu.edu/cyrus Cyrus Wiki/FAQ: http://cyruswiki.andrew.cmu.edu List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html