//
you're reading...
Mandriva

Installer un groupware en LDAP avec Kolab & Roundcube

Kolab est un logiciel de travail collaboratif (groupware), regroupant les fonctionnalités de
gestion des courriels, des calendriers, de contacts ou encore des notes. Il dispose de nombreux
logiciels clients qui permettent la consultation de ces éléments. C’est une distribution 100 % open
source.

Kolab se repose sur des outils standards très répandus comme :
• Amavisd-new (Scanner de messagerie)
• Apache (Serveur Web)
• ClamAV (Scanner antivirus)
• Cyrus (Serveur Imap)
• OpenLDAP (Serveur LDAP)
• Postfix (Serveur SMTP)
• SpamAssasin (Filtre anti-spam)

L’avantage d’une installation kolab est la configuration automatique de la quasi totalité des
logiciels nécessaires à un serveur de messagerie. De plus Kolab va utiliser un « démon » (Dans le monde Unix, un démon est un processus s’exécutant en tache de fond)  pour
écouter les modifications LDAP (port de réplication) pour créer, supprimer ou mettre à jour les
comptes de messagerie.
Cependant, bien que les possibilités qu’offrent ce groupware semblent très étendues, on ne
trouve que très peu d’information pour son administration. Son installation et son fonctionnement
sont globalement expliqués sur kolab.org mais pour une utilisation avancée, il faudra faire preuve
de rigueur.
La version de kolab installée sera la 2.2.3-5mdv2010.1 sur système Mandriva 2010.2

LDAP

Avant de démarrer l’installation il convient d’expliquer en quelques mots ce qu’est le LDAP
et surtout l’intérêt pour nous de profiter d’un annuaire utilisateur avec l’installation de Kolab.
Le LDAP signifie en anglais Lightweight Directory Access Protocol, c’est un protocole qui repose
sur TCP/IP et qui permet d’interroger et de créer un service d’annuaire utilisateurs, une sorte
d’Active Directory pour Linux. Ce protocole est devenu une norme pour les systèmes d’annuaires.
LDAP est en fait une base de données regroupant des identités d’utilisateurs. Cela part
des nom et prénom, du login et bien sûr du mot de passe. Vous pouvez également y
ajouter tout autre type d’information que vous jugez utile d’y stocker : adresse, courriel,
téléphone, etc.
LDAP représente une structure arborescente similaire à un Active Directory dont chacun des
noeuds est constitué d’attributs associés à leurs valeurs. Le nommage des éléments qui constituent
un arbre (racine, branches, feuilles) reflète souvent le modèle politique, géographique ou
d’organisation de la structure représentée. La tendance actuelle est d’utiliser le nommage DNS
pour les éléments de base de l’annuaire (racine et premières branches, domain components ou
dc=…). Les branches plus profondes de l’annuaire peuvent représenter des unités d’organisation
ou des groupes (organizational units ou ou=…), des personnes (common name ou cn=… voire user
identifier uid=…), … L’assemblage de tous les composants (du plus précis au plus général) d’un
nom forme son distinguished name, l’exemple suivant en présente deux :
• cn=ordinateur,ou=machines,dc=EXEMPLE,dc=FR
• cn=Jean,ou=gens,dc=EXEMPLE,dc=FR
La dernière version en date du protocole est LDAPv3
Docs:
Plus d’infos sur : http://fr.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol
Client web pour l’administration LDAP : http://phpldapadmin.sourceforge.net

1) Installation & configuration

Avant de démarrer l’installation veillez à activer le partage de connexion dans le centre de
contrôle afin d’installer le service DNS tel que Bind . Configurez ensuite votre Mandriva 2010.2
avec :
• une adresse IP fixe – Le nom de la machine (srv.local.loc) Le nom de domaine (local.loc)
Notre configuration :
Pour installer notre serveur Kolab, nous avons donc utilisé une distribution Mandriva 2010.2
Configuré avec deux cartes réseaux, eth1 correspond à réseau local qui aura accés à internet
et eth0 à notre LAN privé.
> eth1 : 172.16.10.10
> eth0 : 192.168.10.1
> Pour la machine de test avec Thunderbird:
Windows xp sp3 sur le réseau 192.168.10.0/24
> Pour la machine de test avec le webmail Rouncube
Mageia2 sur le réseau : 172.16.0.0/16

1.1) Installer kolab

Ouvrez une console et mettez vous en root.
# urpmi kolab
Vous procéderez alors à l’installation de quelques 224 paquetages.

1.2) Correction des bugs

Cette distribution de kolab requiert quelques modifications pour fonctionner correctement avec
Mandriva2010.2. Pour cela nous allons nous aider de la documentation suivante qui fait référence
à une correction pour la version 2009.1 de Mandriva.
http://wiki.kolab.org/Mandrake#Export_de_Kolab_v1_sous_Mandriva_10.1

Effectuez les modifications suivantes :

a ) Éditez le fichier :  /etc/kolab/templates/slapd.conf.template
> Désactivez avec un # les lignes suivantes :
ligne 37 replogfile /var/ldap-kolab/replog
    > exemple : #replogfile /var/ldap-kolab/replog
ligne 38 replicationinterval 5
ligne 64 idletimeout 300
ligne 83 replica uri=ldap://127.0.0.1:9999
ligne 84 binddn= »cn=replicator »
ligne 85 bindmethod=simple
ligne 86 credentials=secret

b ) Éditez le fichier : /etc/kolab/templates/amavis.conf.template
> Remplacez :
ligne 62 $MYHOME = ‘/var/amavis’; par $MYHOME = ‘/var/lib/amavis’;
ligne 1218 \&ask_daemon, [« CONTSCAN {}\n », « /var/clamav/clamd.socket »],
par \&ask_daemon, [« CONTSCAN {}\n », « /var/lib/clamav/clamd.socket »],
> Faites un remplacement global de /var/amavis par /var/lib/amavis

Aucun changements supplémentaires pour le reste des corrections apportées à Mandriva2009.

1.3) Initialiser kolab

Avant d’initialiser le « bootstrap » vous devez arrêter les services suivants :
# service httpd stop
# service cyrus-imapd stop
# service postfix stop

Pour une installation propre, initialisez kolab en lançant en tant que root :
# /usr/sbin/kolab_bootstrap -b

Choisissez ensuite les options par défaut, le FQDN et nom du domaine sont choisis
automatiquement par kolab, appuyez sur [ENTREE] sauf si les choix ne vous conviennent pas
comme le nom de votre organisation.

Choisissez d’installer kolab en master si c’est votre premier serveur, slave étant une réplication du
master. Acceptez la création des certificats CA (Certificate Authority) et choisissez un mot de
passe pour vos clés privées en ce qui concerne les fichiers .pem

Notez la ligne qui vous renseigne votre login et password pour la webinterface.

Démarrez les services :
# service kolab start

1.4) Administration

L’administration de kolab se fait grâce à une interface web, renseignez votre IP suivi du chemin
d’accès à l’administration : http://192.168.10.1/kolab/admin/
User: manager
Pass: votre mot de passe
Une fois connecté un message vous avertira qu’aucun compte n’est configuré pour recevoir les
messages destinés aux adresses administratives.

> Créez alors le premier compte utilisateur, comme dans l’exemple ci-dessous :
kolab1

Cliquez sur soumettre, l’utilisateur est créé nous pouvons commencer à administrer notre
groupware.
Mais avant nous allons tester si les services sont fonctionnels en effectuant un test par un client
de messagerie.

1.5) Test fonctionnel

Le fait de se connecter à un client de messagerie et de d’envoyer un mail à notre utilisateur aura
pour effet, en plus de tester si votre IMAP et SMTP fonctionne correctement, la création
automatique des dossiers IMAP.
Vous pouvez utiliser n’importe quel client de messagerie du moment qu’il supporte le protocole
IMAP et SMTP
> Ouvrez Thunderbird de préférence et commencez la création d’un nouveau compte en
renseignant les paramètres serveur suivant votre configuration .
> Allez dans Outils > Paramètres de comptes > Gestion des comptes > Ajouter un compte de
messagerie.

kolab2

Adresse de messagerie : pmartin@local.loc
Mot de passe : ****** > celui que vous avez renseigné dans kolab
IMAP: 192.168.10.1 – Port : 143 – Sécurité STARTTLS – Authentification normal
SMTP : 192.168.10.10 – Port 25 – Sécurité STARTTLS – Authentification normal
> Cliquez sur « tester » pour que Thunderbird vérifie vos paramètres puis sur « Terminé »>
Envoyez vous un mail et vérifiez la bonne réception .
Dans le but de comprendre où sont stockées les données de messagerie avec Kolab et ainsi de
pouvoir les sauvegarder, nous allons créer 2 utilisateurs supplémentaires et faire quelques
échanges de courrier.

Votre administration kolab devrait alors ressembler à ceci :
kolab3

…votre client de messagerie Thunderbird à cela :

kolab4

> Allez maintenant explorer /var/lib/imap et /var/spool/imap , vous constatez que nous
retrouvons dans certains fichiers, la structure et les données de nos utilisateurs, c’est ici que nous
allons devoir récupérer nos sauvegardes.

2) Sauvegarde & Restauration

La sauvegarde et la restauration de votre annuaire d’utilisateurs LDAP et de vos boites aux
lettres IMAP dans kolab est plus complexe qu’il n’y parait, bien-sûr il s’agirait de sauvegarder
entièrement votre serveur mais vous ne seriez pas maître de vos données. En effet vous pourriez
par exemple avoir besoin de changer de version ou effectuer une migration. Une restauration du
serveur n’aurait alors aucun effet et vos données seraient perdues.
Il s’agit donc de retrouver les bases de données essentielles et d’en faire un DUMP vers un fichier
que l’on pourra ensuite restaurer ultérieurement.
Pour la sauvegarde, la structure de kolab se comporte ainsi :
1. Sauvegarde IMAP
> données utilisateurs
> structure mails
> règles
2. Sauvegarde annuaire LDAP

2.1) Sauvegarde IMAP

a) ctl_mboxlist
ctl_mboxlist est une commande utilisée pour effectuer des opérations administratives.
Cette commande lit entre autre les options de configuration du fichier imapd.conf qui lui-même
gère la configuration de tous les différents processus impliqués dans cyrus.conf
Nous allons nous en servir pour effectuer des opérations sur la base de donnée de la mailbox liste

> Connectez vous avec l’utilisateur cyrus en mode bash :
# su – cyrus
-bash-4.1$

> Pour localiser clt_mboxlist :
-bash-4.1$ locate ctl_mboxlist
/usr/lib/cyrus-imapd/ctl_mboxlist

> Affichez la liste des commandes :
-bash-4.1$ /usr/lib/cyrus-imapd/ctl_mboxlist -h
DUMP:
ctl_mboxlist [-C <alt_config>] -d [-x] [-f filename] [-p partition]
UNDUMP:
ctl_mboxlist [-C <alt_config>] -u [-f filename] [< mboxlist.dump]
MUPDATE populate:
ctl_mboxlist [-C <alt_config>] -m [-a] [-w] [-f filename]
VERIFY:
ctl_mboxlist [-C <alt_config>] -v [-f filename]

> Affichez votre base, on retrouve nos utilisateurs :
-bash-4.1$ /usr/lib/cyrus-imapd/ctl_mboxlist -d
local.loc!user.cdurand 0 default cdurand@local.loc lrswipkxtecda
local.loc!user.cdurand.Trash 0 default cdurand@local.loc lrswipkxtecda
local.loc!user.jdupond 0 default jdupond@local.loc lrswipkxtecda
local.loc!user.jdupond.Sent 0 default jdupond@local.loc lrswipkxtecda
local.loc!user.jdupond.Trash 0 default jdupond@local.loc lrswipkxtecda
local.loc!user.pmartin 0 default pmartin@local.loc lrswipkxtecda
local.loc!user.pmartin.Sent 0 default pmartin@local.loc lrswipkxtecda
local.loc!user.pmartin.Trash 0 default pmartin@local.loc lrswipkxtecda
srv.local.loc!user.admink 0 default admink@srv.local.loc lrswipkxtecda

> Sauvegarde (DUMP) de la base :
-bash-4.1$ /usr/lib/cyrus-imapd/ctl_mboxlist -d > sauvegarde.dump
On vérifie :
-bash-4.1$ ll
-rw-r–r– 1 cyrus mail 628 2012-10-16 10:15 sauvegarde.dump
Nous constatons que le fichier sauvegarde.dump à bien été créé. Notez les permissions d’accès et
d’utilisateur/groupe, ici c’est un mode 644 pour l’utilisateur cyrus du groupe mail.
> Restauration (UNDUMP) de la base :
-bash-4.1$ /usr/lib/cyrus-imapd/ctl_mboxlist -u < sauvegarde.dump

b) /var/spool/imap/domain/

Lorsque l’on va dans /var/spool/imap/domain/ , on remarque une certaine arborescence de dossiers
classés par initiales de domaines et d’utilisateurs et dans lesquels on retrouve nos dossiers d’envoi
et de réception, ainsi que la corbeille . Ce sont ces répertoires qui contiennent vos mails,
également présents des fichiers de structure que sont :
cyrus.cache cyrus.header cyrus.index
Tout ces fichiers contiennent des données primordiales, le dossier /domain doit donc faire parti de
votre plan de sauvegarde.

c) /var/lib/imap/

Dans ce répertoire on trouve des dossiers importants et qui doivent être sauvegardés comme
sieve, quota et domain.
Dans notre exercice ces fichiers sont vides mais si par exemple vous utilisez des règles sous forme
de scripts sieve, c’est ici qu’ils seront stockés, sieve est un langage de filtrage du courrier
électronique.
Dans quota les fichiers relatifs aux quotas des boîtes et dans domain seront inscris les
informations tels que les mails lus et non lus.
Les mails lus sont stockés dans des fichiers .seen, pour vous en rendre compte effectuez une
recherche :
#updatedb (pour mettre a jour la base de recherche)
#locate .seen
/var/lib/imap/domain/l/local.loc/user/c/cdurand.seen
/var/lib/imap/domain/l/local.loc/user/j/jdupond.seen
/var/lib/imap/domain/l/local.loc/user/p/pmartin.seen

2.2) Sauvegarde LDAP

Nous allons à présent sauvegarder notre annuaire d’utilisateurs.

a) slapcat
Pour sauvegardez votre annuaire vous devez effectuer un dump de la base dans un fichier au
format LDIF (LDAP Data Interchange Format qui est un format standardisé d’échange de données)
grace à la commande Slapcat.
Tapez simplement slapcat dans votre console, cela vous affiche votre base LDAP

> Pour sauvegarder notre base :
# slapcat -l sauvegarde.ldiff ou # slapcat > sauvegarde.ldiff

Important : il est recommandé d’effectuer une commande slap pendant que le serveur est à
l’arrêt ou ne travaille pas car cette commande effectue un accès concurrent depuis le serveur lui même,
ce qui pourrait corrompre la base de données. Planifiez donc vos sauvegardes en
conséquence

b) slapadd
slapadd est l’inverse de slapcat. Cette commande permet de peupler notre annuaire en utilisant un
fichier LDIF. Elle est typiquement utilisée pour restaurer une sauvegarde effectuée avec slapcat,
tout d’abord stoppez le service slapd puis restaurez votre sauvegarde :
# slapadd -c -l sauvegarde.ldiff ou # slapadd < sauvegarde.ldif
( -c pour continue , ignore les doublons et donc les erreurs )

2.3) Test de restauration

Pour effectuer le test de restauration nous avons tout d’abord échangé quelques mails entre nos
trois utilisateurs puis sauvegardé les fichiers suivants sur clé usb :
• le fichier sauvegarde.dump issu de la commande ctl_mboxlist
• le fichier sauvegarde.ldiff issu de la commande slapcat
• le dossier /var/spool/imap/domain
• le dossier /var/lib/imap/domain
• les dossiers /var/lib/imap/sieve et var/lib/imap/quota

Lors de la restauration : pensez à remettre les permissions de manière récursive sur vos dossiers,
par exemple sur le dossier domain :
# chmod -R 700 domain
# chown -R cyrus:mail domain

Ces sauvegardes ont ensuite été restaurées sur un serveur Kolab fraichement installé.
Dés la première utilisation de l’administration web de kolab nos utilisateurs apparaissaient . Sur un
client Thunderbird tous nos mails envoyés et reçus ont été lus du serveur IMAP, à noter que si
vous utilisez la même machine pour le test avec Thunderbird vous risquez de rencontrer des
problèmes de certificats, supprimez les dans les options.
Les mails ont également été lus sur un Webmail collaboratif tel que Roundcube.

3 ) roundcube , client Kolab

Roundcube est un Webmail que nous installerons coté
serveur, il va fournir une interface web à nos utilisateurs . Tout ce qui concerne la messagerie et le
carnet d’adresses semble très complet, nous avons aussi la possibilité d’installer de nombreux
plug-ins comme un agenda.
Nous aurions pu installer n’importe quel Webmail collaboratif mais ce qui nous intéresse est que la
communauté Kolab collabore étroitement avec Roundcube, ce qui en fait un client ideal et nous
offre certaines possibilités comme synchroniser notre annuaire LDAP.

3.1) installation :

a) Installez le paquet
# urpmi roundcube
> installez la dépendance php-gd correspondante à votre version si on vous le demande

b) Activez le webinstaller
Ce que nous appellerons « webinstaller » est l’interface web d’installation de roundcube.
> Editez le fichier etc/roundcubemail/main.inc.php et activez l’interface d’installation en modifiant
false par true
$rcmail_config[‘enable_installer’] = true ;
> connectez vous sur le « webinstaller » :
http://172.16.10.10/roundcubemail/installer

c) Corrigez les erreurs :
Vous vous retrouvez à présent sur une page comportant des erreurs du genre NOT OK , ce ne
sont pas vraiment des erreurs mais plutôt des messages d’avertissement de dépendances
manquantes.
Il s’agira d’effectuer la configuration nécessaire jusqu’à ce que tout soit OK.
> pour date.timezone vous devez ajouter la ligne suivante dans le fichier etc/php.ini
date.timezone = ‘Europe/Paris’
> relancez le service http : # service httpd restart

note : si vous avez choisi d’installer roundcube en téléchargeant le pack sur le site web vous
risquez de rencontrer une erreur du style « suhosin.session.encrypt », il suffit juste de rajouter la
ligne suivante dans ce même fichier php.ini : suhosin.session.encrypt = off

> Toujours dans ce même webinstaller une fois les erreurs de la première page corrigées cliquez
sur next , nous rencontrons deux nouvelles erreurs:

La première est une erreur de permission, faites un #chmod 777 /var/log/roundcubemail

roundcube_check

La deuxième concerne la base de donnée, c’est normal nous ne l’avons pas encore créé.

d) Créez la base de donnée    :
> Installez tout d’abord votre serveur mysql si ce n’est déjà fait et démarrez le :
# urpmi mysql
# service mysqld start

> Créez la base roundcubemailet l’utilisateur roundcube en lui accordant tousles privilèges

# mysql
mysql> CREATE DATABASE roundcubemail /*!40101 CHARACTER SET utf8 COLLATE 
utf8_general_ci */;
Query OK, 1 row affected (0.00 sec)
mysql> GRANT ALL PRIVILEGES ON roundcubemail.* TO roundcube@localhost
-> IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.00 sec)
mysql> quit

> Insérez le scriptsql initial.sqlqui se trouve dans /usr/share/roundcubemail/SQLpour créer
vos tables, sinon il se trouve dans le paquet téléchargé sur le site officiel.
# mysql roundcubemail < mysql.initial.sql

> Editer la ligne ci-dessousqui se trouve dans etc/roundcubemail/db.inc.phpet renseignez le
mot de passe que vous avez entré lors de la création de votre utilisateur pour la base de donnée
( « IDENTIFIED BY ‘password’ » )

'mysql://roundcube:password@localhost/roundcubemail'

# service mysqld restart

e) Tests SMTP / IMAP
Toujours sur la page du webinstaller, maintenant que tout est  OK, testez vos connexions.

test-smtp-imap-roundcube

f) Authentification
> Connectez vous maintenant sur la page d’authentification
http://172.16.145.149/roundcubemail/ un message de sécurité vous avertit qu’il faut supprimer
le script d’installation, supprimez le dossier installerqui se trouve dans :
/usr/share/roundcubemail/et connectez vous avec un de vos utilisateurs.

Utilisez plutôt le nom de votre serveur que l’IP dans le champ Serveur. Le problème rencontré est que si vous utilisez l’IP, les adresses d’envoi de courrier se transforment alors en jdupond@172.16.10.10 au lieu de jpdupond@local.loc , ce qui pose un problème chez le destinataire pour la lecture du serveur imap.

login-roundcube

Vous retrouvez votre boite avec vos messages reçus et envoyés lors du test avec Thunderbird. Ce qui prouve la bonne synchronisation avec votre serveur IMAP et SMTP

Sans-titre-4

Vous pouvez à présent créer de nouveaux utilisateurs grâce avec Kolab et les connecter sur Roundcube, la création des dossiers IMAP se fera, à l’identique de Thunderbird, automatiquement dés que les premiers mails seront envoyés et reçus.

Nous allons maintenant faire en sorte que les utilisateurs de notre annuaire Kolab LDAP se retrouvent dans le carnet d’adresses.

3.2) Synchronisation LDAP

Pour que les utilisateurs créés avec Kolab se retrouvent dans le carnet d’adresses nous allons devoir éditer le fichier /etc/roundcubemail/main.inc.php et éditer la ligne 500 qui a été prévue à cet effet.
Rentrez les informations ci-dessous, il s’agit d’un script qui renseigne tout simplement les champs, objets et attributs LDAP :

$rcmail_config['ldap_public']['Kolab'] = array(
   'name' => 'Adresses Kolab',
   'hosts' => array('%h'),
   'port' => 389,
   'use_tls' => false,
   'user_specific' => false,
   'base_dn' => '',
   'bind_dn' => '',
   'bind_pass' => '',
   'writable' => false,
   'LDAP_Object_Classes' => array("top", "inetOrgPerson"),
   'required_fields' => array("cn", "sn", "mail"),
   'LDAP_rdn' => 'mail',.
   'ldap_version' => 3, // using LDAPv3
   'search_fields' => array('mail', 'cn'),
   'name_field' => 'cn',
   'email_field' => 'mail',
   'surname_field' => 'sn',
   'firstname_field' => 'givenName', //
   'sort' => 'cn',
   'scope' => 'sub',
   'filter' => 'objectClass=kolabInetOrgPerson',
   'fuzzy_search' => true,
   'sizelimit' => '0',
   'timelimit' => '0',
);

Dorénavant lorsque un utilisateur ira dans ses contacts il aura accès aux adresses Kolab

Sans-titre-5

Ce qui ne l’empêche pas de créer ses propres contacts dans « Adresses personnelles », cependant celles-ci seront sauvegardées dans la base de donnée.

Inutile de redémarrer un quelconque service lors de la création d’utilisateurs et l’édition de votre fichier de configuration main.inc.php, tout se fait instantanément.

En conclusion :

Votre groupware est maintenant fonctionnel, tout du moins en local mais vous n’avez qu’a déclarer une entrée DNS MX pour indiquer quels serveurs SMTP externes à contacter pour envoyer un courriel. Vous êtes également libres par la suite de rajouter certains plug-ins Roundcube, comme par exemple un agenda pour obtenir logiciel collaboratif similaire à MS Exchange et sans débourser un centime, surtout lorsque l’on connait les prix de la licence de ce dernier.

DOCS :

http://wiki.kolab.org/Install_Roundcube_on_Kolab
http://roundcube.net- www.kolab.org

Note importante sur les templates Kolab :
Kolab utilise des templates de base pour tout les fichiers de configuration. De ce fait, toutes vos modifications devrons être rapportées également dans etc/kolab/templates. Par exemple, toute modification du fichier /etc/postfix/main.cf devra l’être également dans le
/etc/kolab/template/main.cf.template

Le prochain article parlera de l’intrerface web phpLDAPadmin qui permet de modifier facilement un annuaire LDAP . Je vous conseille de l »installer , ce qui nous permettra d’explorer notre serveur LDAP et mieux en comprendre l’architecture.

 

Discussion

Pas encore de commentaire.

Laisser un commentaire

Catégories