Installer Horde Groupware Webmail Edition sur Debian
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:
- a2tools, l'outil d'administration simplifiée d'Apache 2.
- un serveur HTTP avec support du PHP, comme décrit par Installer PHP-FPM sur Debian.
- le cache d'opcode PHP APC, comme décrit par Installer le module PHP APC sur Debian.
- php-tools, l'outil de configuration simplifiée de PHP.
- un serveur MySQL, comme décrit par Installer et configurer MySQL sur Debian.
- mysql-tools, l'outil d'administration simplifiée de MySQL sur l'hôte local (et l'hôte du serveur MySQL, si différent).
- un serveur Memcached, comme décrit par Installer Memcached sur Debian.
Ce guide recommande:
- la mise en place d'une alerte pour les mises à jour de Horde via PEAR, comme décrit par Surveiller les mises à jour PEAR.
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
- Merci aux développeurs de Horde.
- Merci aux auteurs du document Installing Horde Groupware Webmail Edition.
- Merci à mrubinsk, webmestre du site The Upstair Room, sur irc.freenode.net#horde.
- Merci aux auteurs de l'article Horde Security Tips.
- Merci à David Mercereau pour Horde webmail/groupware installation standalone via pear.
- Merci à Simon and Kate pour Horde Turba with up to 3 Email Addresses.