Vous êtes ici : Accueil / Debian GNU/Linux / Applications Web / E-Mails / Installer Horde Groupware Webmail Edition sur Debian

Installer Horde Groupware Webmail Edition sur Debian

Par Pierre-Yves Landuré Dernière modification 07/02/2017 11:38

Le projet Horde est constitué de plusieurs logiciels qui ensemble forment un groupware très complet. Ces logiciels sont disponibles soit séparément, soit dans le bundle Horde Groupware Webmail Edition. Bien qu'assez lourd à mettre en place, c'est l'un des meilleurs WebMail libres. Cet article vous guide lors de son installation sur Debian.

Ce guide est testé sur:

  • Debian 6.0 Squeeze
  • Debian 7.0 Wheezy

Ce guide est testé avec ces versions de Horde:

  • Horde Groupware 5

Prérequis

Ce guide nécessite:

Ce guide recommande:

Paramètres

Renseignez le nom de domaine où sera disponible l'application:

DOMAIN="mail.domain.com"

Renseignez le nom d'hôte du serveur MySQL:

MYSQL_HOST="localhost"

Si le serveur MySQL n'est pas local, l'outil mysql-tools essaiera de s'y connecter avec le client MySQL, ou, en cas d'échec de connexion, via une connexion SSH.

Renseignez le nom du certificat SSL à utiliser pour chiffrer l'application avec HTTPS (créé via la procédure Créer un certificat SSL / TLS sur Debian) (optionnel, recommandé):

SSL_KEY_NAME="${DOMAIN}"

Paramètres IMAP et SMTP

Renseignez le nom du serveur IMAP:

IMAP_DOMAIN="imap.domain.com"

Renseignez le nom du serveur SMTP (pour l'auto-configuration Outlook):

SMTP_DOMAIN="smtp.domain.com"

Renseignez l'adresse mél de l'utilisateur d'administration. Ce doit être un utilisateur valide du serveur IMAP:

ADMIN_MAIL="admin@domain.com"

Renseignez le domaine de mél par défaut:

DEFAULT_MAIL_DOMAIN="domain.com"

Renseignez l'adresse mél à laquelle adresser les notifications en cas de problème:

CONTACT_MAIL="contact@domain.com"

Installation

Déterminez le chemin d'installation:

INSTALL_PATH="/opt/horde/${DOMAIN}"

Déterminez le chemin des données:

DATA_PATH="/var/lib/horde/${DOMAIN}"

Déterminez le chemin du cache:

CACHE_PATH="/var/cache/horde/${DOMAIN}"

Assurez-vous que les dossiers existent:

command mkdir --parents "$(command dirname "${INSTALL_PATH}")"
command mkdir --parents "${CACHE_PATH}"
command mkdir --parents "${DATA_PATH}"

Préparation de l'environnement

Installez les logiciels nécessaires:

command apt-get install php5-gd php5-mysql php5-mcrypt \
php5-imap php5-tidy php5-cli php-pear \
php5-memcache php5-geoip make php5-dev \
php5-curl php5-ldap php5-idn php5-sasl \
libssh2-php aspell aspell-en aspell-fr \
php5-imagick php-net-ldap2 libimage-exiftool-perl

Adaptez la configuration PHP aux besoins de l'outil:

command php-tools --for="horde" --set "memory_limit" "128M"
command php-tools --for="horde" --set "upload_max_filesize" "10M"
command php-tools --for="horde" --set "post_max_size" "58M"
command php-tools --for="horde" --set "session.gc_divisor" "10000"

Mettez à jour PEAR:

command pear channel-update pear.php.net
command pear upgrade-all

Installez les modules optionnels de Horde:

command pear install channel://pear.php.net/HTTP_WebDAV_Server-1.0.0RC8
command pear install channel://pear.php.net/XML_Serializer-0.20.2

Installez le module PECL lzf pour réduire la taille des sessions:

command pecl install lzf

Ajoutez le à la configuration PHP:

command echo 'extension=lzf.so' \
> '/etc/php5/conf.d/lzf.ini'

Rechargez la configuration de PHP:

test -x /etc/init.d/php5-fpm && /etc/init.d/php5-fpm force-reload
test -x /etc/init.d/apache2 && /etc/init.d/apache2 force-reload
test -x /etc/init.d/lighttpd && /etc/init.d/lighttpd force-reload
test -x /etc/init.d/nginx && /etc/init.d/nginx force-reload

Téléchargement des sources

Ajoutez le canal Horde à la configuration de PEAR:

command pear channel-discover 'pear.horde.org'

Paramétrez le dossier d'installation de l'application:

command pear install horde/horde_role
command echo "${INSTALL_PATH}" > '/tmp/horde-path.txt'
command pear run-scripts horde/horde_role < '/tmp/horde-path.txt'
command rm '/tmp/horde-path.txt'

Installez les sources de l'application:

command pear install -a -B horde/webmail

Installez le support des dates de vacances:

command pear install 'channel://pear.php.net/Date_Holidays-0.21.8'

Création de la base de données

Créez la base de données:

MYSQL_PARAMS="$(command mysql-tools --server="${MYSQL_HOST}" --with-ssh \
--auto-hosts --db-prefix="horde" --create "${DOMAIN}")"

Récupérez les paramètres de la nouvelle base de données:

MYSQL_DB="$(echo "${MYSQL_PARAMS}" | command grep -e "^MYSQL_DB" \
    | cut --delimiter="=" --fields="2-")"
MYSQL_USER="$(echo "${MYSQL_PARAMS}" | command grep -e "^MYSQL_USER" \
    | cut --delimiter="=" --fields="2-")"
MYSQL_PASSWORD="$(echo "${MYSQL_PARAMS}" | command grep -e "^MYSQL_PASSWORD" \
    | cut --delimiter="=" --fields="2-")"
echo "${MYSQL_PARAMS}"

Notez les informations de connexion fournies par la commande.

Configuration de la journalisation

Configurez Syslog pour enregistrer les messages de Horde dans un fichier dédié:

if [ -e '/etc/syslog-ng/syslog-ng.conf' \
-a -z "$(command grep 'Horde messages' '/etc/syslog-ng/syslog-ng.conf')" ]; then
command echo '
########################
# Horde messages
########################

destination d_horde { file("/var/log/horde.log"); };
filter f_horde { facility(user) and program("^HORDE$"); };
log { source(s_src); filter(f_horde); destination(d_horde); };
' >> '/etc/syslog-ng/syslog-ng.conf'
fi

Créez le fichier log pour Horde:

command touch '/var/log/horde.log'
command chown root:adm '/var/log/horde.log'
command chmod 640 '/var/log/horde.log'

Redémarrez Syslog:

test -x '/etc/init.d/syslog-ng' && /etc/init.d/syslog-ng restart

Configuration du Webmail

Créez le fichier de configuration suggérée:

echo "webmail-install suggested replies :
What database backend should we use? mysqli
Username to connect to the database as : ${MYSQL_USER}
Password : ${MYSQL_PASSWORD}" > '/tmp/horde-config'
if [ "${MYSQL_HOST}" = "localhost" ]; then
echo "How should we connect to the database? unix" >> '/tmp/horde-config'
else
echo "How should we connect to the database? tcp
Database server/host : ${MYSQL_HOST}
Port the DB is running on, if non-standard : 3306" >> '/tmp/horde-config'
fi
echo "Database name to use : ${MYSQL_DB}
Internally used charset : utf-8
Use SSL to connect to the server? 0
Certification Authority to use for SSL connections : []
Split reads to a different server? : false
Specify an existing mail user who you want to give administrator
permissions : ${ADMIN_MAIL}" >> '/tmp/horde-config'

Lancez le script d'installation du webmail:

cat '/tmp/horde-config'
command webmail-install

Supprimez le fichier contenant la configuration suggérée:

command rm '/tmp/horde-config'

Désactivez la protection des sessions utilisateurs par adresse IP si utilisez des connexions 3G:

test -e "${INSTALL_PATH}/config/conf.local.php" \
|| echo '<?php' > "${INSTALL_PATH}/config/conf.local.php"
command echo "// Disable sessions protection by IP
\$conf['auth']['checkip'] = false;
" >> "${INSTALL_PATH}/config/conf.local.php"

Mettez en place le rappel par email des alarmes:

command echo "# Horde Alarms
*/5 * * * *   www-data   test -x /usr/bin/horde-alarms && /usr/bin/horde-alarms" \
> "/etc/cron.d/horde-${DOMAIN}"

Mettez en place la connexion au serveur IMAP:

command mkdir --parents "${INSTALL_PATH}/imp/config/backends.d"
command echo "<?php // Imap server config
\$servers['imap']['hostspec'] = '${IMAP_DOMAIN}';
//\$servers['imap']['hordeauth'] = 'full';
\$servers['imap']['secure'] = 'tls';
" > "${INSTALL_PATH}/imp/config/backends.d/backends-${IMAP_DOMAIN}.php"

Mettez en place l'identification par le serveur IMAP:

test -e "${INSTALL_PATH}/config/conf.local.php" \
|| echo '<?php' > "${INSTALL_PATH}/config/conf.local.php"
command echo "// Setup Horde IMAP auth
\$conf['imap']['enabled'] = true;
\$conf['imap']['server'] = '${IMAP_DOMAIN}';
\$conf['imap']['port'] = 143;
\$conf['imap']['secure'] = 'tls';
\$conf['imap']['maildomain'] = '${DEFAULT_MAIL_DOMAIN}';
\$conf['imap']['cache_folders'] = true;
" >> "${INSTALL_PATH}/config/conf.local.php"

Mettez en place la connexion au serveur Sieve:

command mkdir --parents "${INSTALL_PATH}/ingo/config/backends.d"
command echo "<?php // Sieve server config
\$backends['imap']['disabled'] = true;
\$backends['sieve']['transport'][Ingo::RULE_ALL]['params']['hostspec'] = '${IMAP_DOMAIN}';
\$backends['sieve']['transport'][Ingo::RULE_ALL]['params']['debug'] = false;
\$backends['sieve']['script'][Ingo::RULE_ALL]['params']['imapflags'] = true;
\$backends['sieve']['disabled'] = false;
\$backends['sieve']['hordeauth'] = 'full';
" > "${INSTALL_PATH}/ingo/config/backends.d/backends-${IMAP_DOMAIN}.php"

Mettez en place un hook pour Ingo de façon à ce que l'identification au serveur TimSieved se fasse correctement:

echo '<?php
class Ingo_Hooks
{
public function transport_auth($driver)
{
switch($driver)
{
case "timsieved":
return array(
"username" => $GLOBALS["registry"]->getAuth(null),
"euser" => $GLOBALS["registry"]->getAuth(null)
);

default:
return true;
}
}
}' \
> "${INSTALL_PATH}/ingo/config/hooks.php"

Configurez le domaine d'email par défaut, et le contact d'administration:

test -e "${INSTALL_PATH}/config/conf.local.php" \
|| echo '<?php' > "${INSTALL_PATH}/config/conf.local.php"
command echo "// default domain:
\$conf['problems']['maildomain'] = '${DEFAULT_MAIL_DOMAIN}';
\$conf['problems']['email'] = '${CONTACT_MAIL}';
" >> "${INSTALL_PATH}/config/conf.local.php"

Configurez le stockage des fichiers dans Gollem:

command mkdir --parents "${INSTALL_PATH}/gollem/config/backends.d"
command mkdir --parents "${DATA_PATH}/home"
command chown -R www-data:www-data "${DATA_PATH}/home"
command echo "<?php
\$backends['ftp']['disabled'] = true;
\$backends['sqlhome']['disabled'] = false;
\$backends['sqlhome']['root'] = '${DATA_PATH}/home';
\$backends['sqlhome']['home'] = '${DATA_PATH}/home/' . \$GLOBALS['registry']->getAuth();
\$backends['sqlhome']['createhome'] = true;" \
> "${INSTALL_PATH}/gollem/config/backends.d/backends-${DOMAIN}.php"

Mise en place de l'hôte virtuel

Générez la configuration spécialisée de Horde:

CUSTOM_VHOST="  # Active Sync specifics.
  <IfModule mod_rewrite.c>
    RewriteRule ^/Microsoft-Server-ActiveSync /rpc.php [PT,L,QSA]
    # ActiveSync fix for PHP using FastCGI (ie FPM).
    RewriteRule .* - [E=HTTP_MS_ASPROTOCOLVERSION:%{HTTP:Ms-Asprotocolversion}]
    RewriteRule .* - [E=HTTP_X_MS_POLICYKEY:%{HTTP:X-Ms-Policykey}]
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
  </IfModule>

  # Outlook autodiscover URL.
  Alias /autodiscover/autodiscover.xml ${INSTALL_PATH}/rpc.php

  # The root folder of this virtual host.
  DocumentRoot ${INSTALL_PATH}

  # Some options for the root folder.
  # Read Apache 2 documentation to know exactly what is done.
  <Directory ${INSTALL_PATH}>
    Options Indexes FollowSymLinks MultiViews

    # If you want to enable overrides, you should read:
    # http://httpd.apache.org/docs/2.0/mod/core.html#allowoverride
    AllowOverride All

    Order allow,deny
    Allow from all
  </Directory>"

Créez la configuration du serveur HTTP pour votre domaine:

if [ -n "${SSL_KEY_NAME}" -a -e "/etc/ssl/private/${SSL_KEY_NAME}.key" ]; then
  command a2tools --template="custom" --ssl="${SSL_KEY_NAME}" "${DOMAIN}" "${CUSTOM_VHOST}"
command a2tools --template='redirect' "${DOMAIN}" "https://${DOMAIN}/"
else
command a2tools --template="custom" "${DOMAIN}" "${CUSTOM_VHOST}"
fi

Remarque: Forcez le HTTPS si vous utilisez un reverse proxy HTTPS vers HTTP:

test -e "${INSTALL_PATH}/config/conf.local.php" \
|| echo '<?php' > "${INSTALL_PATH}/config/conf.local.php"
command echo "// Force HTTPS
\$conf['use_ssl'] = 1;
" >> "${INSTALL_PATH}/config/conf.local.php"

Auto-configuration Outlook

Ce qui suit est nécessaire à l'auto-configuration d'Outlook pour le serveur mail. La configuration de Horde nécessaire à l'auto-configuration d'Outlook sont décrites plus loin dans ce guide.

Ce qui suit est difficile à automatiser.

Détectez si HTTPS est utilisé:

SSL_ENGINE='Off'
PROTOCOL='http'
if [ -n "${SSL_KEY_NAME}" -a -e "/etc/ssl/private/${SSL_KEY_NAME}.key" ]; then
  SSL_ENGINE='On'
  PROTOCOL='https'
fi

Ajoutez au VirtualHost servant le domaine "domain.com" (pour le serveur "webmail.domain.com") les lignes fournies par cette commande:

echo "<IfModule mod_rewrite.c>
  <IfModule mod_proxy.c>
      # This is needed for this settings to work, but can conflict with other reverse proxy configurations in the VirtualHost.
      # ProxyPreserveHost off
      <IfModule mod_ssl.c>
        SSLProxyEngine ${SSL_ENGINE}
      </IfModule>

      ProxyPassReverse /autodiscover/autodiscover.xml ${PROTOCOL}://${DOMAIN}/autodiscover/autodiscover.xml
      RewriteRule /autodiscover/autodiscover.xml(.*) ${PROTOCOL}://${DOMAIN}/autodiscover/autodiscover.xml\$1 [P,L]
  </IfModule>
</IfModule>"

Activez les modules Apache nécessaires à cette configuration:

command a2enmod proxy_http rewrite ssl

Remarque: Si vous êtes derrière un reverse proxy, il est possible que vous deviez ajouter "domain.com" à la ligne ServerAlias du VirtualHost Horde.

Configuration du client mél

Désactiver la gestion avancée des pièces jointes

La gestion avancées des pièces jointes ne fonctionne pas correctement à l'heure de l'écriture de ces lignes (IMP 6.1.3). Désactivez-la:

test -e "${INSTALL_PATH}/imp/config/conf.local.php" \
|| echo '<?php' > "${INSTALL_PATH}/imp/config/conf.local.php"
command echo "// Disable advanced attachments
\$conf['compose']['use_vfs'] = false;
\$conf['compose']['link_attachments'] = false;
\$conf['compose']['attach_size_limit'] = 0;
\$conf['compose']['attach_count_limit'] = 0;
" >> "${INSTALL_PATH}/imp/config/conf.local.php"

Utiliser la corbeille

Placez les messages dans la corbeille lors de la suppression:

command mkdir --parents "${INSTALL_PATH}/imp/config/prefs.d"
echo "<?php // Move deleted messages to trash folder
\$_prefs['use_trash']['value'] = 1;
" > "${INSTALL_PATH}/imp/config/prefs.d/use_trash.php"

Afficher en ligne les messages HTML

Activez l'affichage en ligne les messages formatés en HTML:

command mkdir --parents "${INSTALL_PATH}/config/mime_drivers.d"
echo "<?php // local MIME drivers.
\$mime_drivers['html']['inline'] = true;
" > "${INSTALL_PATH}/config/mime_drivers.d/inline_html.php"

Appliquez la configuration globale à IMP:

command mkdir --parents "${INSTALL_PATH}/imp/config/mime_drivers.d"
echo "<?php // local MIME drivers.
\$mime_drivers['html']['inline'] = true;
" > "${INSTALL_PATH}/imp/config/mime_drivers.d/inline_html.php"

Configurer les dossiers par défaut

Pour utiliser les dossiers de Thunderbird:

echo "<?php // Folder configs
\$_prefs['use_trash']['value'] = true;
\$_prefs['spam_folder']['value'] = Horde_String::convertCharset('Junk', 'UTF-8', 'UTF7-IMAP');
\$_prefs['move_ham_after_report']['value'] = 1;
\$_prefs['delete_spam_after_report']['value'] = 2;
" > "${INSTALL_PATH}/imp/config/prefs.d/folders.php"

La configuration pour Outlook est différente, et n'ayant pas ce client à disposition, vous devrez la déterminer vous même.

Configuration des contacts

Ajoutez 2 adresses emails (travail et maison) aux contacts:

command mkdir --parents "${INSTALL_PATH}/turba/config/backends.d"
command echo "<?php
// Enable work and home emails.
\$cfgSources['localsql']['map']['homeEmail'] = 'object_homeemail';
\$cfgSources['localsql']['map']['workEmail'] = 'object_workemail';
\$cfgSources['localsql']['search'][] = 'homeEmail';
\$cfgSources['localsql']['search'][] = 'workEmail';
" > "${INSTALL_PATH}/turba/config/backends.d/moreEmails.php"

Remarque: les champs "object_homeemail" et "object_workemail" sont déjà présents en base de données.

Améliorations

Mise en place d'ActiveSync

Activez la synchronisation via le protocole ActiveSync et l'auto-configuration des clients Outlook:

test -e "${INSTALL_PATH}/config/conf.local.php" \
|| echo '<?php' > "${INSTALL_PATH}/config/conf.local.php"
command echo "// ActiveSync setup
\$conf['activesync']['emailsync'] = true;
\$conf['activesync']['version'] = '14';
\$conf['activesync']['autodiscovery'] = 'full';
\$conf['activesync']['hosts']['imap']['host'] = '${IMAP_DOMAIN}';
\$conf['activesync']['hosts']['imap']['port'] = 143;
\$conf['activesync']['hosts']['imap']['ssl'] = true;
\$conf['activesync']['hosts']['pop']['port'] = 110;
\$conf['activesync']['hosts']['pop']['ssl'] = false;
\$conf['activesync']['hosts']['smtp']['host'] = '${SMTP_DOMAIN}';
\$conf['activesync']['hosts']['smtp']['port'] = 25;
\$conf['activesync']['hosts']['smtp']['popauth'] = false;
\$conf['activesync']['hosts']['smtp']['ssl'] = true;
\$conf['activesync']['outlookdiscovery'] = true;
\$conf['activesync']['logging']['type'] = 'horde';
\$conf['activesync']['ping']['heartbeatmin'] = 60;
\$conf['activesync']['ping']['heartbeatmax'] = 2700;
\$conf['activesync']['ping']['heartbeatdefault'] = 480;
\$conf['activesync']['ping']['deviceping'] = true;
\$conf['activesync']['ping']['waitinterval'] = 15;
\$conf['activesync']['enabled'] = true;
" >> "${INSTALL_PATH}/config/conf.local.php"

Mise en place du cache

Activez l'utilisation de memcached:

test -e "${INSTALL_PATH}/config/conf.local.php" \
|| echo '<?php' > "${INSTALL_PATH}/config/conf.local.php"
command echo "// Horde memcache usage
\$conf['memcache']['hostspec'] = array('localhost');
\$conf['memcache']['port'] = array('11211');
\$conf['memcache']['weight'] = array();
\$conf['memcache']['persistent'] = true;
\$conf['memcache']['c_threshold'] = 0;
\$conf['memcache']['compression'] = true;
\$conf['memcache']['large_items'] = true;
\$conf['memcache']['enabled'] = true;
" >> "${INSTALL_PATH}/config/conf.local.php"

Activez le cache APC:

test -e "${INSTALL_PATH}/config/conf.local.php" \
|| echo '<?php' > "${INSTALL_PATH}/config/conf.local.php"
command echo "// APC cache
\$conf['cache']['driver'] = 'Apc';
" >> "${INSTALL_PATH}/config/conf.local.php"

Créez le cache javascript et css:

command mv "${INSTALL_PATH}/static" "${CACHE_PATH}/static"
command ln -s "${CACHE_PATH}/static" "${INSTALL_PATH}/static"
command chown -R www-data:www-data "${CACHE_PATH}"

Activez le cache Javascript et CSS:

test -e "${INSTALL_PATH}/config/conf.local.php" \
|| echo '<?php' > "${INSTALL_PATH}/config/conf.local.php"
command echo "// JS cache
\$conf['cachecss'] = true;
\$conf['cachecssparams'] = array(
'driver' => 'filesystem',
'lifetime' => 86400,
'compress' => 'php'
);

// CSS cache
\$conf['cachejs'] = true;
\$conf['cachejsparams'] = array(
'driver' => 'filesystem',
'lifetime' => 86400,
'compress' => 'php'
);

// Theme cache
\$conf['cachethemes'] = true;
\$conf['cachethemesparams'] = array(
'check' => 'appversion',
'lifetime' => 604800,
);
" >> "${INSTALL_PATH}/config/conf.local.php"

Traitement des images

Utilisez Imagick et exiftool pour le traitement des images:

test -e "${INSTALL_PATH}/config/conf.local.php" \
|| echo '<?php' > "${INSTALL_PATH}/config/conf.local.php"
command echo "// Spell driver
\$conf['image']['driver'] = 'Imagick';
\$conf['exif']['driver'] = 'Exiftool';
\$conf['exif']['params'] = array(
'exiftool' => '/usr/bin/exiftool'
);
" >> "${INSTALL_PATH}/config/conf.local.php"

Correction orthographique

Activez le correcteur d'orthographe:

test -e "${INSTALL_PATH}/config/conf.local.php" \
|| echo '<?php' > "${INSTALL_PATH}/config/conf.local.php"
command echo "// Spell driver
\$conf['spell']['driver'] = 'aspell';
\$conf['spell']['params'] = array(
'path' => '/usr/bin/aspell'
);
" >> "${INSTALL_PATH}/config/conf.local.php"

Gestion des pièces jointes

Pour visionner les pièces jointes directement dans le navigateur sans les télécharger, installez les outils:

command apt-get install unrtf libwpd-tools xlhtml gnumeric \
source-highlight ppthtml rpm wv enscript abiword

Configurez l'application pour les utiliser:

command mkdir --parents "${INSTALL_PATH}/config/mime_drivers.d"
echo "<?php // local MIME drivers.
\$mime_drivers['deb']['disable'] = false;
\$mime_drivers['msword']['disable'] = false;
\$mime_drivers['msexcel']['disable'] = false;
\$mime_drivers['mspowerpoint']['disable'] = false;
\$mime_drivers['rpm']['disable'] = false;
\$mime_drivers['rtf']['disable'] = false;
\$mime_drivers['wordperfect']['disable'] = false;
" > "${INSTALL_PATH}/config/mime_drivers.d/extended_support.php"

Localisation des IPs

Téléchargez la base de données de localisation des adresses IPs:

command wget 'http://geolite.maxmind.com/download/geoip/database/GeoIPv6.dat.gz' \
--output-document="${INSTALL_PATH}/config/GeoIPv6.dat.gz"
command gunzip "${INSTALL_PATH}/config/GeoIPv6.dat.gz"

Configurez l'application pour l'utiliser:

test -e "${INSTALL_PATH}/config/conf.local.php" \
|| echo '<?php' > "${INSTALL_PATH}/config/conf.local.php"
command echo "// GeoIP country lookup
\$conf['geoip'] = array(
'datafile' => '${INSTALL_PATH}/config/GeoIPv6.dat'
);
" >> "${INSTALL_PATH}/config/conf.local.php"

Fortunes

Pour afficher un message du jour sur la page d'accueil, installez l'outil:

command apt-get install fortunes-fr

Configurez l'application pour l'utiliser:

test -e "${INSTALL_PATH}/config/conf.local.php" \
|| echo '<?php' > "${INSTALL_PATH}/config/conf.local.php"
command echo "// Fortune
\$conf['fortune'] = array( 'exec_path' => '/usr/games/fortune' );
" >> "${INSTALL_PATH}/config/conf.local.php"

Chiffrement GPG

Pour utiliser le chiffrement GPG des messages, installez l'outil:

command apt-get install gnupg

Configurez Horde:

test -e "${INSTALL_PATH}/config/conf.local.php" \
|| echo '<?php' > "${INSTALL_PATH}/config/conf.local.php"
command echo "// GnuPG
\$conf['gnupg']['path'] = '/usr/bin/gpg';
" >> "${INSTALL_PATH}/config/conf.local.php"

Chiffrement OpenSSL

Pour utiliser le chiffrement SSL des messages, installez l'outil:

command apt-get install openssl ca-certificates

Configurez Horde:

test -e "${INSTALL_PATH}/config/conf.local.php" \
|| echo '<?php' > "${INSTALL_PATH}/config/conf.local.php"
command echo "// GnuPG
\$conf['openssl']['path'] = '/usr/bin/openssl';
\$conf['openssl']['cafile'] = '/etc/ssl/certs';
" >> "${INSTALL_PATH}/config/conf.local.php"

Outil d'administration des sessions

Activez l'outil d'administration des sessions (dangereux):

command chown www-data '/var/lib/php5'

Autres possibilités

Horde offre de nombreuses autres possibilités parmis lesquelles:

  • Récupération de la météo sur weather.com
  • API de recherche Google
  • API de Google Maps

Explorez l'interface d'administration de Horde pour en savoir plus.

Sauvegardes

Sauvegardez l'installation avec Backup Manager (voir Installer et configurer Backup Manager sur Debian):

command backup-manager-tools add "${INSTALL_PATH}"
command backup-manager-tools add "${DATA_PATH}"

N'oubliez pas de sauvegarder la base de données (voir Installer et configurer MySQL sur Debian).

Résolution des problèmes

Journaux

Affichez les journaux de Horde avec:

command tail -n 50 -f '/var/log/horde.log'

Pour déboguer les problèmes, augmentez la verbosité des journaux:

test -e "${INSTALL_PATH}/config/conf.local.php" \
|| echo '<?php' > "${INSTALL_PATH}/config/conf.local.php"
command echo "
\$conf['log']['priority'] = 'DEBUG';
" >> "${INSTALL_PATH}/config/conf.local.php"

Désactivez les journaux verbeux:

command sed -i -e "/log'.*'priority/d" \
"${INSTALL_PATH}/config/conf.local.php"

Test du système

Pour testez si votre système est correctement configuré, activez les tests:

test -e "${INSTALL_PATH}/config/conf.local.php" \
|| echo '<?php' > "${INSTALL_PATH}/config/conf.local.php"
command echo "
\$conf['testdisable'] = false;
" >> "${INSTALL_PATH}/config/conf.local.php"

Visitez l'URL affichée par:

echo "http://${DOMAIN}/test.php"

Une fois les tests terminés, désactivez la fonctionnalité:

command sed -i -e "/testdisable/d" \
"${INSTALL_PATH}/config/conf.local.php"

Réinstaller tout les paquets PEAR

Dans le cas où votre installation PEAR est cassée, voici comment réinstaller tous les paquets PEAR (très dangereux):

command pear list \
| command cut --delimiter=" " --fields=1 \
| command egrep -v "INSTALLED|==|PACKAGE" \
| command xargs -iNAME pear install --force pear/NAME

Désinstaller Horde

Désinstallez Horde proprement avec:

command pear list -c pear.horde.org \
| command cut --delimiter=" " --fields=1 \
| command egrep -v "INSTALLED|==|PACKAGE" \
| command tac - \
| command xargs -iNAME pear uninstall -n horde/NAME

Listez les fichiers Horde installés avec:

pear list-files horde/horde

Remerciements

ebuchon a écrit :
12/12/2014 21:05
Bonjour, je suis très intéressée par votre tutoriel. Loin d'être experte comme vous, je me demandais si les prérequis sont nécessaires ou conseillés. L'ampleur des prérequis m'effraie surtout que je n'en connais pas la moitié. Enfin si mais pas de façon aussi aboutie (a2tools, FPM, APC ????). N-y a-t-il pas moyen de faciliter l'installation de horde ? d'autant plus que sur la documentation de horde je ne vois pas les prérequis que vous spécifiez. Je vous remercie d'avance. Cordialement, Buchon Emilie
Pierre-Yves Landuré a écrit :
13/12/2014 14:28
Bonjour,

mon tutoriel est conçu pour être utilisé en copier coller et pour fournir l'installation la plus complète possible de Horde.

a2tools, php-tools et mysqL-tools sont des outils spécifiques à ce site que j'ai écrit en bash pour automatiser au maximum la gestion de Apache 2, PHP et MySQL.

PHP-FPM est une méthode d'installation de PHP qui fournit de meilleures performances que le module Apache2 (libapache2-mod-php5), mais vous pouvez utiliser le module Apache si vous préférez. PHP APC est une bibliothèque d'amélioration des performances de PHP et vraiment nécessaire pour profiter pleinement de Horde.

Il en va de même pour l'ensemble des autres dépendances.
Ajouter un commentaire

Vous pouvez ajouter un commentaire en complétant le formulaire ci-dessous. Le format doit être plain text. Les url et les courriels sont transformés en liens cliquables. Les commentaires sont modérés.