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.
mail webmail horde