Solution de serveur de courrier électronique auto-hébergé (partie 6) : Installation de roundcube🔗

Posted by Médéric Ribreux 🗓 In blog/ Debian/

#debian #auto-hébergement #email

Introduction

Toujours dans ma série d'articles sur le courrier électronique, nous allons maintenant voir une partie émergée de l'iceberg: le webmail. Je sais, c'est à la mode en ce moment (et depuis quelques années déjà): pour l'utilisateur lambda, envoyer un email passe le plus souvent par le web. Si l'idée n'est pas stupide au départ, on voit qu'elle a pris une grande part des habitudes des utilisateurs. Ceci n'est pas sans conséquence sur les flux sur Internet et également sur leur vie privée. En effet, en règle générale, un service de webmail est proposé par différentes sociétés, souvent gratuitement.

L'ennui c'est que souvent, ces sociétés vont jusqu'à lire votre correspondance privée et ceci à des fins non techniques. Par exemple, les comptes GMail sont lus (par des programmes certes) pour mieux vous cibler afin de vous envoyer un tas de publicités (j'ajoute "à la con" même si c'est un pléonasme). Dans le monde réel, LaPoste n'ouvre pas vos lettres sauf en cas de problème technique ! Si votre employeur se met à lire vos emails non professionnels reçus sur votre boîte professionnelle, il viole le secret de la correspondance privée et est passible de poursuites ! Mais, dans le cas des fournisseurs de webmail que je cite plus haut, la règle n'est pas la même: les utilisateurs vendent le contenu de leur vie privée contre un hébergement.

Néanmoins Madame Michu se doute bien qu'héberger un service de courrier électronique, c'est compliqué et qu'il faut bien que ces entreprises se rémunèrent… Ce n'est pas tout à fait faux mais à quel prix ! Pour ma part, l'aspect technique ne me fait pas peur et cette série d'articles représente mon effort pour régler ce problème: se passer de GMail ! Et on va voir que mettre en place un webmail, après avoir configuré un vrai serveur SMTP, c'est hyper-simple…

Installation

Roundcube est packagé pour Debian. C'est un paquet qui semble assez bien maintenu, car la version 0.5 a été backportée pour Squeeze. Pour pouvoir en profiter, vous devez avoir configuré le dépôt de rétroportage officiel de Debian en ajoutant la ligne suivante dans votre fichier /etc/apt/sources.list:

# Dépôt Backport officiel:
deb http://backports.debian.org/debian-backports squeeze-backports main

Ensuite, un simple

aptitude update && aptitude -t squeeze-backports install roundcube

vous permettra d'installer la bête. Attention, roundcube est développé en PHP et il repose sur quelques autres paquets. Compter environ 40Mo d'occupé pour un serveur web sans PHP5 déjà installé. Sur une machine comme un SheevaPlug, ce n'est pas rien ! Cette taille (plus le fait qu'il faille PHP) m'a fait longuement hésité avant d'installer roundcube. Mais comme ce logiciel semble être un poil au dessus des autres, j'ai cédé pour voir…

De plus, roundcube a besoin d'une base de données. C'est aussi un truc qui me dépasse, surtout pour mes besoins (qui sont quasi mono-utilisateur): avoir besoin d'un SGBD pour gérer des fichiers en Maildir… Mais bon, pas le choix !

L'installation vous demande si vous désirez configurer roundcube avec dbconfig-common. Pour ma part, j'ai répondu oui à cette question et j'ai choisi une base de données en SQLite, quand même moins lourde que MySQL ou PostgreSQL ! L'intérêt de dbconfig-common est qu'il créé la base de données avec le bon schéma pour vous.

Configuration

Une fois le paquet installé, il faut le configurer. Pour ma part, voici mes exigences:

En termes de fichiers, voici comment roundcube est configuré:

En ce qui concerne l'accès par Apache, voici une rapide configuration (à adapter à votre installation spécifique) à base d'alias que j'ai ajouté à ma configuration de site web SSL (et non à celui par défaut):

# Installation de Roundcube:
Alias /email/program/js/tiny_mce/ /usr/share/tinymce/www/
Alias /email /var/lib/roundcube

# Access to tinymce files
<Directory "/usr/share/tinymce/www/">
  Options Indexes MultiViews FollowSymLinks
  AllowOverride None
  Order allow,deny
  Allow from all
</Directory>

<Directory /var/lib/roundcube/>
  Options +FollowSymLinks
  # This is needed to parse /var/lib/roundcube/.htaccess. See its
  # content before setting AllowOverride to None.
  AllowOverride All
  Order allow,deny
  Allow from all
</Directory>

# Protecting basic directories:
<Directory /var/lib/roundcube/config>
  Options -FollowSymLinks
  AllowOverride None
</Directory>

<Directory /var/lib/roundcube/temp>
  Options -FollowSymLinks
  AllowOverride None
  Order allow,deny
  Deny from all
</Directory>

<Directory /var/lib/roundcube/logs>
  Options -FollowSymLinks
  AllowOverride None
  Order allow,deny
  Deny from all
</Directory>

Le fichier /etc/roundcube/debian-db.inc.php est généré par dbconfig-common. Vous n'avez pas besoin d'y toucher. Idem pour le fichier db.inc.php. Celui-ci configure les noms de tables à interroger pour récupérer les éléments spécifiques à chaque utilisateur.

Reste donc le fichier principal main.inc.php. Il est assez long et on y trouve de nombreux éléments. Voici quelques-uns de ceux que j'ai modifié pour que ça fonctionne:

// Vous devez mettre le nom de votre serveur IMAP
// Vous pouvez mettre plusieurs serveurs (cf: http://trac.roundcube.net/wiki/Howto_Config)
// Dans mon cas, la connexion se fait sur localhost
// J'ai utilisé ssl:// et non tls:// car ça ne fonctionnait pas !
$rcmail_config['default_host'] = 'ssl://localhost';

// Port TCP utilisé par défaut. Comme on est sur du ssl, j'ai mis 993.
$rcmail_config['default_port'] = 993;

// Vous ne voulez pas permettre la configuration en ligne:
$rcmail_config['enable_installer'] = false;

// Aucun intérêt à mettre en cache (dans la DB) du contenu local !
$rcmail_config['enable_caching'] = false;

// On impose l'utilisation du HTTPS:
$rcmail_config['force_https'] = true;

// Permet l'enregistrement du login/password dans le navigateur web:
$rcmail_config['login_autocomplete'] = 2;

// Le nom des titres de page web affichées
$rcmail_config['product_name'] = 'Poste électronique sur medspx.fr';

// Ne permettre aux utilisateurs de n'avoir qu'une seule identité:
$rcmail_config['identities_level'] = 3;

À noter que je n'ai rien configuré au niveau du serveur SMTP, roundcube semble utiliser la commande sendmail par défaut. Comme cette dernière est configurée pour utiliser notre serveur Exim4, il n'y a aucun problème. Finalement, le système global du courrier électronique séparé en parties uniques avec chacune son rôle est plutôt intéressant. Si cette organisation avait été monolithique, il aurait fallu configurer roundcube plus finement, voire qu'il dispose de son propre serveur SMTP.

Vous le voyez, il ne faut pas grand-chose pour que Roundcube fonctionne: il faut juste configurer le serveur IMAP par défaut (et encore) et ça fonctionne out-of-the-box. Malgré ça, il est possible de fortement personnaliser le programme ce qui est une bonne chose.

Enregistrement des utilisateurs

Un des défauts de Roundcube est de se reposer sur une base de données pour fonctionner. Même si nous utilisons SQLite, il faut tout de même créer un compte utilisateur dans la base de données de Roundcube. Comme je n'avais qu'un nombre réduit de comptes à renseigner, voici comment j'ai procédé: j'ai utilisé la fonction d'auto enregistrement.

Si vous activez le paramètre: $rcmail_config['auto_create_user'] = true alors n'importe quel utilisateur ayant un compte valide sur votre serveur IMAP pourra se créer un compte sur Roundcube. Pour ma part, et pour des questions de simplicité, j'ai mis ce paramètre à false une fois que j'ai enregistré mon compte unique de serveur IMAP. Au moins de tout, je sais qu'à priori, personne d'autre ne peut plus se créer de compte Roundcube.

Conclusion

Après avoir testé le logiciel pendant quelques semaines, voici quelques remarques sur son utilisation:

Pour terminer, j'ai plutôt un avis positif sur Rouncube. Sa configuration est assez simple et sa prise en charge sous Debian est bien menée. Il est assez simple d'utilisation et, pour mes besoins, il vaut largement GMail !