{{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