Last week I’ve spend quite a lot of time playing with Dovecot 2.0.0 and 2.0.1 and I think I’ve finally nailed it. The whole configuration was turned upside down and I had to find out how everything worked again. Compiling stayed mostly the same, I only needed to change one option. But I’ve done it and I know have two test servers running 2.0.1 in a fully functioning setup as described earlier. Currently the documentation is only available for Snow Leopard but if anyone needs to run this on Leopard I’m willing to spend some time on it to find out how to do it.

Here is the new documentation:

If you want to upgrade from 1.2.x I would suggest just to compile and install 2.x, redo the configuration from scratch and restart Dovecot.

no comments

A new version has been released of the 1.2.x branch, even now when Dovecot 2.x has been released there are still improvements to the 1.2.x branch. I’m working on the upgrade to 2.0 which is proving a challenge as the configuration is completely changed.

I’ve installed 1.2.14 on my production and a test machine still running 1.2.x and didn’t find any issues with it. The improvements are:

  • virtual mailboxes: Added support for IDLE notifications.
  • master: Don’t crash on config reload when using dict processes.
  • IMAP: QRESYNC parameters for SELECT weren’t handled correctly.

As I said, currently working on the upgrade to Dovecot 2.0, hope to have it done before the next weekend.

no comments

This is a Security Update which solves the problem with the malicious PDF’s that plagued the iPhone/iPad as well. Besides solving this issue there are some minor fixes. There are no changes to any of our software (yes even postfix is unaffected!) so you can run this without any problem. Read more about it in Apple’s Knowledge base article. All my test and production server are now safe and still working perfectly.

no comments

For everyone who is using to a 5.1.x version. This is a bug fix release and it is up to you if you want to upgrade. Check all the fixes and changes that are listed on the release notes to see what issues are resolved and if you are affected. Most of them are about replication which we don’t use in our setup.

If you are still using a 5.0.x version I would urge you to plan a upgrade to a 5.1.x version.

I’ve compiled this version and did some tests on my servers and it worked without any problems.

Read the documentation on how to ugrade MySQL.

no comments

The Roundcube development team has released a new version of the webmail platform. New features include threaded message lists and address groups. Upgrading roundcube to version 0.4 isfairly straight forward.

Before continuing, make sure you have a current backup of your mysql database and your webserver. You need to download the latest code from the Roundcube site.

Extract the archive into the Document root of your Apache installation, in our case /Library/WebServer/Documents.

Step into the newly created directory and change the permissions on the temp and logs directory so that the webserver can write into these directories with the following commands:

cd /Library/WebServer/Documents/roundcubemail-0.4
sudo chown -R www:www temp
sudo chown -R www:www logs

Next we need to update the database structure for Roundcube-0.4. Start up MySQL on the command line as the roundcube user with this command:

mysql -u roundcube -p

Note: you will need to enter the password you chose for roundcube when you initially installed it. (if you have forgotten it can be found in the config/db.ini.php file of your old roundcubemail installation). If you have a different database name, use that instead of “roundcubemail”

If your upgrading from roundcubemail version 3.0-stable, run the following commands in the mysql shell:

USE roundcubemail
TRUNCATE `messages`;
ALTER TABLE `messages`
ADD INDEX `index_index` (`user_id`, `cache_key`, `idx`);
ALTER TABLE `session`
CHANGE `vars` `vars` MEDIUMTEXT NOT NULL;
ALTER TABLE `contacts`
ADD INDEX `user_contacts_index` (`user_id`,`email`);
quit

If your upgrading from roundcubemail version 3.1-dep, run the following commands in the mysql shell:

USE roundcubemail
ALTER TABLE `messages` DROP FOREIGN KEY `user_id_fk_messages`;
ALTER TABLE `cache` DROP FOREIGN KEY `user_id_fk_cache`;
ALTER TABLE `contacts` DROP FOREIGN KEY `user_id_fk_contacts`;
ALTER TABLE `identities` DROP FOREIGN KEY `user_id_fk_identities`;
ALTER TABLE `messages` ADD CONSTRAINT `user_id_fk_messages` FOREIGN KEY (`user_id`)
REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE `cache` ADD CONSTRAINT `user_id_fk_cache` FOREIGN KEY (`user_id`)
REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE `contacts` ADD CONSTRAINT `user_id_fk_contacts` FOREIGN KEY (`user_id`)
REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE `identities` ADD CONSTRAINT `user_id_fk_identities` FOREIGN KEY (`user_id`)
REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE `contacts` ALTER `name` SET DEFAULT ”;
ALTER TABLE `contacts` ALTER `firstname` SET DEFAULT ”;
ALTER TABLE `contacts` ALTER `surname` SET DEFAULT ”;
ALTER TABLE `identities` ADD INDEX `user_identities_index` (`user_id`, `del`);
ALTER TABLE `identities` ADD `changed` datetime NOT NULL DEFAULT ’1000-01-01 00:00:00′ AFTER `user_id`;
 
CREATE TABLE `contactgroups` (
  `contactgroup_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  `user_id` int(10) UNSIGNED NOT NULL DEFAULT ’0′,
  `changed` datetime NOT NULL DEFAULT ’1000-01-01 00:00:00′,
  `del` tinyint(1) NOT NULL DEFAULT ’0′,
  `name` varchar(128) NOT NULL DEFAULT ”,
  PRIMARY KEY(`contactgroup_id`),
  CONSTRAINT `user_id_fk_contactgroups` FOREIGN KEY (`user_id`)
  REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE,
  INDEX `contactgroups_user_index` (`user_id`,`del`)
);
 
CREATE TABLE `contactgroupmembers` (
  `contactgroup_id` int(10) UNSIGNED NOT NULL,
  `contact_id` int(10) UNSIGNED NOT NULL DEFAULT ’0′,
  `created` datetime NOT NULL DEFAULT ’1000-01-01 00:00:00′,
  PRIMARY KEY (`contactgroup_id`, `contact_id`),
  CONSTRAINT `contactgroup_id_fk_contactgroups` FOREIGN KEY (`contactgroup_id`)
  REFERENCES `contactgroups`(`contactgroup_id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `contact_id_fk_contacts` FOREIGN KEY (`contact_id`)
  REFERENCES `contacts`(`contact_id`) ON DELETE CASCADE ON UPDATE CASCADE
);
 
quit

The next step is a lot simpler. Point your browser to http://yourhostname/roundcubemail-0.4/installer/ and follow the instructions, just like you did when you initially installed roundcubemail.

In step 2 make sure you enter all the information as you did for the previous install of roundcubemail. Perhaps you had:

Database setup:
localhost
roundcubemail
roundcube
PASSWORD (or whatever you have it set too)
 
IMAP Settings:
ssl://localhost:993

If the installer was unable to create the config files you need to copy the contents located in the browser in the files db.inc.php and main.inc.php located in the directory config

If you have tested the setup and it works please remove the installer directory from the roundcube installation. It might be used by others to hack your installation.

For errors you could check the logfiles to explain what went wrong. For Roundcube errors check the /logs/errors file and for general mail errors check the /var/log/mail.log file.

Lastly, after you have checked that your new install is working properly, We need to change the symbolic link from our old installation to the new one. Then you can remove the previous version of roundcubemail from your webserver with:

sudo rm /Library/WebServer/Documents/roundcubemail
sudo ln -s /Library/WebServer/Documents/roundcubemail-0.4 /Library/WebServer/Documents/roundcubemail

1 comment

This is very hard for me as it feels I’m failing, but I have to acknowledge that I don’t have enough spare time to do all the stuff I want to do with this site. My little girl is growing up and she needs time with her dad and next to that my new day job is really great but requires more of my time then my previous job.

There is too much on the todo list, there are items on there longer then a year, and it only keeps growing. Even keeping up with all the developments in the existing setup is hard. I’ve got a lot of ideas of how to expand the site with more information like how to install iCal or AddressBook server.

So I’m looking for people who are willing to help to do research, write documentation and test installation guides. Qualifications are simple:

  • you know your way around the terminal
  • you are not afraid to compile stuff
  • you know how to find answers to your questions
  • you are able to write complex instructions in a simple understandable manner
  • you are willing to help other people getting things done

What I have to offer is my eternal gratitude (and you’ll receive it from other people as well) and respect.

If you are interested let me know, by commenting on the blog or sending me an email.

PS. Don’t worry, I won’t stop with the site it’s too important for me but I want to keep up the quality and really make it work for you.

3 comments

Again a new version of Dovecot is released. As far as I can tell it’s just a bug fix release (mostly concerning ACL’s) and not a security fix. I think that if you are not affected then you are not required to upgrade and can skip this one. But sometimes it’s better to be safe then sorry.

Now I’ve got my production server running Dovecot (finally) and can tell you that it really rocks and I performed the upgrade without any problem. Just configure, compile and install as per instructions and then kill the current running dovecot process. The new version should start automatically.

Just an small remark, just saw in my WordPress dashboard before posting this, that I’ve passed the 200 blogposts on this blog. That is excluding the 134 pages (the actual documentation) and the 920 comments (which I tend to prune every now and then to keep them relevant).

no comments

For everyone who is using to a 5.1.x version. This is a bug fix release and it is up to you if you want to upgrade. Check all the fixes and changes that are listed on the release notes to see what issues are resolved and if you are affected. Most of them are about replication which we don’t use in our setup. If you are still using a 5.0.x version I would urge you to plan a upgrade to a 5.1.x version.

I’ve compiled this version and did some simple tests on my servers and it worked without any problems.

Read the documentation on how to ugrade MySQL.

no comments

The PHP development team released a new version of the 5.3.x release. Before you upgrade to a 5.3.x release on a production machine, please check if all PHP based apps are supporting 5.3.x as there are some compatibility problems and you might get some strange results. This release focuses on improving the stability of the PHP 5.3.x branch with over 100 bug fixes, some of which are security related. This version introduces a new incompatible change with older versions of 5.3.x which affect the use of namespaces.

During compilations tests I’ve discovered some problems which made it impossible to use it with the mysqli module. The error you would get is:

In file included from /Users/richard/php-5.3.3/ext/mysqli/php_mysqli_structs.h:57,
from /Users/richard/php-5.3.3/ext/mysqli/mysqli.c:33:
/usr/local/mysql/include/mysql/my_global.h:1008: error: duplicate ‘unsigned’
/usr/local/mysql/include/mysql/my_global.h:1008: warning: useless type name in empty declaration
make: *** [ext/mysqli/mysqli.lo] Error 1

I’d twittered about it and got a prompt response from Rasmus Lerdorf with a patch which resolves the problem. if you apply the patch before compiling everything will be fine. I would expect that the people at PHP will release an update within a few days.

The problems, bugs and security enhancements which were introduced in 5.3.3 you can read about them in the ChangeLog.

For instructions on how to upgrade PHP please read: Upgrading PHP.

3 comments

The PHP development team have released PHP 5.2.14. This release focuses on improving the stability of the PHP 5.2.x branch with over 60 bug fixes, some of which are security related. All users of the PHP 5.2.x branch are encouraged to upgrade to this release. I’ve tested this on my test servers and it works without a problem. The biggest security enhancements and fixes in PHP 5.2.14 are:

Security Enhancements and Fixes in PHP 5.2.14:

  • Rewrote var_export() to use smart_str rather than output buffering, prevents data disclosure if a fatal error occurs.
  • Fixed a possible interruption array leak in strrchr().(CVE-2010-2484)
  • Fixed a possible interruption array leak in strchr(), strstr(), substr(), chunk_split(), strtok(), addcslashes(), str_repeat(), trim().
  • Fixed a possible memory corruption in substr_replace().
  • Fixed SplObjectStorage unserialization problems (CVE-2010-2225).
  • Fixed a possible stack exaustion inside fnmatch().
  • Fixed a NULL pointer dereference when processing invalid XML-RPC requests (Fixes CVE-2010-0397, bug #51288).
  • Fixed handling of session variable serialization on certain prefix characters.
  • Fixed a possible arbitrary memory access inside sqlite extension. Reported by Mateusz Kocielski.

Key enhancements in PHP 5.2.14 include:

  • Upgraded bundled PCRE to version 8.02.
  • Updated timezone database to version 2010.5.
  • Fixed bug #52238 (Crash when an Exception occured in iterator_to_array).
  • Fixed bug #52237 (Crash when passing the reference of the property of a non-object).
  • Fixed bug #52041 (Memory leak when writing on uninitialized variable returned from function).
  • Fixed bug #51822 (Segfault with strange __destruct() for static class variables).
  • Fixed bug #51552 (debug_backtrace() causes segmentation fault and/or memory issues).
  • Fixed bug #49267 (Linking fails for iconv on MacOS: “Undefined symbols: _libiconv”).

For a full list of changes in PHP 5.2.14 see the ChangeLog.

For instructions on how to upgrade PHP please read: Upgrading PHP.

no comments

Next Page »