Réseau - Web - GNU/Linux

2016 06 juin

Configuration du webmail Roundcube - Debian 8.0 Jessie

Rédigé par Marc GUILLAUME | Aucun commentaire
Article précédent Mail façon FAI - Debian 8.0 Jessie Article suivant

Traduction de la page https://workaround.org/ispmail/jessie/roundcube

Maintenant que vous avez une clé et un certificat valides et installé le paquet de Roundcube vous êtes prêt à configurer votre service de webmail. L'installation du serveur Apache sur Debian place toutes les configurations des hôtes virtuels (virtual host) dans le dossier /etc/apache2/sites-available/. Dans une nouvelle installation d'Apache il existe deux fichiers dans ce répertoire :

000-default.conf
Ce fichier concerne le répertoire /var/www via HTTP et est activé par défaut. Nous allons éditer ce fichier pour que si un utilisateur accède à votre serveur web par le protocole HTTP il soit automatiquement redirigé sur le protocole HTTPS.
default-ssl.conf
Ce fichier concerne aussi le répertoire /var/www mais cette fois via HTTPS. Il utilise un certificat auto-signé créé automatiquement appelé « snake oil » (il n'y a pas de page Wikipedia française correspondante). Nous allons activer cet hôte virtuel pour y configurer l'interface du webmail Roundcube.

Pour activer la configuration d'un tel hôte virtuel vous pouvez utiliser la commande a2ensite (Pour « Apache version 2 enable site », ou activation de site pour la version 2 d'Apache). Elle va créer un lien symbolique de /etc/apache2/sites-available/FILE vers /etc/apache2/sites-enabled/FILE.

Note : Debian Jessie est livrée avec la version 2.4 d'Apache. Celle-ci impose que tous les fichiers de configuration se terminent par .conf. Attendez-vous à des erreurs bizarres si vous oubliez ce suffixe.

Hôte virtuel pour HTTPS

Éditez le fichier /etc/apache2/sites-available/default-ssl.conf. Changez ces deux lignes pour qu'Apache utilise la clé et le certificat créés précédemment :

SSLCertificateFile /etc/ssl/certs/mailserver.pem
SSLCertificateKeyFile /etc/ssl/private/mailserver.pem

Ajoutez également ces deux lignes pour inclure Roundcube. Placez-les n'importe où entre les balises <VirtualHost…> et </Virtualhost> :

Include /etc/roundcube/apache.conf
Alias / /var/lib/roundcube/

Activez cet hôte virtuel :

a2ensite default-ssl

Activez également le module « mod_ssl » et dites à Apache d'écouter sur le port 443:

a2enmod ssl
service apache2 reload

Si tout se passe bien vous devriez voir un message « [ ok ] ». Si ce n'est pas le cas lancez apache2ctl configtest pour vois si Apache détecte un problème évident. Ou vérifiez votre fichier de logs d'erreur Apache /var/log/apache2/error.log pour plus de détails.

Maintenant si vous pointez vote navigateur sur http://YOURSERVER/ il affichera l'interface du webmail.

Vous pourriez déjà vous connecter en mettant « localhost » comme serveur. Mais on peut améliorer un peu la configuration. Le serveur est toujours « localhost ». Donc éditons le fichier /etc/roundcube/config.inc.php] et mettons :

$config['default_host'] = 'localhost';

Maintenant quand vous rechargez votre page de connexion le champ « serveur » ne devrait plus apparaître.

Mettez en place la redirection de HTTP vers HTTPS

Pour les utilisateurs qui taperaient « http » au lieu de « https », il faut mettre en place une redirection automatique, pour qu'ils soient redirigés sur l'URL sécurisée. Éditez le fichier /etc/apache2/sites-available/000-default.conf et insérez-y :

Redirect permanent / https://YOUR.MAIL.SERVER/

Vous pouvez mettre cette ligne n'importe où dans la section VirtualHost. Bien entendu il faut que vous remplaciez YOUR.MAIL.SERVER par le nom de domaine pleinement qualifié de votre serveur de mail. La configuration de l'hôte virtuel étant activée par défaut, vous n'avez qu'à relancer le serveur web pour que vos modifications soient prises en compte :

service apache2 reload

Plugins

Plus bas dans le fichier /etc/roundcube/config.inc.php] il existe une liste de plugins que Roundcube doit charger. Les plugins « archive » et « zipdownload » sont probablement déjà activés. Ajoutez les plugins « managesieve » et « password » de telle façon que la configuration ressemble à ça :

$config['plugins'] = array(	 	 
 'archive',	 	 
 'zipdownload',	 	 
 'managesieve',	 	 
 'password',	 	 
);

Ensuite une configuration optionnelle. La durée de session par défaut de Roundcube est de 10 minutes. Cela signifie que si un utilisateur ne se sert pas de l'interface du webmail pendant plus de 10 minutes il doit se reconnecter. Je trouve ça agaçant et j'augmente cette durée à une heure. Pour faire ça à la fin du fichier de configuration j'ajoute :

$config['session_lifetime'] = 60;

Et si vous désirez changer le logo par défaut de Roundcube, cela se fait en changeant la variable ci-dessous :

$config['skin_logo'] = './ispmail-logo.png';
Logo ISPmail pour Roundcube

N'hésitez pas à utiliser ce chouette logo que j'ai réalisé 🙂. Vous n'avez simplement qu'à copier ce fichier image sous ce nom dans /var/lib/roundcube/ispmail-logo.png. Le logo devrait faire 177×49 pixels de large.

Si il y a un problème d'affichage, assurez-vous qu'il aie les bonnes permissions :

chmod a+r /var/lib/roundcube/ispmail-logo.png

En actualisant la page du navigateur il devrait ressembler à cela :

ispmail-jessie-roundcube-pimped

Configuration du plugin « managesieve »

Le plugin « managesieve » permettra à vos utilisateurs de créer ou supprimer des règles automatiques pour filtrer leurs mails. Ces règles sont enregistrées sur le serveur et seront appliquées automatiquement. Il faut cependant configurer ce plugin. Une configuration par défaut se trouve dans /usr/share/roundcube/plugins/managesieve/config.inc.php].dist sur votre serveur. Copiez-la à l'endroit où Roundcube pourra la trouver :

cp /usr/share/roundcube/plugins/managesieve/config.inc.php].dist /etc/roundcube/plugins/managesieve/config.inc.php]

Aucune modification n'est nécessaire.

Configuration du plugin « password »

Nous incitons nos utilisateurs à fréquemment changer de mot de passe. Nous devons donc leur permettre de le faire. Copiez le fichier de configuration par défaut /usr/share/roundcube/plugins/password/config.inc.php] à l'endroit adéquat :

cp /usr/share/roundcube/plugins/password/config.inc.php].dist /etc/roundcube/plugins/password/config.inc.php]

Le fichier de configuration /etc/roundcube/plugins/password/config.inc.php] demande cependant quelques modifications. Nous devons lui dire comment fonctionne notre base de données et que faire quand un utilisateur demande à changer de mot de passe. Le premier règlage concerne la longueur minimale du mot de passe. Je recommande d'obliger à ce qu'il fasse au moins 10 caractères. En fait la complexité du mot de passe n'est pas si importante. Vous pouvez regarder cette page de XKCD pour nourrir votre réflexion concernant les mots de passe et la sécurité. Mettez :

$config['password_minimum_length'] = 10;

Il faut également autoriser l'utilisateur à reprendre son ancien mot de passe comme nouveau mot de passe. Ça peut sembler idiot, mais comme nous sommes en train de mettre à jour notre schéma de base de données pour passer de l'algorithme MD5, de faible sécurité, à l'algorithme SHA2, beaucoup plus sûr, il vaut mieux le permettre :

$config['password_force_save'] = true;

Ensuite le plugin « password » doit savoir comment se connecter à votre base de données :

$config['password_db_dsn'] = 'mysql://mailuser:ChangeMe@127.0.0.1/mailserver';

Remplacez « ChangeMe » par le mot de passe généré aléatoirement pour l'utilisateur MySQL « mailuser ».

Et maintenant dites au plugin comment écrire le hachage du nouveau mot de passe dans la base de données :

$config['password_query'] = "UPDATE virtual_users SET password=CONCAT('{SHA256-CRYPT}', ENCRYPT (%p, CONCAT('$5$', SUBSTRING(SHA(RAND()), -16)))) WHERE email=%u;";

Beurk ! Ça semble vraiment moche non ? Cette requête SQL génère un hachage du mot de passe à partir de ces éléments :

  • La chaîne de caractères « {SHA256-CRYPT} » indique explicitement à Dovecot que ce mot de passe est un hachage SHA256 salé. Vous pouvez avoir plusieurs sortes de chiffrement de mots de passe dans votre base, cela clarifie les choses.
  • Le mot de passe chiffré qui est réellement produit par la fonction crypt() de votre système (que MySQL utilise lorsque vous utiliser la fonction SQL « ENCRYPT ») en se basant sur…
    • Le nouveau mot de passe en clair (Roundcube remplace “%p” par sa valeur).
    • « $5$ » qui représente l'algorithme SHA-256. Voyez la page man crypt qui documente la fonction crypt().
    • Et « SUBSTRING(SHA(RAND()), -16) » qui est utilisé pour « saler » le mot de passe. Ce « sel » est simplement un ajout d'entropie qui rend beaucoup, beaucoup plus difficile la rétro-ingéniérie du mot de passe chiffré vers le mot de passe réel.
  • Et bien entendu comme nous ne voulons changer que le mot de passe de l'utilisateur connecté, la restriction « WHERE email=%u » assure que nous allons modifier la bonne ligne de la base de données. Roundcube remplace « %u » par le nom d'utilisateur qui dans notre cas est le même que l'adresse mail.

(J'avais l'habitude de recommander d'utiliser le commande dovecot pw -s SHA256-CRYPT pour générer le mot de passe. Vous pouvez également faire ça. Mais en fait MySQL est capable de générer un hachage SHA256 salé sans aucun appel au shell. Merci à Martin de m'avoir signalé ça.)

Très bien, Roundcube est configuré. Mais pour pouvoir nous connecter et l'utiliser nous devons d'abord configurer Dovecot. Donc ne vous inquiétez pas si la connexion ne fonctionne pas encore.

Essayons-le

C'était beaucoup de théorie et de configuration. Maintenant voyons le résultat. Allez sur cette URL https://YOUR.MAIL.SERVER/ et connectez-vous en tant que…

ispmail-jessie-roundcube-testlogin

Si tout fonctionne comme prévu vous devriez être connecté et voir…

ispmail-jessie-roundcube-testlogin-successful

Si ce n'est pas le cas alors jetez un oeil sur les fichiers de log /var/log/mail.log et /var/log/roundcube/errors.

Écrire un commentaire

Quelle est la deuxième lettre du mot elue ?

Fil RSS des commentaires de cet article

À propos

Yakati.info - Réseau - Web - GNU/Linux © 2017

Généré par PluXml en 0.025s  - Administration

Mes coordonnées

Marc Guillaume
contact[at]yakati.info
79150 ÉTUSSON

Crédits

Pour la gestion du contenu

Généré par PluXml, le Blog ou Cms sans base de données

Pour le contenu

Licence Creative Commons
Ce(tte) œuvre est mise à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International.

Pour le thème

Thème SOLID de blacktie.co adapté pour PluXml