{{tag>mail webmail roundcube installation apache}}
====== Installation du webmail roundcube ======
[[http://roundcube.net| Rouncube]] est un webmail en ajax qui a une p'tite bouille fort sympatique comme vous pouvez le voir sur ces [[http://roundcube.net/screens|screenhots]].
===== Prérequis =====
L'installation sera effectuée sur une [[http://www.debian.org|debian]] stable (lenny a l'heure ou ce tutorial est écrit) disposant d'un serveur web [[http://www.apache.org|apache2]] gérant le [[http://php.net|php]] et assumant que vous avez un serveur [[http://www.mysql.fr|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 ====
Cette section est obsolète en debian squeeze, regardez en bas de cette page
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 [[http://www.backports.org|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 #
#######################################
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
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"
ServerSignature off
ServerName webmail.mondomaine.com
# redirection en https si disponible : c'est sensé etre le cas ;-)
RewriteEngine on
RewriteCond %{HTTPS} !^on$ [NC]
RewriteRule . https://%{HTTP_HOST}%{REQUEST_URI} [L]
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
==== 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"
Il vaut mieux choisir et mettre un vrai mot de passe, par exemple généré à l'aide de la commande "pwgen"
* 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
Le mot de passe doit etre adapté : mettre celui que vous avez choisi plus haut
* 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
IL faut maintenant empecher tout acces a l'instalateur :
* 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 [[http://trac.roundcube.net/wiki/Howto_Upgrade|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