Installation et configuration de Roundcube sur Debian

Joli non ?

C’est un billet un peu « vu et revu » que je vous propose ce soir, mais je note le processus pour mes propres besoins. Je réalise des tests actuellement avant mise en production donc je note tout ça ici.

Roundcube est un client mail écrit en PHP vraiment très joli que je me tâte à installer depuis quelques temps. Et comme je compte vous parler auto-hébergement de calendriers très bientôt, il me fallait un client web pour gérer mes calendriers et mes contacts au cas où je ne dispose pas de ma machine personnelle. J’utilise déjà Roundcube puisque cette solution est proposée par OVH pour son Webmail et elle est vraiment très complète. D’autant plus que son catalogue de plugins est particulièrement étoffé et devrait répondre à tous nos besoins !

C’est parti !

EDIT du 13/01/2014 : mise à jour des vhosts Apache.

Par contre ça risque d’être un peu abrégé, j’ai pas envie de rentrer dans les détails pour une fois. En cas de problème, je me ferai une joie de répondre à vos commentaires.

Installation de Roundcube

On récupère les sources sur la page de téléchargement du webmail. Je décompresse l’archive dans le dossier réservé aux services web.

sudo wget http://sourceforge.net/projects/roundcubemail/files/roundcubemail/0.9.5/roundcubemail-0.9.5.tar.gz/download
sudo tar -zxf roundcubemail-0.9.5.tar.gz
sudo chown -hR www-data: roundcubemail-0.9.5 && sudo chmod -R 775 roundcubemail-0.9.5

Préparation du VirtualHost

Voici le modèle de virtual host Apache que j’utilise pour démarrer. Roundcube est accessible à l’adresse roundcube.guillaume-leduc.fr.

<VirtualHost *:80>
        ServerName      roundcube.guillaume-leduc.fr
        ServerAdmin     admin@guillaume-leduc.fr
        DocumentRoot    /var/www/roundcube-0.9.5
 
        <Directory /var/www/webmail.guillaume-leduc.fr>
                AllowOverride All
                Order Allow,Deny
                Allow from All
        </Directory>
</VirtualHost>

Activez le site et redémarrez Apache :

sudo a2ensite roundcube.conf
sudo service apache reload

Préparation de la base de données

Roundcube nécessite une base de données. Je suis sur MariaDB mais ce qui suit est valide pour MySQL. Créez une base de donnée dédiée à Roundcube avec PHPMyAdmin ou utilisez les commandes MySQL suivantes :

CREATE DATABASE roundcube;
GRANT ALL PRIVILEGES ON roundcube.* TO roundcube@localhost IDENTIFIED BY "password";
FLUSH PRIVILEGES; 
quit

Configuration de Roundcube

Maintenant que les sources sont déployées, nous allons pouvoir passer à la configuration. Naviguez jusqu’à la page roundcube.guillaume-leduc.fr/installer pour utiliser l’assistant de configuration Roundcube.

La première étape n’est autre qu’une vérification des pré-requis…

Roundcube installation pre-requis

Cliquez sur « NEXT », une longue page de configuration vous attend !

Rassurez-vous, vous pourrez à tout moment modifier votre configuration en éditant le fichier roundcube-0.9.5/config/main.inc.php.

Rassurez-vous, vous pourrez à tout moment modifier votre configuration en éditant le fichier roundcube-0.9.5/config/main.inc.php.

Vos fichiers de configuration sont ensuite générés. Il vous est demandé de copier / coller leur contenu à la main… Pourquoi pas…

Enfin dernière étape, réalisation de quelques tests.

Roundcube installation test

Si tous vos tests ont été passés avec succès, vous êtes bons pour passer à l’étape suivante : votre première connexion ! Rendez-vous sur l’adresse de votre vhost pour vous connecter 🙂

Joli non ?

Joli non ?

Bonus : sécurisez votre installation de roundcube

Nous allons apporter quelques modifications à notre installation pour pouvoir l’utiliser en toute sécurité. On est quand même sur de la manipulation d’emails, il ne faut donc pas faire n’importe quoi ! Vous allez voir que la plupart de ces modifications sont apportées à notre vhost Apache…

Première étape : sécurisation des dossiers systèmes

Et oui, nous avons simplement besoin d’accéder au répertoire racine depuis le web, mais qu’en est-il des autres répertoires comme config, temp ou logs ? On peut aussi désactiver la fonction d’index d’Apache, qui permet de lister le contenu d’un dossier. Apache nous affichera alors une page blanche.

Vous pouvez ajouter les lignes suivantes à votre vhost (remplacez bien entendu /var/www/html/rouncube en fonction de votre installation !) :

<Directory /var/www/html/roundcube>
  Options -Indexes
  AllowOverride All
</Directory>
 
<LocationMatch "/(config|temp|logs)/">
  Order Deny,Allow
  Deny from All
</LocationMatch>

Forcer l’utilisation de HTTPS

Chiffrez absolument toutes vos communications. Vos mails sont VOTRE VIE PRIVÉE !

Si vous ne disposez pas déjà d’un certificat Apache générez-en un : EDIT : vous pouvez aussi utilisez la méthode décrite ici).

cd /tmp
openssl genrsa -des3 -out roundcube.key 2048
openssl req -new -key roundcube.key -out roundcube.csr
cp roundcube.key roundcube.key.org
openssl rsa -in roundcube.key.org -out roundcube.key
openssl x509 -req -days 365 -in roundcube.csr -signkey roundcube.key -out roundcube.crt
mkdir /etc/apache2/certificates
cp roundcube.crt roundcube.key /etc/apache2/certificates

Et éditez votre vhost pour forcer le tout HTTPS. Voici à quoi il devrait ressembler :

<VirtualHost *:80>
	ServerName 	roundcube.guillaume-leduc.fr
	ServerAdmin 	admin@guillaume-leduc.fr
	DocumentRoot	/var/www/roundcube.guillaume-leduc.fr
 
	RewriteEngine	On
	RewriteCond	%{HTTPS} !=on
	RewriteRule	^(.*)$ https://%{SERVER_NAME}$1 [L,R=301]
 
        CustomLog ${APACHE_LOG_DIR}/roundcube-access.log "combined"
        ErrorLog ${APACHE_LOG_DIR}/roundcube-error.log
</VirtualHost>
 
<IfModule mod_ssl.c>
  <VirtualHost *:443>
        ServerName      roundcube.guillaume-leduc.fr
        ServerAdmin     admin@guillaume-leduc.fr
        DocumentRoot    /var/www/roundcube.guillaume-leduc.fr
 
	SSLEngine On
        SSLCertificateFile      /etc/apache2/certificates/roundcube.crt
        SSLCertificateKeyFile   /etc/apache2/certificates/roundcube.key
        SSLProtocol             all -SSLv2 -SSLv3
        SSLHonorCipherOrder     On
        SSLCipherSuite          ECDHE-RSA-AES128-SHA256:AES128-GCM-SHA256:HIGH:!MD5:!aNULL:!EDH:!RC4
        SSLCompression          Off
 
        <Directory /var/www/roundcube.guillaume-leduc.fr>
                Options -Indexes
                AllowOverride All
 
                Order Allow,Deny
                Allow from All
        </Directory>
 
        <LocationMatch "/(config|temp|logs)/">
          Order Deny,Allow
          Deny from All
        </LocationMatch>
 
	CustomLog ${APACHE_LOG_DIR}/roundcube-access.log "combined"
	ErrorLog ${APACHE_LOG_DIR}/roundcube-error.log	
  </VirtualHost>
</IfModule>

Alors évidemment c’est pas LE modèle parfait mais je pense que c’est une bonne base. On force l’utilisation d’un haut niveau de chiffrement donc à n’utiliser qu’avec des navigateurs récents.

Voilà, d’autres astuces viendront peut-être plus tard car je pense qu’il reste à faire. Je vais aller fouiller du côté des différents plugins pour voir ce que ça donne et je ferai sûrement une mise à jour de cet article.

À très vite 🙂

Cet article vous a plu ? Partagez-le sur les réseaux sociaux !

Twitter Facebook Google Plus email