Table des matières
Installation du webmail roundcube
Rouncube est un webmail en ajax qui a une p'tite bouille fort sympatique comme vous pouvez le voir sur ces screenhots.
Prérequis
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.
Téléchargement de roundcube
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.
Installation des logiciels requis
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
Installation
decompression de l'archive
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
configuration du vhost apache
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>
Paramétrage
- Nous allons paramétrer roundcube en utilisant les standards debian : la configuration se fait dans /etc/roundcube.
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
- Renommer les fichiers /etc/roundcube/db.inc.php.dist , /etc/roundcube/main.inc.php.dist respectivement en /etc/roundcube/db.inc.php et /etc/roundcube/main.inc.php
- protéger le fichier /etc/roundcube/db.inc.php :
chown root:www-data /etc/roundcube/db.inc.php chmod 644 /etc/roundcube/db.inc.php
- La seule ligne qui nous intéresse dans le fichier db.inc.php est :
$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”
- fichier /etc/roundcube/main.inc.php : mettre le temps de l'installation :
$rcmail_config['enable_installer'] = true;
- Reglage des permissions sur les repertoires (en accord avec le fichier de configuration “main.inc.php”) :
chown root:www-data temp/ logs/ chmod g+rwx temp/ logs/
base de donnée MySQL
- Création de la base de données :
mysql -u root -p > create database roundcubemail; > GRANT ALL PRIVILEGES ON roundcubemail.* TO roundcube@localhost IDENTIFIED BY 'password'; > FLUSH PRIVILEGES; > quit
- Population de la base de données :
mysql -u roundcube -p roundcubemail < /var/www/webmail.mondomaine.com/SQL/mysql.initial.sql
Finalisation de l'installation
- activer le site :
a2ensite webmail.mondomaine.com /etc/init.d/apache2 restart
- Aller sur https://webmail.mondomaine.com/installer/
Il ne devrait pas y avoir de “NOT OK” vous empechant d'accéder a l'etape 2 qui va créer effectivement la configuration. - Vous pouvez ensuite vérfifier a l'étape 3 que vous pouvez :
- envoyer un email depuis roundcube
- vous connecter sur votre serveur imap
- editer le fichier /etc/roundcube/main.inc.php pour remettre
$rcmail_config['enable_installer'] = false;
- exécutez la commande suivante pour interdi l'acces aux répertoires :
chmod go-rwx /var/www/webmail.mondomaine.com/installer/
- Editer le fichier /etc/roundcube/main.inc.php pour déclarer votre serveur IMAP, dans notre cas localhost :
$rcmail_config['default_host'] = 'localhost';
Enjoy
Et voila : maintenant vous devriez avoir un superbe webmail accessible via https://webmail.mondomaine.com
Mise à jour du webmail roundcube
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é :
Recupération et décompression de l'archive
- récupérer les sources (la encore les dépendances seront installées/mises a jour à la main : on choisit donc la version téléchargeable sans dépendances)
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
- réparer les permissions (ou www-data est le groupe de l'utilisateur faisant tourner votre serveur web)
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/
Installation des nouvelles dépendances
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
Configuration
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
- ces lignes ont été ajoutées dans le fichier db.inc.php :
$rcmail_config['db_table_contactgroups'] = 'contactgroups'; $rcmail_config['db_table_contactgroupmembers'] = 'contactgroupmembers';
- pour le fichier main.inc.php vimdiff est votre ami (trop de modifications pour tout reporter ici ;p)
- ces lignes ont été ajoutées dans le fichier mimetypes.php :
'pdf' => 'application/pdf', 'ics' => 'text/calendar',
Upgrade de la base de donnée
- Ouvrir un shell mysql sur la base roundcube.
- Lancer les requetes contenues dans le fichier /var/www/roundcubemail-0.5.1-dep/SQL/mysql.update.sql correspondantes a l'upgrade en cours. Il faut donc ici (mise a jour 0.3.1 → 0.5.1)
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 logiciels requis sous debian squeeze
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