Installation du webmail roundcube

Rouncube est un webmail en ajax qui a une p'tite bouille fort sympatique comme vous pouvez le voir sur ces screenhots.

Prérequis

L'installation sera effectuée sur une debian stable (lenny a l'heure ou ce tutorial est écrit) disposant d'un serveur web apache2 gérant le php et assumant que vous avez un serveur 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 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       #
#######################################
<VirtualHost *:443>
        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

        <Directory /var/www/webmailmondomaine.com>
                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"
        </Directory>

        ServerSignature off
</Virtualhost>

<VirtualHost *:80>
        ServerName      webmail.mondomaine.com

        # redirection en https si disponible : c'est sensé etre le cas ;-) 
        <IfModule mod_rewrite.c>
          <IfModule mod_ssl.c>
            <Location />
              RewriteEngine on
              RewriteCond %{HTTPS} !^on$ [NC]
              RewriteRule . https://%{HTTP_HOST}%{REQUEST_URI}  [L]
            </Location>
          </IfModule>
        </IfModule>

        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
</Virtualhost>

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 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
sysadmin/install_roundcube.txt · Dernière modification: 2014/10/30 11:10 par james
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0