Est-il possible de remplacer un coûteux serveur Exchange par une solution Open Source ? Nous allons étudier la mise en service d’une solution à peu près équivalente mais totalement gratuite.
Analyse des besoins
J’utilise régulièrement, comme beaucoup de monde aujourd’hui, un ordinateur avec Outlook 2007. J’ai aussi un smartphone sous Windows Mobile 5.0. Et je me déplace régulièrement chez des clients ou des amis chez qui je peux accéder à internet, pour lire mes emails par exemple, grâce à Horde. Et comme beaucoup de monde, je passe mon temps à courir après l’information car elle n’est jamais là ou j’en ai besoin.
Sur mon téléphone, j’ai un carnet d’adresses et un agenda. Ce sont eux qui me servent de référence car je les ai en permanence sur moi. Pratique pour téléphoner ou s’organiser, mais pour envoyer un mail rien ne vaut Outlook ou un webmail et le confort d’un clavier et d’un écran.
Sur Outlook j’ai aussi un carnet d’adresse, pas forcément à jour avec celui de mon téléphone. J’ai aussi un agenda, mais j’ai cessé de l’utiliser pour les mêmes raisons.
Lorsque je ne suis pas chez moi, j’utilise mon webmail, qui n’a ni carnet d’adresse, ni agenda, parce que sinon je passerais ma vie à les mettre à jour. Du coup je dois recopier les adresses email à partir de mon smartphone lorsque je veux rédiger un email.
La solution évidente à ce genre de problème, c’est un serveur Exchange, de Microsoft. Mais outre son prix, difficilement assumable pour de petites structures (je ne parle même pas des particuliers !), Exchange pêche d’une monstrueuse gourmandise, tant en matériel (grosse config, plusieurs Go de RAM requis), que de bande passante.
Horde, lui, est totalement gratuit, et comme beaucoup d’applications web, il n’est pas spécialement gourmand. Sa nouvelle version, Horde Groupeware Webmail Edition fournit en plus des emails, un agenda, un carnet d’adresse, une liste de tâches et un bloc note. Le tout en multi utilisateur, avec un système de partages pour tous ces éléments. Cerise sur le MacDo, il gère désormais la synchronisation via SyncML, un protocole créé par l’OMA (Open Mobile Alliance) et pour lequel il existe des clients gratuits pour Outlook et Pocket PC.
Installation de Horde
Pout toute information à propos de Horde, ainsi que pour le télécharger, rendez-vous sur http://www.horde.org. Vous y trouverez en page d’accueil le Horde Groupeware Webmail Edition, puis en cliquant dessus, la page de téléchargement (menu download en haut à gauche). Il s’agit d’une archive tar.gz que vous pourrez décompresser par exemple à l’aide d’un autre programme gratuit, 7zip. Une fois désarchivée, vous pourrez la mettre en ligne sur votre serveur web via un client FTP, tel que le non moins gratuit FileZilla.
Horde requiert environ 65 Mo d’espace disque, et une base de données (typiquement mysql, mais il supporte beaucoup d’autres serveurs). Attention, Horde ne supporte pas l’installation à la racine d’un serveur web. Vous devrez impérativement le placer dans un dossier, par exemple /horde ou /webmail. Il y a certainement un moyen de remédier à cela mais il n’est pas simple. J’ai déjà essayé de triturer son fichier config/conf.php, et chaque fois que l’on réussi à corriger un bug, un nouveau apparaît. Cela dit si vous n’utilisez que Internet explorer, vous avez une chance que cela fonctionne à la racine d’un site, puisque IE est relativement souple sur les violations de protocoles. Pour ma part j’utilise énormément Firefox lorsque je suis sous Linux, et je suis le plus souvent sous Linux, donc ⇒ installation dans un dossier.
Une fois mis en ligne, Horde doit être configuré. Si vous avez un moyen de lancer une console (locale ou via SSH), ce sera très simple. Les développeurs de Horde ont créé un script de configuration en mode console, accessible dans scripts/setup.php. Si vous n’y avez pas accès il faudra copier le fichier config/conf.php.dist en config/conf.php, puis l’éditer afin qu’il reflète votre configuration. Je n’ai pas testé cette façon de procéder, mais elle n’a pas l’air sorcière, et vous trouverez plein d’indices sur l’installation de Horde sur Internet. N’hésitez pas à me poser des questions à ce sujet via le formulaire de contact. Si elles sont pertinentes et que j’en connais la réponse, je les publierais à la fin de ce dossier.
A ce stade, vous devriez avoir une installation fonctionnelle de Horde. On s’y identifie avec un compte imap valide et le mot de passe qui va avec. Si le compte est référencé comme administrateur du serveur Horde, il aura en plus les options de configuration. Jouons un peu avec la bête histoire de se familiariser, puis passons à la synchronisation.
Horde utilise le protocole SyncML pour synchroniser ses données avec d’autres applications. Il existe un client gratuit qui fonctionne avec Outlook et PocketPC, nommé Funambol. Mais pour que cela fonctionne il a un petit détail de configuration à modifier. Ouvrez le fichier /config/conf.php de Horde et passez la variable $conf[‘compress_pages’] à false, car Funambol ne supporte pas la compression.
Synchronisation Outlook
Téléchargez le client Outlook sur le site de Funambol. Son installation est on ne peut plus simple. Il s’intègre parfaitement à Outlook, ajoutant un menu et une barre d’outils Funambol. Funambol permet la synchronisation à double sens ou à sens unique (écraser les données du serveur ou écraser les données locales) au choix. Il permet aussi la synchronisation manuelle, à la demande, ou bien automatique, toutes les x minutes. Le seul inconvénient entre Funambol et Horde (peu importe à qui incombe la faute) c’est qu’un paramètre non modifiable de Funambol (DevID) doit contenir une valeur bien précise pour Horde (sync4j), et naturellement ce n’est pas le cas. Heureusement cela est modifiable via la base de registre (attention, c’est dangereux si vous ne savez pas ce que vous faites).
Lancez Regedit et recherchez la clé HK_CURRENT_USER\ Software\ Funambol\ OutlookClient\ spds\ syncml\ DevInfo\ DevID. Vous devrez la modifier afin qu’elle contienne la chaîne “sync4j”. Pour ma part je l’ai ajouté en début de chaine, suivie d’un tiret (-) et du reste de la clé d’origine, visiblement générée par Funambol dans le but d’être unique.
Lancez Funambol, allez dans le menu tools > options, onglet Account.
- Adresse du serveur : http://votre.serveur:80/horde/rpc.php ou https://votre.serveur:443/horde/rpc.php si vous avez opté pour le SSL
- Nom d’utilisateur : le même que sous Horde
- Mot de passe : le même que sous Horde
Ensuite allez dans le menu Tools, options, onglet Sync. Ici vous allez indiquer à Funambol les éléments qu’il va devoir synchroniser. Vous devrez changer les remote name de chaque objet comme suit : Pour les contacts, indiquez “contacts”, pour l’agenda indiquez “calendar”, pour les tâches indiquez “tasks”, et pour les notes “notes”.
Synchronisation Evolution
Evolution est à Linux ce qu’Outlook est à Windows. C’est un client de messagerie / contacts / agenda / notes et tâches. Pour synchroniser Evolution avec un serveur SyncML tel que notre Horde fraîchement mis en place à cet effet, vous devrez installer SyncEvolution. Si vous êtes sous Ubuntu (comme moi), vous pourrez suivre ce guide en français qui explique comment télécharger les sources, les compiler et éventuellement créer un paquetage à partir des sources, qui sera réinstallable à volonté. En revanche, arrêtez-vous aux chapitres sur le téléchargement et l’installation, car le reste concerne l’utilisation d’Evolution comme serveur, ce qui n’est pas notre cas. Comme je l’ai compilé en mode paqetage, vous pourrez utiliser ma version si vous êtes sous Debian ou Ubuntu i386.
Une fois l’installation terminée (la commande “syncevolution” renvoit bien des informations sur Evolution), nous allons créer les fichiers de configuration, dans votre dossier personnel (/home/votre_nom_d_utilisateur/) en suivant l’image de droite. Le fichier config.txt du dossier syncml contiendra les options de compte d’accès, telles que nous les avons vues pour Outlook et les verrons pour PocketPC. Les quatre fichiers config.txt des dossiers addressbook, calendar, memo et todo contiendront les options de synchronisation, elles aussi présentes sur les autres clients.
Des exemples sont fournis dans l’archive du code source de SyncEvolution pour une synchronisation sur serveur Funambol et Scheduleworld. Vous pourrez les copier dans un dossier horde et vous en servir de point de départ si vous le désirez. Il sont très bien documentés, mais pour plus de clareté j’ai supprimé les commentaires des versions que je vais vous donner.
Commençons par le fichier ~/ .sync4j/ evolution/ horde/ spds/ syncml/ config.txt, qui contient les options de connection au serveur Horde :
1 |
Comme pour la version Outlook, le DevID doit être unique sur chacun des postes qui synchronisera vos données, et contenir la chaîne “sync4j”. Ici je l’ai nommé sync4j-ubuntu-1 sur mon PC fixe, et j’utiliserai sync4j-ubuntu-2 sur mon portable.
Les fichiers de configuration de sources sont de format identique, je ne vous en montrerait donc qu’un, que vous déclinerez en quatre versions différentes. Prenons l’exemple du fichier ~/ .sync4j/ evolution/ horde/ spds/ sources/ addressbook/ config.txt :
1 |
Dans l’état actuel des choses, seule la synchronisation du carnet d’adresses fonctionne. Le reste est à peaufiner. Pour lancer SyncEvolution, on tappe dans un terminal “syncevolution horde” où horde correspond au dosssier du même nom que nous avons créé. L’idéal étant naturellement de le placer dans une tâche planifiée grâce à Cron afin qu’elle s’éxecute à intervals réguliers.
Si vous décidez d’utiliser cette configuration, pensez à repasser régulièrement voir le dossier car il y a encore pas mal de choses à faire de mon côté. Si vous avez des questions, des informations ou des remarques, vous pouvez aussi me contacter.
Synchronisation PocketPC
Téléchargez le client PocketPC sur le site de Funambol. Son installation est on ne peut plus simple. On trouve son icône dans le menu programmes de Windows Mobile. Funambol permet la synchronisation à double sens ou à sens unique (écraser les données du serveur ou écraser les données locales) au choix. Il permet aussi la synchronisation manuelle, à la demande, ou bien automatique, toutes les x minutes. Le seul inconvénient entre Funambol et Horde (peu importe à qui incombe la faute) c’est qu’un paramètre non modifiable de Funambol (DevID) doit contenir une valeur bien précise pour Horde (sync4j), et naturellement ce n’est pas le cas. Heureusement cela est modifiable via la base de registre Windows ou PocketPC (attention, c’est dangereux si vous ne savez pas ce que vous faites).
Comme sous Windows, il faut éditer la base de registre (avec par exemple EdReg 1.0). Recherchez la clé HKEY_LOCAL_MACHINE\SOFTWARE\Funambol\SyncclientPIM\spds\syncml\DevInfo\devID et modifiez-la afin qu’elle contiennt elle aussi la chaîne “sync4j”. J’ai procédé de la même façon, en ajoutant “sync4j-” devant l’identifiant d’origine.
Le paramétrage de Funambol est le même sur Windows ou Pocket PC, à savoir : Lancez Funambol, allez dans le menu account.
- Adresse du serveur : http://votre.serveur:80/horde/rpc.php ou https://votre.serveur:443/horde/rpc.php si vous avez opté pour le SSL
- Nom d’utilisateur : le même que sous Horde
- Mot de passe : le même que sous Horde
Cliquez sur Menu puis Sync settings. Ici vous allez indiquer à Funambol les éléments qu’il va devoir synchroniser. Vous devrez changer les remote name de chaque objet comme suit : Pour les contacts, indiquez “contacts”, pour l’agenda indiquez “calendar”, pour les tâches indiquez “tasks”, et pour les notes “notes”.
Conclusion
Enregistrez les paramètres, lancez une synchronisation, et bonheur, Votre carnet d’adresses, votre agenda, vos tâches se copient sur votre compte Horde. En revanche cela n’a pas l’air de fonctionner avec les notes. Pour peu que vous utilisiez, comme moi, votre messagerie en mode IMAP, vous avez quasiment toutes les fonctionnalités d’un serveur Exchange, le Push en moins (en Push la synchronisation est demandée par le serveur dès qu’un élément a été mis à jour).
Coût total de l’opération : zéro …
A suivre (quand j’en trouverais le temps) :
- Tester sur une connexion SSL sécurisée
- Ajouter la configuration de clients Mac
- Les premières synchronisations génèrent beaucoup de doublons, voir s’il est possible de dédoublonner
- Peaufiner les configurations (pb de notes sur tous les systèmes, et de calendrier et tâches sous Evolution).
- Tester la compatibilité entre le partage d’information de Horde et la synchronisation
N’hésitez pas à me contacter si vous avez des questions, ce dossier est à sa première version.