The crisis with spamcop is a good excuse to start a discussion on how we can mitigate such happenings in the future. What happened there was that Mail::Audit didn't preserve the old headers on a resend and since our testing didn't include looking at headers, the change went into production with disruptive effects.
Of course, we will include such checks in our future tests but we should start a test-plan file containing items to test for before release. And we can keep adding to this file over time. This will by no means eliminate buggy releases but at least we can avoid making the same mistake again.
On a related note, we should funnel all code changes through CVS. To that end both the production and test servers should run on a copy checked out from CVS, with only the configuration files being changed from the default CVS values. The production environment may lag the latest version found in CVS but it should not contain any changes not in CVS. We can make use of the branch/tag features in CVS to handle the case where we want to get a hot-fix release out at short notice.