# Zimbra

## Présentation

Zimbra est un logiciel serveur collaboratif et de messagerie open-source - messagerie, calendrier de groupe, contacts, messagerie instantanée, stockage de fichiers et gestion de documents web. Le serveur de messagerie et calendrier Zimbra est disponible pour Linux, Mac OS X et les plateformes de virtualisation. Zimbra se synchronise avec les smartphones (iPhone, BlackBerry) et les clients lourds de bureau tels Outlook et Thunderbird. Zimbra propose aussi l'archivage et discovery for compliance. Zimbra peut être déployé sur site ou hébergé telle une messagerie.

Zimbra utilise un protocole de pré-authentification pour s'intégrer à un SSO. This protocol is implemented in an LL::NG specific Handler.

Zimbra peut aussi être connecté à LL::NG via le protocole SAML (voir le blog de Zimbra).
Pour l'instant, Zimbra n'est pas supporté par le handler Nginx. Il faut utiliser Apache.

## Configuration

L'intégration avec LL::NG est la suivante :

- Une URL spéciale est declarée dans le menu des applications (telle http://zimbra.example.com/zimbrasso)
- Un handler Zimbra est appelé
- Le handler construit la requête de pré-authentification et redirige l'utilisateur sur l'URL de pré-authentification de Zimbra
- Ensuite Zimbra génère son cookie SSO dans le navigateur de l'utilisateur

### Clef de pré-authentification Zimbra

Il est nécessaire de récupérer une clef de pré-authentification auprès du serveur Zimbra.

Voir comment le faire sur le wiki Zimbra.

### Application Zimbra dans le menu

Choisir par exemple http://zimbra.example.com/zimbrasso comme URL SSO et insérer la dans le menu application.

### Hôte virtuel Zimbra

#### Apache

Configurer l'hôte virtuel Zimbra comme n'importe quel autre hôte virtuel protégé mais utiliser le handler Zimbra au lieu du handler par défaut.

    PerlModule Lemonldap::NG::Handler::Specific::ZimbraPreAuth
    <VirtualHost *>
            ServerName zimbra.example.com

           # Load Zimbra Handler
           PerlHeaderParserHandler Lemonldap::NG::Handler::Specific::ZimbraPreAuth
           ...

    </VirtualHost>

#### Nginx

Le handler Zimbra ne peut être utilisé avec in Nginx pour l'instant.

### Hôte virtuel Zimbra dans le manager

Aller dans le manager et créer un nouvel hôte virtuel pour Zimbra.

Configurer simplement la règle d'accès.

### Paramètres du handler Zimbra

Les paramètres Zimbra sont les suivants :

- Clef de pré-authentification key : celle récupérée de la commande zmprov
- clef de session compte : champ de session utilisé comme compte utilisateur Zimbra (par défaut : uid)
- Type de compte : pour Zimbra, ce peut être name, id ou foreignKey (par défaut : id)
- URL de pré-authentification : URL de pré-authentification Zimbra, soit l'URL complète (ex : http://zimbra.lan/service/preauth), soit seulement le chemin absolu (ex : /service/preauth) (par défaut : /service/preauth)
- Expression de correspondance de l'URL SSO : expression régulière de correspondance de l'URL SSO (par défaut : ^/zimbrasso$)

Suite au changement de l'API du handler dans la version 1.9, il est nécessaire de définir ces attributs dans le fichier `lemonldap-ng.ini` et non dans le Manager, par exemple:

    [handler]
    zimbraPreAuthKey = XXXX
    zimbraAccountKey = uid
    zimbraBy =id
    zimbraUrl = /service/preauth
    zimbraSsoUrl = ^/zimbrasso$