Zimbra : Quotas avec Policyd

L’installation de Policyd est une obligation en terme de sécurité sur un serveur Zimbra. Ce plugin, une fois activé, permet de gérer les quotas, le contrôle d’accès, la vérification de liste SPF et le greylisting.

Nous allons implémenter le module de façon à ce qu’il stocke ses configurations dans une base sqlite, puis nous allons installer une interface web qui, en interaction avec la base de donnée, nous permettra de configurer Policyd intuitivement.

Installation et configuration

L’installation du module est assez simple puisqu’il est embarqué dans zimbra, il suffit simplement de l’activer via la commande zmprov.

# su – zimbra
$ zmprov ms `zmhostname` +zimbraServiceInstalled cbpolicyd +zimbraServiceEnabled cbpolicyd

Puis on met en place la webui en créant un lien symbolique dans le répertoire apache de zimbra

$ su - root
# cd /opt/zimbra/httpd/htdocs/ && ln -s ../../cbpolicyd/share/webui

Pour que le plugin fonctionne avec sqlite il faut modifier un fichier de configuration. Commenter toutes les lignes comportant #$DB_DSN et ajouter la ligne suivante avant $DB_USER

$DB_DSN="sqlite:/opt/zimbra/data/cbpolicyd/db/cbpolicyd.sqlitedb";

De la manière suivante

#$DB_DSN="mysql:host=localhost;dbname=cluebringer";
$DB_DSN="sqlite:/opt/zimbra/data/cbpolicyd/db/cbpolicyd.sqlitedb";
$DB_USER="root";

Il faudra ensuite redémarrer tous les services de Zimbra, ainsi qu’Apache et vous pourrez accéder à l’interface à partir de l’URL : http://adresseip:7780/webui/index.php

Sécurisation

La première étape de sécurisation est sans aucun doute la plus importante. Ce service étant accessible à tous de base il faut absolument fermer le port sur l’extérieur et limiter son ouverture à des adresses IP spécifiques à partir d’un pare feu. Le port utilisé par Policyd est 7780.

Dans le répertoire de la webui il faut créer un .htaccess et un .htpasswd, le .htaccess contiendra la configuration qui fera appel au .htpasswd qui contient le couple utilisateur/mot de passe.

# vi .htaccess
AuthUserFile /opt/zimbra/cbpolicyd-2.1.0-beta/share/webui/.htpasswd
AuthGroupFile /dev/null
AuthName "User and Password"
AuthType Basic
require valid-user
# touch .htpasswd
htpasswd –c .htpasswd username

Il faut également éditer le fichier de configuration Apache de Zimbra en ajoutant les lignes suivantes à la fin du fichier :

# vi /opt/zimbra/conf/httpd.conf
Alias /webui /opt/zimbra/cbpolicyd-2.1.0-beta/share/webui/
AllowOverride AuthConfig
Order Deny,Allow
Allow from all

Puis on redémarre
apache pour appliquer la configuration.

su - zimbra -c "zmapachectl restart"

Configuration des quotas

De la page d’accueil, cliquer sur « Quotas » > « Configure » (1).
Capture
De là vous pouvez créer une nouvelle règle (2) ou modifier les limites d’une règle existante (3).

Création
Sans titre
La fenêtre de création est plutôt parlante mais je vais détailler ce qui nous intéresse :

  1. Nom : Le nom de la règle. Pour moi, {tracktype}-{delay} (par exemple : inbound-minute)
  2. Track : La valeur que policyd doit surveiller pour cette règle de quota
  3. Period : La durée sur laquelle est défini le quota, en secondes
  4. Verdict : Action effectué avec un mail atteignant la limite
  5. Data : Raison inclue dans le message d’erreur lors d’un REJECT

Limite
Sans titre2
Pour créer une limite il suffit simplement de créer sur add une fois dans l’interface limit(3). Comme pour la création d’un quota on va détailler les champs qui nous intéresse :

  1. Type : Nombre de message ou taille total
  2. Counter Limit : Compteur avant que la limite soit atteinte