Par Pierre-Yves Landuré — Dernière modification 14/05/2009 21:55 http://howto.landure.fr/gnu-linux/debian-4-0-etch/installer-horde-groupware-webmail-edition-sur-une-debian-4-0-etch
Le projet Horde vise a créer un groupware libre. Il est basé sur PHP et propose l'un des meilleurs WebMail du moment. Cet article vous guide lors de son installation sur Debian 4.0 Etch ou 5.0 Lenny. Installation
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. C'est ce dernier que nous allons installer dans ce guide. En premier lieu, nous installons les
/usr/bin/apt-get install libapache2-mod-php5 php5-gd php5-mysql php5-mcrypt php5-imap php5-tidy php5-cli php-pear
Afin que Horde fonctionne sans soucis, nous augmentons la limite d'utilisation mémoire du module PHP d'Apache 2 :
/bin/sed -i -e 's/memory_limit = .*/memory_limit = 128M/' /etc/php5/apache2/php.ini
De plus, vous pouvez augmenter les performances de Horde en installant memcached :
apt-get install memcached php5-memcache
Nous mettons à jour l'installation de PEAR :
/usr/bin/pear channel-update pear.php.net /usr/bin/pear upgrade-all
Nous installons maintenant les extensions PEAR et PECL recommandées par Horde. En premier lieu, nous installons les logiciels nécessaires à la compilation de l'extension :
/usr/bin/apt-get install libmagic-dev libgeoip-dev make php5-dev
Et nous compilons et installons les extensions PECL :
* fileinfo : Cette extension permet d'améliorer la gestion des pièces jointes.
/usr/bin/pecl install fileinfo /bin/echo "extension=fileinfo.so" | /usr/bin/tee /etc/php5/conf.d/fileinfo.ini
* lzf : Cette extension permet de réduire la taille des sessions (et donc l'occupation mémoire du serveur).
/usr/bin/pecl install lzf /bin/echo "extension=lzf.so" | /usr/bin/tee /etc/php5/conf.d/lzf.ini
* geoip : Cette extension améliore la géolocalisation des adresses IP. Cependant, du à des problèmes de version, elle n'est pas installable simplement sur Etch. Si vous utilisez ce guide sur Debian 5.0 Lenny, vous n'êtes pas soumis à cette limitation :
if [ "$(/bin/cat /etc/debian_version)" != "4.0" ]; then /usr/bin/pecl install geoip /bin/echo "extension=geoip.so" | /usr/bin/tee /etc/php5/conf.d/geoip.ini fi
* idn : Cette extension apporte le support des noms de domaines internationalisés. Cependant, à l'heure ou j'écris ce guide, cette extension est encore en Beta.
Une fois ces extensions installées, redémarrez votre serveur Apache pour les prendre en compte :
/etc/init.d/apache2 force-reload
Nous renseignons la dernière version de Horde Groupware Webmail Edition :
VERSION=1.2.2
Nous téléchargeons Horde Groupware Webmail Edition :
/usr/bin/wget http://ftp.horde.org/pub/horde-webmail/horde-webmail-$VERSION.tar.gz \
--output-document=/tmp/horde-webmail-$VERSION.tar.gz
Nous décompressons le fichier téléchargé :
/bin/tar --directory /opt -xzf /tmp/horde-webmail-$VERSION.tar.gz
Nous renommons le dossier ainsi obtenu :
/bin/mv /opt/horde-webmail-$VERSION /opt/horde-webmail
Et nous le rendons disponible via le serveur HTTP :
/bin/ln -s /opt/horde-webmail /var/www/
Remarque : Si vous souhaitez que Horde soit disponible à la racine d'un domaine dédié (pour obtenir une URL du type http://mail.domaine.com/), vous trouverez les informations nécessaires à la mise en place d'une telle configuration dans mon guide Installer et configurer Apache2 sur Debian 4.0 Etch.
Nous pouvons maintenant passer à la configuration de ce logiciel.
Remarque : Horde nécessite l'accès à une base de donnée. Si vous le souhaitez, vous pouvez installer un serveur MySQL ou créer une base de donnée sur un tel serveur en suivant mon guide MySQL sur Debian 4.0 Etch ou 5.0 Lenny.
La configuration de Horde est assez complexe tellement sont nombreux les paramètres. Je vous invite donc à lire la documentation de Horde pour que votre système soit configuré aux petits oignons. Ce guide se contente de mettre en place une configuration fonctionnelle, mais basique. Pour ce faire nous allons utiliser le petit script fourni avec Horde :
/usr/bin/php /opt/horde-webmail/scripts/setup.php
Répondez aux questions posées par ce script.
Remarque : Dans la section "Configure database settings", choisissez "mysqli" comme type de base de données.
Important : si votre serveur IMAP n'est pas sur le serveur ou est installé Horde, ou s'il nécessite une identification par TLS, vous devez modifier la configuration de IMP :
/usr/bin/vim /opt/horde-webmail/imp/config/servers.php
Plusieurs valeurs sont possibles pour l'entrée 'protocol' :
Source : Merci à Daniel E. Markle pour son article Horde/IMAP and IMAP/TLS.
Pour information, voici la configuration que j'utilise pour brancher Horde avec un serveur Cyrus IMAP installé à l'aide du guide Installer le serveur IMAP Cyrus sur Debian 4.0 Etch et 5.0 Lenny.
$servers['imap'] = array(
'name' => 'IMAP Server',
'server' => 'cyrus.domain.xen',
'hordeauth' => false,
'protocol' => 'imap/tls/novalidate-cert',
'port' => 143,
'quota' => array(
'driver' => 'imap',
'params' => array(),
),
'acl' => array(
'driver' => 'rfc2086',
),
);
Une fois la configuration terminée, vous pouvez vérifier qu'il ne manque rien en visitant :
Remarque : Ne tenez pas compte de l'erreur sur la limite mémoire. 128 Mo devraient suffire. Domaine d'email par défaut
Nous allons maintenant configurer l'email de contact utilisé lorsqu'un utilisateur rencontre des problème, et le domaine des email des utilisateurs de Horde, lorsque ce dernier ne peut le détecter. Pour ce faire, renseignez les valeurs à appliquer :
CONTACT_MAIL=contact@votre-domaine.com DEFAULT_MAIL_DOMAIN=votre-domaine.com
Appliquez maintenant ces paramètres :
/bin/sed -i -e "s/^\(.*problems.*email.*=\).*;/\1 '${CONTACT_MAIL}';/" \
-e "s/^\(.*problems.*maildomain.*=\).*;/\1 '${DEFAULT_MAIL_DOMAIN}';/" \
/opt/horde-webmail/config/conf.php
* Fichier log
Nos modifions l'emplacement du fichier log de horde :
/bin/mkdir --parent /var/log/horde /bin/chown www-data:www-data /var/log/horde /bin/chmod 0750 /var/log/horde /bin/sed -i -e 's/\/tmp\/horde\.log/\/var\/log\/horde\/horde\.log/' /opt/horde-webmail/config/conf.php
Nous mettons en place la rotation de ces fichiers log :
/bin/cp /opt/horde-webmail/scripts/horde.logrotate /etc/logrotate.d/horde
Et nous l'adaptons à notre besoin :
/bin/sed -i -e 's|/var/log/horde\.log|/var/log/horde/horde.log|' /etc/logrotate.d/horde
* Cache mémoire
En premier lieu, assurez vous d'avoir installer le cache mémoire :
apt-get install memcached php5-memcache /etc/init.d/apache2 force-reload
Nous activons le support de memcached :
/bin/sed -i -e 's/^\(.*memcache.*enabled.*=\).*;/\1 true;/' /opt/horde-webmail/config/conf.php
Et nous le configurons :
/bin/sed -i -e "/^\(.*conf.*memcache.*enabled.*=\).*/i\
\$conf['memcache']['hostspec'] = array('localhost');\n\
\$conf['memcache']['port'] = array('11211');\n\
\$conf['memcache']['weight'] = array();\n\
\$conf['memcache']['persistent'] = false;\n\
\$conf['memcache']['compression'] = false;\n\
\$conf['memcache']['large_items'] = true;" /opt/horde-webmail/config/conf.php
* Emplacement du cache
Nous créons un dossier de cache sécurisé pour Horde :
/bin/mkdir /var/cache/horde /bin/chown www-data:root /var/cache/horde /bin/chmod 0700 /var/cache/horde
Et nous configurons Horde afin qu'il l'utilise :
/bin/sed -i -e "/^\(.*conf.*umask.*=\).*/a\ \$conf['tmpdir'] = '/var/cache/horde';" /opt/horde-webmail/config/conf.php
De même, nous configurons le nettoyage régulier des fichiers caches générés par Horde :
/bin/cp /opt/horde-webmail/scripts/temp-cleanup.cron /etc/cron.daily/horde-temp-cleanup /bin/chmod +x /etc/cron.daily/horde-temp-cleanup /bin/sed -i -e 's/^\(TMP_DIR=\).*/\1\/var\/cache\/horde/' /etc/cron.daily/horde-temp-cleanup
* Envoi des emails d'alerte
Nous configurons maintenant l'envoi des emails d'alertes par Horde :
/bin/echo "# /etc/cron.d/horde : crontab fragment for horde
# Horde Alarms
*/5 * * * * /usr/bin/php /opt/horde-webmail/scripts/alarms.php" \
| /usr/bin/tee /etc/cron.d/horde
* Outil d'administration des sessions
Si vous souhaitez que l'outil d'administration des sessions de Horde soit fonctionnel, exécutez la ligne de commande suivante :
/bin/chown www-data /var/lib/php5
Attention : Ceci peut engendrer des problèmes de sécurité, aussi je ne le recommande pas. Gestion des pièces jointes
Si vous souhaitez pouvoir visionner vos pièces jointes directement dans Horde sans avoir à les télécharger, voici la ligne de commande vous permettant d'installer les logiciels nécessaires :
/usr/bin/apt-get install unrtf libwpd-tools xlhtml source-highlight ppthtml rpm wv enscript
Une fois ceci fait, nous corrigeons la configuration des chemins vers ces utilitaires dans Horde :
sed -i -e 's/\/usr\/local\/bin\/xlhtml/\/usr\/bin\/xlhtml/' \
-e 's/\/usr\/local\/bin\/ppthtml/\/usr\/bin\/ppthtml/' \
/opt/horde-webmail/config/mime_drivers.php
Enfin, nous activons les outils rendu disponibles :
sed -i -e "s/\/\/ \('deb'\)/\1/g" \
-e "s/\/\/ \('enscript'\)/\1/g" \
-e "s/\/\/ \('msword'\)/\1/g" \
-e "s/\/\/ \('msexcel'\)/\1/g" \
-e "s/\/\/ \('mspowerpoint'\)/\1/g" \
-e "s/\/\/ \('rpm'\)/\1/g" \
-e "s/\/\/ \('rtf'\)/\1/g" \
-e "s/\/\/ \('srchighlite'\)/\1/g" \
-e "s/\/\/ \('webcpp'\)/\1/g" \
-e "s/\/\/ \('wordperfect'\)/\1/g" \
/opt/horde-webmail/config/mime_drivers.php
Enfin, nous indiquons à Horde ou se trouve la base de donnée des informations Mime :
/bin/sed -i -e "/^\(.*conf.*sessionhandler.*type.*=\).*/a\ \$conf['mime']['magic_db'] = '/usr/share/file/magic';" /opt/horde-webmail/config/conf.php
Afin de rendre la lecture des emails plus agréable, nous allons améliorer la configuration par défaut d'IMP : Affichage en ligne des messages HTML
Par défaut, vous devez télécharger les messages au format HTML afin de pouvoir les lire. Ce n'est pas très agréable. Les lignes de commande suivantes modifient cette configuration :
/bin/sed -i -e '/.*mime_drivers.*imp.*html.*=.*array.*/{n;d}' /opt/horde-webmail/imp/config/mime_drivers.php
/bin/sed -i -e "/.*mime_drivers.*imp.*html.*=.*array.*/a\
'inline' => true," /opt/horde-webmail/imp/config/mime_drivers.php
Afin d'adapter les dossiers utilisé par Horde à ceux utilisé par Thunderbird, nous allons modifier quelques options :
* Le dossier des courriers envoyés :
/bin/sed -i -e "/.*_prefs.*'sent_mail_folder'.*/,/^\([^\/]*'value'\).*/{s|^\([^/]*'value'\).*|\1 => 'INBOX/Sent',|}" \
/opt/horde-webmail/imp/config/prefs.php
* Le dossier des brouillons :
/bin/sed -i -e "/.*_prefs.*'drafts_folder'.*/,/^\([^\/]*'value'\).*/{s|^\([^/]*'value'\).*|\1 => 'INBOX/Drafts',|}" \
/opt/horde-webmail/imp/config/prefs.php
* Le dossier de la corbeille :
/bin/sed -i -e "/.*_prefs.*'trash_folder'.*/,/^\([^\/]*'value'\).*/{s|^\([^/]*'value'\).*|\1 => 'INBOX/Trash',|}" \
/opt/horde-webmail/imp/config/prefs.php
* Le dossier des indésirables :
/bin/sed -i -e "/.*_prefs.*'spam_folder'.*/,/^\([^\/]*'value'\).*/{s|^\([^/]*'value'\).*|\1 => 'INBOX/Junk',|}" \
/opt/horde-webmail/imp/config/prefs.php
Si vous n'utilisez pas Thunderbird, mais Outlook, voici les lignes de commande à utiliser :
* Le dossier des courriers envoyés :
/bin/sed -i -e "/.*_prefs.*'sent_mail_folder'.*/,/^\([^\/]*'value'\).*/{s|^\([^/]*'value'\).*|\1 => '\&AMk-l\&AOk-ments envoy\&AOk-s',|}" \
/opt/horde-webmail/imp/config/prefs.php
* Le dossier des brouillons :
/bin/sed -i -e "/.*_prefs.*'drafts_folder'.*/,/^\([^\/]*'value'\).*/{s|^\([^/]*'value'\).*|\1 => 'Brouillons',|}" \
/opt/horde-webmail/imp/config/prefs.php
* Le dossier de la corbeille :
/bin/sed -i -e "/.*_prefs.*'trash_folder'.*/,/^\([^\/]*'value'\).*/{s|^\([^/]*'value'\).*|\1 => '\&AMk-l\&AOk-ments supprim\&AOk-s',|}" \
/opt/horde-webmail/imp/config/prefs.php
Afin de rendre disponible la prévisualisation en ligne des pièces jointe, exécutez la commande suivante :
/bin/sed -i -e 's/^\(.*mailbox.*show_preview.*=\).*;/\1 true;/' /opt/horde-webmail/imp/config/conf.php
Afin que l'affichage des messages soit plus réactif, il vous faut activer l'utilisation du cache par IMP. Pour ce faire, exécutez la commande suivante :
/bin/sed -i -e 's/^\(.*mboxcache.*use_mboxcache.*=\).*;/\1 true;/' /opt/horde-webmail/imp/config/conf.php
Et de le configurer :
/bin/sed -i -e "/^\(.*conf.*mboxcache.*use_mboxcache.*=\).*/i\ \$conf['mboxcache']['use_compress'] = false;\n\ \$conf['mboxcache']['preview_size'] = 1000;\n\ \$conf['mboxcache']['lifetime'] = 2592000;" /opt/horde-webmail/imp/config/conf.php
De même, pour cacher la liste des messages :
/bin/sed -i -e 's/^\(.*mlistcache.*use_mlistcache.*=\).*;/\1 true;/' /opt/horde-webmail/imp/config/conf.php /bin/sed -i -e "/^\(.*conf.*mlistcache.*use_mlistcache.*=\).*/i\ \$conf['mlistcache']['lifetime'] = 604800;" /opt/horde-webmail/imp/config/conf.php
Affichage de la priorité et de la présence de pièces jointes dans la liste des messages
Pour afficher la priorité et la présence de pièces jointes dans la liste des messages, utilisez la commande suivante (l'activation du cache est recommandée) :
/bin/sed -i -e 's/^\(.*mailbox.*show_attachments.*=\).*;/\1 true;/' \
-e 's/^\(.*mailbox.*show_xpriority.*=\).*;/\1 true;/' \
/opt/horde-webmail/imp/config/conf.php
Mise en cache du JavaScript et du CSS
Afin d'accélérer le chargement des pages, il est possible de créer des fichiers Javascripts et CSS allégé. C'est ce que fait cette configuration :
* Pour le cache JavaScript :
/bin/sed -i -e 's/^\(.*server.*cachejs.*=\).*;/\1 true;/' /opt/horde-webmail/imp/config/conf.php /bin/sed -i -e "/^\(.*conf.*server.*cachejs.*=\).*/i\ \$conf['server']['cachejsparams']['timeout'] = 86400;\n\ \$conf['server']['cachejsparams']['mtime'] = false;" /opt/horde-webmail/imp/config/conf.php
* Pour le cache CSS :
/bin/sed -i -e 's/^\(.*server.*cachecss.*=\).*;/\1 true;/' /opt/horde-webmail/imp/config/conf.php /bin/sed -i -e "/^\(.*conf.*server.*cachecss.*=\).*/i\ \$conf['server']['cachecssparams']['timeout'] = 86400;\n\ \$conf['server']['cachecssparams']['mtime'] = false;" /opt/horde-webmail/imp/config/conf.php
Remarque : Si DIMP est présent, vous pouvez activer le cache du JavaScript et CSS pour cette interface :
* Pour le cache JavaScript :
/bin/sed -i -e 's/^\(.*server.*cachejs.*=\).*;/\1 true;/' /opt/horde-webmail/dimp/config/conf.php /bin/sed -i -e "/^\(.*conf.*server.*cachejs.*=\).*/i\ \$conf['server']['cachejsparams']['timeout'] = 86400;\n\ \$conf['server']['cachejsparams']['mtime'] = false;" /opt/horde-webmail/dimp/config/conf.php
* Pour le cache CSS :
/bin/sed -i -e 's/^\(.*server.*cachecss.*=\).*;/\1 true;/' /opt/horde-webmail/dimp/config/conf.php /bin/sed -i -e "/^\(.*conf.*server.*cachecss.*=\).*/i\ \$conf['server']['cachecssparams']['timeout'] = 86400;\n\ \$conf['server']['cachecssparams']['mtime'] = false;" /opt/horde-webmail/dimp/config/conf.php
Vous trouverez dans cette sections diverses petites choses qui sans être obligatoires, amélioreront grandement votre Horde. Dimp comme application par défaut
Dans la configuration standard de Horde, Imp est l'application par défaut. Si vous souhaitez utiliser Dimp sans trop vous fouler, voici la ligne de commande à appliquer pour en faire le défaut de Horde :
/bin/sed -i -e "/\$_COOKIE\['default_imp_view'\]/,/\$browser→isMobile().*'imp'/{ s/^\(.*$browser→isMobile().*\)'imp'\(.*\)\$/\1'dimp'\2/ ;}" /opt/horde-webmail/imp/login.php
* Fortunes
Pour avoir un message d'accueil sympa lorsque vous vous identifiez. Commencez par installer le logiciel nécessaire :
/usr/bin/apt-get install fortunes-fr
Et configurez Horde pour l'utiliser :
/bin/sed -i -e "/^\(.*conf.*portal.*fixed_blocks.*=\).*/a\ \$conf['fortune']['exec_path'] = '/usr/games/fortune';" /opt/horde-webmail/config/conf.php
* Correction orthographique
Afin de disposer d'un correcteur d'orthographe lors de la rédaction de vos messages, commencez par installer aSpell :
/usr/bin/apt-get install aspell-en aspell-fr
Et configurez IMP pour l'utiliser :
/bin/sed -i \ -e "s/^\(.*spell.*driver.*=\).*;/\1 'aspell';/" \ -e "/^\(.*conf.*spell.*driver.*=\).*/i\ \$conf['spell']['path'] = '/usr/bin/aspell';" /opt/horde-webmail/imp/config/conf.php
* Encryption
Si vous souhaitez disposer du support de GnuPG pour crypter vos messages, commencez par installer GnuPG si besoin :
/usr/bin/apt-get install gnupg
Et configurez IMP pour l'utiliser :
/bin/sed -i -e "/^\(.*conf.*utils.*gnupg_keyserver.*=\).*/i\ \$conf['utils']['gnupg'] = '/usr/bin/gpg';" /opt/horde-webmail/imp/config/conf.php
De même, nous configurons Mnemo pour l'utiliser :
/bin/sed -i -e "/^\(.*conf.*menu.*print.*=\).*/i\ \$conf['utils']['gnupg'] = '/usr/bin/gpg';" /opt/horde-webmail/mnemo/config/conf.php
* Utilisation de OpenSSL
Bon, la j'ai pas très bien compris à quoi cela pouvait servir… mais si cette fonctionnalité vous intéresse, voici comment l'activer. En premier lieu, installez OpenSSL :
/usr/bin/apt-get install openssl ca-certificates
Et configurez IMP pour l'utiliser :
/bin/sed -i -e "/^\(.*conf.*utils.*gnupg_timeout.*=\).*/a\ \$conf['utils']['openssl_cafile'] = '/etc/ssl/certs';\n\ \$conf['utils']['openssl_binary'] = '/usr/bin/openssl';" /opt/horde-webmail/imp/config/conf.php
* Autres
Voici une liste non exhaustive de ce que je ne documente pas dans ce guide, mais que vous pouvez trouver dans l'interface de configuration de Horde :
Je vous invite a explorer la configuration de Horde si ces outils vous intéressent. Configuration pour Cyrus Imap
Si vous disposez d'un serveur Cyrus Imap, vous souhaitez probablement que Horde vous permette de configurer vos filtres de messages via Sieve. Pour ce faire, nous devons installer un paquet PEAR supplémentaire :
/usr/bin/pear install Net_Sieve
Une fois ceci fait, vous devez modifier le backend sieve de Ingo :
/usr/bin/vim /opt/horde-webmail/ingo/config/backends.php
Vous trouverez dans ce fichier un backend nommé 'sieve'. Il vous suffit normalement d'adapter les informations 'preferred' et 'hostspec' à vos besoins, puis de supprimer ou commenter les autres backends pour permettre à Ingo d'utiliser Sieve comment moteur de filtrage.
Il vous faut aussi modifier le parmètre 'hordeauth', il faut le passer de "true" à "'full'" :
'hordeauth' ⇒ 'full',
* Liste noire des utilisateurs
Si vous souhaitez disposer d'une mécanique d'interdiction d'utilisation de Horde pour certain utilisateurs, vous pouvez le faire en utilisant le hook "preauthenticate". Pour ce faire, en premier lieu, autorisez l'utilisation de ce hook:
/bin/sed -i -e "s/^\(.*hooks.*preauthenticate.*=\).*;/\1 true;/" /opt/horde-webmail/config/conf.php
Ajoutez ensuite un paramètre de configuration pour la liste noire des utilisateurs :
/bin/sed -i -e "/^\(.*auth.*driver.*=\).*/a\ \$conf['auth']['blacklist'] = array( /* 'my_blacklisted_login', */ );" /opt/horde-webmail/config/conf.php
Et enfin, ajoutez la fonction de hook personnalisée au fichier hooks.php :
echo "
// Here is an _horde_hook_preauthenticate that allow you to black list logins.
if (! function_exists('_horde_hook_preauthenticate')) {
function _horde_hook_preauthenticate(\$userID, \$credential, \$realm)
{
return ! in_array(\$userID, \$GLOBALS['conf']['auth']['blacklist']);
}
}" | /usr/bin/tee -a /opt/horde-webmail/config/hooks.php
Par la suite, vous pouvez ajouter un nouveau login à la liste noire avec les commandes suivantes. Commencez par renseignez le login à blacklister :
LOGIN=blacklisted_user
Et exécutez la commande suivante pour l'ajouter à la liste noire :
/bin/sed -i -e "s/^\(.*auth.*blacklist.*=.*\));.*/\1 '$LOGIN',);/" /opt/horde-webmail/config/conf.php
Utilisation avec reverse proxy
Si vous souhaitez utiliser Horde derrière un reverse proxy Apache, voici les modifications à effectuer (pour un serveur intermédiaire utilisant le HTTPS et donc Horde est la racine):
* dans le fichier /opt/horde-webmail/config/conf.php :
$conf['use_ssl'] = 1;
$conf['server']['name'] = $_SERVER['SERVER_NAME'];
$conf['server']['port'] = 443;
Résolution des problèmes
Si vous rencontrez des problèmes avec votre configuration de Horde, il est possible qu'augmenter le niveau de verbosité des fichiers journaux vous aide. Pour ce faire, utilisez cette ligne de commande :
/bin/sed -i -e 's/^\(.*log.*priority.*=\).*;/\1 PEAR_LOG_DEBUG;/' \
/opt/horde-webmail/config/conf.php
Vous pouvez alors observer le fichier journal de Horde à l'aide de la commande :
/usr/bin/tail -n 50 -f /var/log/horde/horde.log
Une fois le problème diagnostiqué correctement, vous pouvez revenir au niveau normal de verbosité du fichier journal à l'aide de cette commande :
/bin/sed -i -e 's/^\(.*log.*priority.*=\).*;/\1 PEAR_LOG_NOTICE;/' \
/opt/horde-webmail/config/conf.php
* Sécurisation
Attention : n'effectuez cette étape que lorsque votre Horde est parfaitement configuré. Mais avant de le rendre accessible aux internautes.
Afin de rendre Horde plus robuste aux attaques, nous allons modifier les permissions des fichiers de configuration :
/usr/bin/find /opt/horde-webmail -type f -wholename "*config/*" | /usr/bin/xargs /bin/chown -R root:www-data /usr/bin/find /opt/horde-webmail -type f -wholename "*config/*" | /usr/bin/xargs /bin/chmod 0440
Nous désactivons les fichiers test.php :
/usr/bin/find /opt/horde-webmail -type f -name "test.php" | /usr/bin/xargs /bin/chmod a-rwx
Nous restreignons l'accès aux scripts de configuration à l'utilisateur root :
/usr/bin/find /opt/horde-webmail -type d -name "scripts" | /usr/bin/xargs /bin/chown -R root:root /usr/bin/find /opt/horde-webmail -type d -name "scripts" | /usr/bin/xargs /bin/chmod -R go-rwx
Et pour faire bonne mesure, nous interdisons la modification de l'ensemble du code source de Horde :
/bin/chmod -R ugo-w /opt/horde-webmail
Nous désactivons l'affichage de code PHP aux utilisateurs lors d'erreurs :
/bin/echo "# Secure PHP for horde expose_php = Off display_errors = Off log_errors = On register_globals = Off " | tee /etc/php5/conf.d/horde.ini
Et nous redémarrons Apache 2 pour prendre en compte cette configuration :
/etc/init.d/apache2 force-reload
Je vous recommande également d'utiliser Horde à travers une connexion HTTPS afin que les mots de passe des comptes email ne circulent pas en clair sur le réseau. Amélioration de la sécurité à l'aide d'Apache
Si vous le souhaitez, il est possible d'améliorer encore la sécurité de votre installation Horde en configurant proprement Apache.
Dans le fichier qui correspond à votre installation de Horde, ajoutez ces lignes. Elles font en sorte que les dossiers de configuration de Horde restent privés :
# Deny access to files that are not served directly by the webserver <DirectoryMatch "^/opt/horde-webmail/(.*/)?(config|lib|locale|po|scripts|templates)/(.*)?"> order deny,allow deny from all </DirectoryMatch>
Une fois ceci fait, n'oubliez pas de recharger la configuration d'Apache :
/etc/init.d/apache2 force-reload