Roundcube

De ClissXXI.

Cette page rassemble quelques informations sur l'installation de Roundcube, un webmail simple à l'interface moderne et soignée. Certains détails donnés sont spécifiques à une installation sous Debian GNU/Linux, mais la plupart des informations sont valables sur tout système GNU/Linux.

Sommaire

[modifier] Téléchargement

Roundcube est disponible sur le site http://www.roundcube.net/.

Comme toute application web, il est très important de la maintenir bien à jour et d'installer les nouvelles version qui corrigent des failles de sécurité. Vous serez averti de l'arrivé d'une nouvelle version en suivant le flux RSS http://sourceforge.net/export/rss2_projnews.php?group_id=139281

[modifier] Installation

Commencez par désarchiver l'application (je modifie aussi le propriétaire des droits qui sont différents dans le tar):

tar xvzf roundcubemail-0.X.Y.tar.gz
chown -R root: roundcubemail-0.X.Y

Pour les instructions d'installation, reférez-vous au fichier INSTALL fourni dans le répertoire Roundcube. Vous trouverez aussi un bon guide d'installation (en anglais) à cette adresse http://trac.roundcube.net/wiki/Howto_Install

[modifier] Prérequis

Roundcube a besoin des modules PHP suivants:

  • fileinfo : sous Squeeze, ce module est intégré à PHP (donc pas besoin de paquet supplémentaire). Sous Lenny, aucun paquet ne le fournit, mais on pourra en créer un à l'aide du paquet dh-make-php.
  • intl : fourni sous Squeeze par le paquet php5-intl (il est optionel et utile uniquement pour les fonctions d'internationalisation)
  • mcrypt : fourni par le paquet php5-mcrypt. (module optionnel)
  • modules PEAR nécesaires (une version est fournie avec Roundcube s'ils ne sont pas installé sur le système; vous n'êtes donc pas obligés des les installer):
    • MDB : paquet php-mdb2. Vous aurez aussi besoni des paquets dépendant de votre système de base de données :php-mdb2-driver-pgsql ou php-mdb2-driver-mysql.
    • Mail_Mime : paquet php-mail-mime
    • Net_Smtp : paquet php-net-smtp

Les modules apache suivant doivent être activés si vous souhaitez profiter de la compression et de la mise en cache de certaines pages: mod_deflate, mod_expires, et mod_headers. Sous debian, vous pouvez les activer en exécutant les commandes suivantes:

a2enmod deflate
a2enmod expires
a2enmod headers
/etc/init.d/apache2 reload

D'autres prérequis sont précisés dans le fichier INSTALL fourni par Roundcube, notamment la configuration PHP suivante:

  • error_reporting E_ALL & ~E_NOTICE (ou moins)
  • memory_limit > 16MB (augmenter si nécessaire pour le support de grosses pièces jointes)
  • file_uploads enabled (pour l'upload des pièces jointes)
  • session.auto_start disabled
  • zend.ze1_compatibility_mode disabled
  • suhosin.session.encrypt disabled
  • mbstring.func_overload disabled

[modifier] Configuration PHP

La configuration PHP est réalisée via les directives du fichier .htaccess fourni dans le répertoire de roundcube.

Si vous utilisez Apache 2.2.9 ou supérieur, il est conseillé de changer le fichier .htaccess: décommentez la ligne suivante et modifiez le mot « append » en « merge » pour éviter certains de ducplication d'en-tête HTTP (si vous ne le faites pas, ça n'a pas de grosse conséquence):

#Header append Cache-Control public env=!NO_CACHE

devient donc:

Header merge Cache-Control public env=!NO_CACHE

[modifier] Droits des répertoires

Il faut s'assurer que les répertoires temp/ et logs/ sont modifiables par l'utilisateur système utilisé par le serveur web. La façon de permettre cela dépend de votre configuration, mais sous Debian, cela signifie généralement que l'utilisateur www-data doit avoir les droits d'écrire dans ces répertoires, donc il faut par exemple utiliser les commandes:

chgrp www-data {temp,logs}; chmod g+w {temp,logs}

[modifier] Création de la base de données

On utilise dans notre cas un serveur MySQL. Connectez-vous sous un utilisateur administrateur (généralement root), et effectuez les requêtes indiqués dans le guide d'installation :

CREATE DATABASE roundcubemail /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
GRANT ALL PRIVILEGES ON roundcubemail.* TO roundcube@localhost IDENTIFIED BY 'votremotdepasse';

Importer ensuite les données initiales manuellement, par exemple avec la commande suivante (ajoutez l'option -p):

mysql roundcubemail < SQL/mysql.initial.sql

[modifier] Configuration de l'application

L'installation continue en se rendant à l'URL http://url-vers-votre-installation-roundcube/installer/ où il suffit de suivre les instructions.

Le script d'installation indiquera une heure incorrecte. Pour corriger cela, on peut changer le fuseau horaire utilisé par PHP. Dans notre cas, il pourra le configurer à l'heure de la France avec la commande suivante:

cat <<_EOD_ > /etc/php5/apache2/conf.d/local.ini
date.timezone = "Europe/Paris"
_EOD_
/etc/init.d/apache2 restart

La documentation recommande d'exécuter le script « bin/cleandb.sh » périodiquement pour supprimer tous les enregistrements marqués comme effacés. Pour cela, mettez en place un job cron. J'ai l'habitude, par souci de lisibilité, de regrouper tous les jobs cron que je mets en place sur un serveur dans un même fichier /etc/cron.d/local. Pour ajouter le nouveau job (qui s'exécutera à 1h02 tous les jours), je peux donc utiliser la commande suivante (pensez à adapter le chemin votre votre répertoire d'installation de roundcube):

echo -e '\n# Nettoyage roundcube\n2 1 * * *   root    /var/www/roundcube/bin/cleandb.sh' >> /etc/cron.d/local

[modifier] Sécurisation miimale après installation

Après configuration, n'oubliez pas de supprimer le répertoire installer/ sous peine de laisser l'accès à des mots de passe (et/ou désactivez l'option « enable_installer» dans main.inc.php).

De même, assurez-vous que l'accès aux répertoires config/, temp/, et logs/ est bien interdit (ceci est normalement pris en charge par les directives apache dans les fichiers .htaccess de ces répertoires).

[modifier] Mise à jour

En ce qui concerne la mise à jour, le fichier UPGRADING fourni par Roundcube propose de remplacer les fichiers dans la plupart des répertoires de votre installation, puis de lancer la mise à jour.

Personnellement, je préfère recopier les fichiers nécessaires vers un nouveau répertoire d'installation pour mieux maîtriser les fichiers que je modifie par rapport aux fichiers fournis par l'application.

Voici donc la procédure de mise à jour que je suis (il s'agit bien sûr d'un exemple de mise à jour de la version 0.5.2 à la 0.5.4. Adaptez les numéros de version à votre cas):

  • 1. Désarchivage de l'application dans un nouveau répertoire
tar xvzf roundcubemail-0.5.4.tar.gz
chown -R root: roundcubemail-0.5.4
chgrp www-data roundcubemail-0.5.4/{temp,logs}
chmod g+w roundcubemail-0.5.4/{temp,logs}
  • 2. Copie des fichiers de configuration (les seules fichiers qui ont été modifiés dans mon cas. Si vous avez un thème particulier, vous voudrez probablement aussi le recopier):
cp roundcubemail-0.5.2/config/{db.inc.php,main.inc.php} roundcubemail-0.5.4/config/
  • 3. Lancement de la procédure de mise à jour
    • soit par le web. Dans ce cas il faut modifier le fichier config/main.inc.php pour passer la variable enable_installer à true, puis rendez-vous sur http://url-vers-votre-installation-roundcube/installer/.
    • ou bien en ligne de commande, auquel cas il suffit de lancer la commande:
./roundcubemail-0.5.4/bin/update.sh
  • 4. Mise à jour de la base de données. Cette étape n'est nécessaire que si le script ou la page de mise à jour ci-dessus vous l'a suggéré:
./SQL/[votretypedebdd].update.sql
  • 5. Sécurisation: remettre enable_installer à false dans config/main.inc.php si vous l'avez modifié
  • 6. Évolution de la configuration PHP: vérifier éventuellement les directives dans .htaccess qui peuvent avoir évolué.

Votre installation Roundcube est à jour. Connectez-vous pour vérifiez que tout fonctionne bien.