Il est possible de limiter l'accès au WebMail à une liste d'utilisateurs.

Pour cela, nous utilisons les fonctions “hooks” du framework Horde. Plus précisément, la fonction preauthenticate. Dans cette fonction, nous allons comparer le login en cours à une regexp (en fonction de la liste autorisée), puis laisser l'authentification se poursuivre s'il y'a un match. Il serait possible de faire l'inverse, c-a-d d'interdire l'accès seulement à une liste d'utilisateurs précise.

Dans cet exemple, nous n'autorisons que les utilisateurs user1, user2 et user3

Dans un premier temps, nous allons créer la fonction preauthenticate

mkdir -p /etc/e-smith/templates-custom/home/httpd/html/horde/config/hooks.php
ln -s /etc/e-smith/templates-default/template-begin-php /etc/e-smith/templates-custom/home/httpd/html/horde/config/hooks.php/template-begin
ln -s /etc/e-smith/templates-default/template-end-php /etc/e-smith/templates-custom/home/httpd/html/horde/config/hooks.php/template-end
cat <<"EOF" >/etc/e-smith/templates-custom/home/httpd/html/horde/config/hooks.php/100PreAuthHook
if (!function_exists('_horde_hook_preauthenticate')) \{
function _horde_hook_preauthenticate($userID, $credential, $realm)
\{
$ret = false;
if (preg_match('/^(user1|user2|user3)@{"$DomainName";}$/',"$userID"))\{
$ret = true;
\}
return $ret;
\}
\}
EOF

Maintenant, il reste à activer ce hook:

mkdir -p /etc/e-smith/templates-custom/home/httpd/html/horde/config/conf.php/
sed -e "s/\['preauthenticate'\] = false/\['preauthenticate'\] = true/" /etc/e-smith/templates/home/httpd/html/horde/config/conf.php/320Hooks > /etc/e-smith/templates-custom/home/httpd/html/horde/config/conf.php/320Hooks

Puis appliquer les changements:

expand-template /home/httpd/html/horde/config/conf.php
expand-template /home/httpd/html/horde/config/hooks.php

: Il faudrait faire évoluer ces templates pour tirer la listes des utilisateurs autorisé depuis une clef de la DB.