Rouncube est un webmail en ajax qui a une p'tite bouille fort sympatique comme vous pouvez le voir sur ces screenhots.
L'installation sera effectuée sur une debian stable (lenny a l'heure ou ce tutorial est écrit) disposant d'un serveur web apache2 gérant le php et assumant que vous avez un serveur mysql installé et fonctionnel.
la derniere version peut etre trouvée ici : http://roundcube.net/download, prendre la version “GPL (dependent)” car nous allons installer les dependances nous meme.
apt-get install openssl aspell-fr php5-gd php5-mcrypt php5-mcrypt php5-dev libmagic-dev php5-mysql # et les librairies PHP PEAR (disponibles sous forme de paquets debian) : apt-get install php-auth php-net-smtp php-net-socket php-mail-mime libmagic1 php5-pspell libjs-jquery # la librairie PECL fileinfo pecl install Fileinfo
Certaines librairies PEAR ne sont pas disponible dans les depots debian officiels, mais ils le sont dans les depots backports : nous allons donc utiliser ces versions :
cd /tmp wget http://www.backports.org/debian/pool/main/p/php-mdb2/php-mdb2_2.5.0b2-1~bpo50+1_all.deb wget http://www.backports.org/debian/pool/main/p/php-mdb2-driver-mysql/php-mdb2-driver-mysql_1.5.0b2-1~bpo50+1_all.deb dpkg -i php-mdb2_2.5.0b2-1~bpo50+1_all.deb dpkg -i php-mdb2-driver-mysql_1.5.0b2-1~bpo50+1_all.deb
Ajouter dans les fichiers /etc/php5/cli/php.ini et /etc/php5/apache2/php.ini :
extension=fileinfo.so
Un (re)démarrage de apache est nécessaire pour prendre ces changements en compte :
/etc/init.d/apache2 restart
cd /var/www tar xvzf roundcubemail-0.3.1-dep.tar.gz chown -R root:root roundcubemail-0.3.1-dep ln -s roundcubemail-0.3.1-dep webmail.mondomaine.com
Créer un fichier /etc/apache2/sites-available/webmail.mondomaine.com contenant :
####################################### # VirtualHost pour le webmail # ####################################### <VirtualHost *:443> ServerName webmail.mondomaine.com DocumentRoot /var/www/webmail.mondomaine.com SSLEngine on # SSLCertificateFile directive is needed. SSLCertificateFile /etc/ssl/certs/mondomaine.com.crt SSLCertificateKeyFile /etc/ssl/private/server.key BrowserMatch ".*MSIE.*" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 ErrorLog /var/log/apache2/webmail_mondomaine_com_error.log CustomLog /var/log/apache2/webmail_mondomaine_com_access.log combined <Directory /var/www/webmailmondomaine.com> Options -Indexes Includes FollowSymLinks AllowOverride ALL order allow,deny allow from all # pour les pieces joints un peu volumineuses php_value memory_limit "25M" php_value file_uploads "10M" php_value date.timezone "Europe/Paris" </Directory> ServerSignature off </Virtualhost> <VirtualHost *:80> ServerName webmail.mondomaine.com # redirection en https si disponible : c'est sensé etre le cas ;-) <IfModule mod_rewrite.c> <IfModule mod_ssl.c> <Location /> RewriteEngine on RewriteCond %{HTTPS} !^on$ [NC] RewriteRule . https://%{HTTP_HOST}%{REQUEST_URI} [L] </Location> </IfModule> </IfModule> DocumentRoot /var/www/webmail.mondomaine.com ErrorLog /var/log/apache2/webmail_mondomaine_com_error.log CustomLog /var/log/apache2/webmail_mondomaine_com_access.log combined ServerSignature off </Virtualhost>
mkdir /etc/roundcube cp /var/www/webmail.mondomaine.com/config/* /etc/roundcube/ mv /var/www/webmail.mondomaine.com/config /var/www/webmail.mondomaine.com/config.orig chmod go-rwx /var/www/webmail.mondomaine.com/config.orig ln -s /etc/roundcube/ /var/www/webmail.mondomaine.com/config
chown root:www-data /etc/roundcube/db.inc.php chmod 644 /etc/roundcube/db.inc.php
$rcmail_config['db_dsnw'] = 'mysql://roundcube:password@localhost/roundcubemail';
qu'il faut adapter : dans ce cas, il s'agit d'un serveur mysql sur la meme machine, un utilisateur nommé “roundcube” utilisant le mot de passe “password” pour accéder a la base de données “roundcubemail”
$rcmail_config['enable_installer'] = true;
chown root:www-data temp/ logs/ chmod g+rwx temp/ logs/
mysql -u root -p > create database roundcubemail; > GRANT ALL PRIVILEGES ON roundcubemail.* TO roundcube@localhost IDENTIFIED BY 'password'; > FLUSH PRIVILEGES; > quit
mysql -u roundcube -p roundcubemail < /var/www/webmail.mondomaine.com/SQL/mysql.initial.sql
a2ensite webmail.mondomaine.com /etc/init.d/apache2 restart
$rcmail_config['enable_installer'] = false;
chmod go-rwx /var/www/webmail.mondomaine.com/installer/
$rcmail_config['default_host'] = 'localhost';
Et voila : maintenant vous devriez avoir un superbe webmail accessible via https://webmail.mondomaine.com
Pas mal de temps a passé depuis cette installation initiale, et la version 0.5.1 de roundcube est maintenant disponible. Entre temps la version stable de debian est passée de lenny a squeeze, le serveur ayant été mis a jour en squeeze, cette mise a jour de roundcube va être effectuée sur cette version
Les notes de mises a jour sont disponibles ici, voici les commandes que j'ai utilisé :
cd /var/www/ wget http://sourceforge.net/projects/roundcubemail/files/roundcubemail-dependent/0.5.1/roundcubemail-0.5.1-dep.tar.gz/download -O roundcubemail-0.5.1-dep.tar.gz tar xvzf roundcubemail-0.5.1-dep.tar.gz
chown root:root -R roundcubemail-0.5.1-dep cd roundcubemail-0.5.1-dep chgrp www-data logs/ temp/ && chmod g+w logs/ temp/
Il est conseillé d'installer cette dépendance pour l'internationalisation :
apt-get install php5-intl
Il faut ensuite recharger la configuration d'apache :
/etc/init.d/apache2 reload
cd /var/www/roundcubemail-0.5.1-dep mv config/ config.ORIG ln -s /etc/roundcube config
Reporter les nouvelles options de configuration dans les anciens fichiers entre les versions 0.3.1 et la 0.5.1
$rcmail_config['db_table_contactgroups'] = 'contactgroups'; $rcmail_config['db_table_contactgroupmembers'] = 'contactgroupmembers';
'pdf' => 'application/pdf', 'ics' => 'text/calendar',
lancer les commandes situées apres la balise :
-- Updates from version 0.3.1
Voici la liste complete :
SET FOREIGN_KEY_CHECKS=0; 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`) ) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */; 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 ) /*!40000 ENGINE=INNODB */; SET FOREIGN_KEY_CHECKS=1 ; ALTER TABLE `users` CHANGE `last_login` `last_login` datetime DEFAULT NULL; UPDATE `users` SET `last_login` = NULL WHERE `last_login` = '1000-01-01 00:00:00'; ALTER TABLE `users` DROP INDEX `username_index`; ALTER TABLE `users` ADD UNIQUE `username` (`username`, `mail_host`); ALTER TABLE `contacts` MODIFY `email` varchar(255) NOT NULL; TRUNCATE TABLE `messages`;
installation des dépendances :
# apt-get install php5-gd php5-intl php5-mcrypt php5-pspell libmagic1
installation des modules PEAR nécessaires :
# apt-get install php-auth php-mdb2 php-mdb2-driver-mysql php-mail-mime php-net-smtp php-net-socket