Horde Project
EDIT: J'ai mis à jour ce tutoriel là http://blog-du-grouik.tinad.fr/index.php?post/2010/05/09/horde-reloaded Je garde cependant ce billet car la methode d'installation est un peu différente et qu'il détaille le paramétrage des clients.
C'est le dernier test de groupware.
Un des gros avantage de HORDE est de pouvoir déléguer l'authentification au serveur IMAP. [1]
Il est bien documenté (en anglais, par contre), très modulable sans demander non plus des mois de recherche pour le faire fonctionner. Pour les abonnés Freebox, vous reconnaitrez le webmail IMP.
Prérequis
Comme d'hab... Je fais l'installation sur une débian 5.
- Un système de mail IMAP complet est installé. J'ai fait le choix de suivre le très complet tutoriel de starbridge Corp. Voila le tutoriel et mon script pour un déploiement plus rapide: Scriptinstallmail.bash Ajout suite test en production: il manque des éléments au script, quelques erreurs de typo et ne fonctionne pas si amavis est déja présent. [2]. Je conseille, cependant, même si ça prend 4 à 5 heures de suivre le tuto à la main [3], de ne pas utiliser ce script, ne serait-ce que pour comprendre comment ça marche.
- De la patience on installe ici les modules les uns après les autres.
Installation
Documentation utilisée
Bien que pour le serveur IMAP j'ai utilisé aveuglément le tuto de starbridge, Pour horde, je ne suis pas ce tutoriel., Mais je m'en sers, il propose des solutions intéressantes. Je préfère cependant installer les paquets de horde de la distribution Debian. Ça permet entre autre d'avoir les fichiers de configuration dans le repertoire /etc de la distribution.
installation Horde
Installer l'élément principal:
apt-get install horde3
Configurer le serveur http:
On ajoute les lignes suivantes dans le fichier /etc/apache2/sites-available/ssl
juste après le bloc <directory /> </directory> du repertoire /var/www
[html] Alias /horde3 /usr/share/horde3 <Directory /usr/share/horde3> Options FollowSymLinks AllowOverride Limit Order allow,deny allow from all </Directory> <Files ~ "\.(inc|bak)$"> deny from all </Files>
Redémarrer Apache et connecter sur le serveur en https (dans mon cas https://192.168.0.8/horde3)
Par défaut il n'y a pas d'authentification sur horde, d'où cet avertissement. Ce sera vite corrigé, mais si vous souhaitez être prudent (parano?) une petite règle IPtables pour limiter l'acces au serveur le temps de la configuration...
Dans le fichier /etc/horde/horde3/conf.php, supprimer les lignes 2 et 3 qui bloquent l'acces à horde.
tentez de vous connecter à nouveau... c'est bien vide :D
Permettre (temporairement) la modification des fichiers de configuration:
chmod 777 /etc/horde/horde3/conf.php touch /etc/horde/horde3/conf.bak.php chmod 777 /etc/horde/horde3/conf.bak.php
Créer la base de données:
gunzip < /usr/share/doc/horde3/examples/scripts/sql/create.mysql.sql.gz | mysql -u root -p
Il a créé la base, mais aussi l'utilisateur "horde" ayant pour mot de passe "horde"... Changeons-y le mot de passe:
horde:/# mysql -u root -p Enter password: mysql> SET PASSWORD FOR 'horde'@'localhost' = PASSWORD('biscuit'); Query OK, 0 rows affected (0.00 sec) mysql> quit
Renseigner les paramètres de bases de données à horde:
Administration >> configuration >> horde>> l'onglet database
$conf[sql][phptype] on sélectionne MySQL et on y met les renseignements comme sur l'impression d'écran: puis cliquer sur "Générer la configuration de Horde"
On ne s'occupe pas encore de la configuration de l'authentification, on la basera sur le webmail:
Installer IMP, le webmail
apt-get install imp4
permettre la modif des fichiers de configuration:
chmod 777 /usr/share/horde3/imp/config/conf.php touch /usr/share/horde3/imp/config/conf.bak.php chmod 777 /usr/share/horde3/imp/config/conf.bak.php
Générer les préférences: administration>configuration>Courier(imp) Pour le moment, je laisse tout par défaut, je me contente de cliquer sur "Générer la configuration de courrier"
On spécifie les paramètres du serveur mail dans le fichier /etc/horde/imp4/servers.php Ce sera pareil pour les autres modules: Plusieurs exemples sont écrits dans le fichier, il faut supprimer ceux qui ne nous intéressent pas et renseigner les autres. J'utilise l'exemple de starbrige pour celui là, en smtphost, je donne l'adresse IP externe pour que les utilisateurs n'aient pas de privilège pour le spam.
<?php 'name' => _("Choose a mail server:") ); 'name' => 'IMAP Server', 'server' => 'horde.tinad.fr', 'hordeauth' => false, 'protocol' => 'imap/notls', 'port' => 143, 'folders' => '', 'namespace' => 'INBOX.', 'maildomain' => 'tinad.fr', 'smtphost' => '192.168.0.8', 'smtpport' => 25, 'realm' => '', 'preferred' => '', 'dotfiles' => false, 'driver' => 'imap', ), );
Activer IMP4
Pour activer IMP4: on édite /etc/horde/horde3/registry.php et dans le tableau de variables $this->applications['imp'] on change la variable status ainsi: 'status' => 'active', Ce sera la même méthode pour les autres modules.
Modifier l'authentification de horde
administration > configuration > horde > onglet authentification. on change:
- conf[auth][admins] Ce sera l'administrateur, on met un compte mail valide (dans mon cas "admin@tinad.fr", mais dans unet autre configuration du serveur mail ça pourrait être juste "admin"
- $conf[auth][driver] pour mettre "Let a Horde application Handle authentification."
- $conf[auth][params][app] on sélectionne "imp".
Lorsqu'on enregistre on tombe sur forbidden. C'est normal, on n'est plus identifié comme il faut => déconnection, on se reconnecte avec l'adresse email et le mot de passe mis en administrateur précédemment.
Si a ce stade vous vous êtes planté et qu'il n'est pas possible de s'identifier, vous pouvez restaurer la configuration précédente comme ceci:
mv /usr/share/horde3/config/conf.php /usr/share/horde3/config/conf.php.raté mv /usr/share/horde3/config/conf.bak.php /usr/share/horde3/config/conf.php
Ingo
C'est le systeme de filtres. Un prérequis est la possibilité pour les utilisateur d'avoir une méthode pour que les utilisateurs puissent écrire dans leurs dossiers. On applique la méthode de tonio sur starbridge: , avec pureftpd
apt-get install pure-ftpd-mysql update-inetd --disable ftp
On va changer le fichier de configuration mysql:
cd /etc/pure-ftpd/db/ mv mysql.conf mysql.conf.old wget http://blog-du-grouik.tinad.fr/public/MailCompletHorde/horde/mysql.conf sed -i 's/toto/MettezLeMotDePasseMysqlDePostfix/g' mysql.conf
Dans le fichier /etc/default/pure-ftpd-common changez STANDALONE_OR_INETD=standalone
/etc/init.d/pure-ftpd-mysql restart
on installe ingo:
apt-get install ingo1
on change le backends.php (/usr/share/horde3/ingo/config/backends.php )par:
<?php 'driver' => 'vfs', 'preferred' => '', 'hordeauth' => full, // Hostname of the VFS server 'hostspec' => '127.0.0.1', // Name of the maildrop config file to write 'filename' => '.mailfilter', // Port of the VFS server 'port' => 21, // The VFS driver to use 'vfstype' => 'ftp', // Specify permissions for uploaded files if necessary: 'file_perms' => '0600', // The VFS username to use, defaults to current user // 'username' => 'user', // The VFS password to use, defaults to current user's password // 'password' => 'secret', // The path to the .mailfilter filter file, defaults to the current // user's home directory. // You can use the following variables: // %u = name of the current user // %U = the 'username' from above // Example: // '/data/maildrop/filters/%u/' // This would be translated into: // '/data/maildrop/filters/<logged_in_username>/.mailfilter' // 'vfs_path' => '/home/virtual/%u/', ), 'script' => 'maildrop', // What path style does the IMAP server use ['mbox'|'maildir']? 'path_style' => 'maildir', // Strip 'INBOX.' from the beginning of folder names in generated // scripts? 'strip_inbox' => true, // An array of variables to append to every generated script. // Use if you need to set up specific environment variables. // Example for the $PATH variable // 'PATH' => '/usr/bin' ) ) );
on connait la musique:
chmod 777 /usr/share/horde3/ingo/config/conf.php touch /usr/share/horde3/ingo/config/conf.bak.php chmod 777 /usr/share/horde3/ingo/config/conf.bak.php
on active ingo dans le fichier /etc/horde/horde3/registry.php (comme tout à l'heure).
Turba
C'est le carnet d'adresses.
Installer
apt-get install turba2 chmod 777 /etc/horde/turba2/conf.php touch /etc/horde/turba2/conf.bak.php chmod 777 /etc/horde/turba2/conf.bak.php
Générer la configuration (tout par défaut) configurer le backend de turba /etc/horde/turba2/sources.php
<?php 'title' => _("My Address Book"), 'type' => 'sql', // The default connection details are pulled from the Horde-wide SQL // connection configuration. // Using two tables as datasource. // 'params' => array_merge($GLOBALS['conf']['sql'], // array('table' => 'leaddetails LEFT JOIN leadaddress ON leaddetails.leadid = leadaddress.leadaddressid', // 'filter' => 'leaddetails.converted = 0')), '__key' => 'object_id', '__owner' => 'owner_id', '__type' => 'object_type', '__members' => 'object_members', '__uid' => 'object_uid', 'firstname' => 'object_firstname', 'lastname' => 'object_lastname', 'middlenames' => 'object_middlenames', 'namePrefix' => 'object_nameprefix', 'nameSuffix' => 'object_namesuffix', 'middlenames', 'lastname', 'nameSuffix'), 'format' => '%s %s %s %s %s', 'lastname'), 'format' => '%s %s %s'), 'format' => '%s %s'))), // This is a shorter version of a "name" composite field which only // consists of the first name and last name. // 'name' => array('fields' => array('firstname', 'lastname'), // 'format' => '%s %s'), 'alias' => 'object_alias', 'birthday' => 'object_bday', 'homeStreet' => 'object_homestreet', 'homePOBox' => 'object_homepob', 'homeCity' => 'object_homecity', 'homeProvince' => 'object_homeprovince', 'homePostalCode' => 'object_homepostalcode', 'homeCountry' => 'object_homecountry', // This is an example composite field for addresses, so you can display // the various map links. If you use this, be sure to add 'homeAddress' // to the 'tabs' parameter below. //'homeAddress' => array('fields' => array('homeStreet', 'homeCity', // 'homeProvince', // 'homePostalCode'), // 'format' => "%s %s, %s %s"), 'workStreet' => 'object_workstreet', 'workPOBox' => 'object_workpob', 'workCity' => 'object_workcity', 'workProvince' => 'object_workprovince', 'workPostalCode' => 'object_workpostalcode', 'workCountry' => 'object_workcountry', 'timezone' => 'object_tz', 'email' => 'object_email', 'homePhone' => 'object_homephone', 'workPhone' => 'object_workphone', 'cellPhone' => 'object_cellphone', 'fax' => 'object_fax', 'pager' => 'object_pager', 'title' => 'object_title', 'role' => 'object_role', 'company' => 'object_company', 'category' => 'object_category', 'notes' => 'object_notes', 'website' => 'object_url', 'freebusyUrl' => 'object_freebusyurl', 'pgpPublicKey' => 'object_pgppublickey', 'smimePublicKey' => 'object_smimepublickey', ), 'tabs' => array( _("Personal") => array('firstname', 'lastname', 'middlenames', 'namePrefix', 'nameSuffix', 'name', 'alias', 'birthday'), _("Location") => array('homeStreet', 'homePOBox', 'homeCity', 'homeProvince', 'homePostalCode', 'homeCountry', 'workStreet', 'workPOBox', 'workCity', 'workProvince', 'workPostalCode', 'workCountry', 'timezone'), _("Communications") => array('email', 'homePhone', 'workPhone', 'cellPhone', 'fax', 'pager'), _("Organization") => array('title', 'role', 'company'), _("Other") => array('category', 'notes', 'website', 'freebusyUrl', 'pgpPublicKey', 'smimePublicKey'), ), 'search' => array( 'name', 'email' ), 'strict' => array( 'object_id', 'owner_id', 'object_type', ), 'export' => true, 'browse' => true, 'use_shares' => true, 'list_name_field' => 'lastname', );
Créer la table dans la base de données:
mysql -u root -p horde < /usr/share/doc/turba2/examples/scripts/sql/turba.sql
On active turba:
Comme d'hab, dans le fichier /etc/horde/horde3/registry.php
Kronolith
C'est le calendrier
Installation:
apt-get install kronolith2 chmod 777 /etc/horde/kronolith2/conf.php touch /etc/horde/kronolith2/conf.bak.php chmod 777 /etc/horde/kronolith2/conf.bak.php
Générer la configuratiion
La table dans la base de données
mysql -u root -p horde < /usr/share/doc/kronolith2/examples/scripts/sql/kronolith.mysql.sql
Activer Kronolith
dans le fichier /etc/horde/horde3/registry.php
Permettre la synchronisation du calendrier avec lightning
On installe webdav:
pear install HTTP_WebDAV_Server-beta
Ouvrez votre agenda dans horde et cliquez sur le point d'exclamation à coté de "|X|agenda de votre@mail.fr"
Sélectionnez et copiez l'adresse donnée.
Dans Thunderbird lightning. (Ne faites pas attention je suis sur une ubuntu 64 bits tout de suite, le lightning pour 64 bits que j'ai installé est le premier que j'ai trouvé... en anglais)
Calendrier -> nouveau calendrier -> sur internet -> icalendar-> Copiez la location indiquée précédemment. Il devrait vous demander vos identifiants... éventuellement raffraichissez les agendas pour voir apparaitre vos évènements.
Gollem un gestionnaire de fichiers
installer
apt-get install gollem touch /usr/share/horde3/gollem/config/conf.bak.php chmod 777 /usr/share/horde3/gollem/config/conf.bak.php chmod 777 /usr/share/horde3/gollem/config/conf.php
le backends
/etc/horde/gollem/backends.php Je choisis le ftp avec les crédentials de horde. (ça tombe bien pour ingo, on a prévu le truc), par contre, on ne met pas les users directement dans leur dossier qui contient le maildir. direction un dossier ftp 'home' => '/home/virtual/%u/ftp', ça demande une authentification... pas bien génant, je m'y pencherai plus tard (je vous l'ai écrit que je fatiguais)
<?php // This backend uses Horde credentials to automatically log in. 'name' => 'FTP Server', 'driver' => 'ftp', 'preferred' => '', 'hordeauth' => false, // The hostname/IP Address of the FTP server. 'hostspec' => '127.0.0.1', // The port number of the FTP server. 'port' => 21, // Use passive mode? 'pasv' => true, // Set timeout (in seconds) for the FTP server. Default: 90 seconds // 'timeout' => 90, // If true and the POSIX extension is available the driver will map // the user and group IDs returned from the FTP server with the local // IDs from the local password file. This is useful only if the FTP // server is running on localhost or if the local user/group // IDs are identical to the remote FTP server. // You must be running a version of Horde >= 3.1 for this parameter to // have any effect. // 'maplocalids' => true, // The default permissions to set for newly created folders and files. // 'permissions' => '750' ), // Allow the user to change the FTP server. // 'hostspec' => 'Hostname', // Allow the user to change the FTP port. // 'port' => 'Port' ), // 'root' => '', 'home' => '/home/virtual/%u/ftp', 'createhome' => true, // 'filter' => '^regex$', // 'quota' => false, 'clipboard' => true, 'attributes' => array('type', 'name', 'download', 'modified', 'size', 'permission', 'owner', 'group') );
Puis le générer et l'activer
Comme d'hab, je fatique là...
Nag, un gestionnaire de tâches.
Installer:
apt-get install nag2 chmod 777 /etc/horde/nag2/conf.php touch /etc/horde/nag2/conf.bak.php chmod 777 /etc/horde/nag2/conf.bak.php
Générer la configuration
(sql driver)
La table dans la base horde
mysql -u root -p horde < /usr/share/doc/nag2/examples/scripts/sql/nag.sql
L'activer
dans le fichier /etc/horde/horde3/registry.php
Mnemo
apt-get install mnemo2 touch /usr/share/horde3/mnemo/config/conf.bak.php chmod 777 /usr/share/horde3/mnemo/config/conf.bak.php chmod 777 /usr/share/horde3/mnemo/config/conf.php
la base de données:
mysql -u root -p horde < /usr/share/doc/mnemo2/examples/scripts/sql/mnemo.sql
Le générer et l'activer
et là il y a un bug ''PHP Fatal error: Class 'DB' not found in /usr/share/horde3/mnemo/lib/Driver/sql.php on line 98.'' (j'ai pas mis le toute dernière version) Pour le corriger, dans le fichier incriminé, ajoutez dans une ligne au dessus de la n°98: require_once 'DB.php';[4]
Passwd, Le module de changement de mot de passe.
Là aussi , merci starbridge pour la solution.
installation
apt-get install sork-passwd-h3 touch /usr/share/horde3/passwd/config/conf.php chmod 777 /usr/share/horde3/passwd/config/conf.php touch /usr/share/horde3/passwd/config/conf.bak.php chmod 777 /usr/share/horde3/passwd/config/conf.bak.php
le backends /etc/horde/passwd3/backends.php
pensez à changer le mot de passe
<?php 'name' => 'Horde', 'preferred' => 'SELECTED', /* Ici vous definissez les regles d acceptation de mot de passe ( cf plus haut dans le fichier pour toutes les rules) */ 'minLength' => 3, 'maxLength' => 20, 'maxSpace' => 0, ), 'driver' => 'sql', 'phptype' => 'mysql', 'hostspec' => 'localhost', 'username' => 'postfix', 'password' => '*****', 'encryption' => 'crypt-md5', 'database' => 'postfix', 'table' => 'mailbox', 'user_col' => 'username', 'pass_col' => 'password', 'show_encryption' => false, ) );
Activer passwd
Au moment du test, il y a eu un message d'erreur, mais ça a bien marché. (testé en imap et dans horde)
Conclusion...
C'est classe... un grand pas (nous sommes assez retardataires) vers la modernité... par le libre, Je sais je fatigue...
Déploiement demain (je n'ai même pas pris le temps de tester l'arrivée de mails depuis l'extérieur).... on verra bien...
2/06/2009:
arrrrrg!
mon script à la con!!! Il lui manquait quelques trucs... et j'espérais qu'il écrase la configuration, mais les fichiers présents n'ont pas été remplacés... une erreur de typo sur un des fichiers de certificats....
Tout à l'heure quand j'ai enfin réouvert le port 25 et envoyé la commande mailq -q sur le Backup MX j'étais soulagé.... bon du coup, je n'ai pas encore installé horde. Les comptes mails étaient des users unix par contre, le déplacement des boites s'est fait sans problème avec un petit script.
A suivre...
Mettre à jour, Upgrader Horde
déplacer la version actuelle de Horde.
mv /usr/share/horde3 /usr/share/horde3.old
Installer la nouvelle version.
On la trouvera là A la date de rédaction de ce billet, c'est la 3.3.4
cd ~ #télécharger: wget ftp://ftp.horde.org/pub/horde/horde-3.3.4.tar.gz #Décompresser: tar -xzvf horde-3.3.4.tar.gz #Pousser le dossier au bon endroit mv horde-3.3.4 /usr/share/horde3
Récupérer les modules et les fichiers de config de l'ancienne version.
Pour les modules (j'entends par là IMP Kronolith etc...) il suffit de pousser les répertoires dans le nouveau de horde. Pour les fichiers de config, idem, mais il y aura peut etre une upgrade à effectuer.
#les fichiers de conf mv /usr/share/horde3.old/config/conf.php /usr/share/horde3/config/conf.php mv /usr/share/horde3.old/config/registry.php /usr/share/horde3/config/registry.php #les modules cd /usr/share cp -R horde3.old/passwd horde3/ cp -R horde3.old/imp horde3/ cp -R horde3.old/gollem horde3/ cp -R horde3.old/kronolith horde3/ cp -R horde3.old/mnemo horde3/ cp -R horde3.old/ingo horde3/ cp -R horde3.old/turba horde3/
Upgrade des bases de données et des fichiers de conf:
Pour chaque upgrade la procédure est donnée là
Pour cette version, j'exécute simplement le script.
php /usr/share/horde3/scripts/upgrades/2008-08-29_fix_mdb2_sequences.php
Upgrade IMP Kronolith...
Le principe est le même, juste qu'on n'aura pas à pousser les modules. Zieuter dans la docs/UPGRADING du module.
Pour IMP par exemple http://www.horde.org/imp/docs/?f=UPGRADING.html
Exemple pour IMP:
cd /usr/share/horde3 mv imp imp.old wget ftp://ftp.horde.org/pub/imp/imp-h3-4.3.4.tar.gz tar -xzvf imp-h3-4.3.4.tar.gz mv imp-h3-4.3.4 imp rm imp-h3-4.3.4.tar.gz cp imp.old/config/conf.php imp/config/ cp imp.old/config/servers.php imp/config/ cp imp.old/config/prefs.php imp/config/ cp imp.old/config/mime_drivers.php imp/config/
sécuriser l'installation
Il suffit d'éxécuter ce script:
sh /usr/share/horde3/scripts/set_perms.sh
Commentaires
Bonjour,
J'ai un compte sur un serveur Horde en ligne : http://webmail.andescom.com
J'ai malheureusmeent perdu mon password il y a longtemps et de plus j,ai changé d'ordinateur Il y a-til une facon pour moi de récuperer mon password, ou d'en creer un nouveau?
Je vous remercie!
Bonjour,
Malheureusement, il va vous falloir contacter l'administrateur du serveur de mails pour ça.
salam
j'ai installer le horde groupware mais malheureusement j'ai pas trouve le courrier dans le menu de horde
merci
Bonjour Fati.
Les versions récentes de horde ont énormément changé, mottemment à l'intallation et je n'ai pas pris le temps de retester. Je ne pourrai pas pouvoir vous porter secours tant que je n'aurai pas décortiqué la nouvelle version. (je ne prévois pas de le faire dans les jours qui viennent.)
PS: un de vos ordinateurs semble avoir un virus et être corrompu. vu que votre IP se trouve dans la base de données de sbl-xbl.spamhaus.org