horde 5 - version groupware
Mis à jour: 18 juin 2015
::TOC::
On avait utilisé Horde3 pendant 1 ou 2 ans, puis, avec l'arrivée des smartphones il y a quelques années, horde a été délaissé au profit de google calendar. Comme il était pénible à mettre à jour, pour une utilisation anecdotique, j'ai mis roundcube qui me demandait moins de temps. Horde 5 est sorti il y a quelques jours. Pour le test, je l'ai installé sur un serveur de mail perso. J'ai été agréablement surpris. Du coup, roundcube va partir du serveur du travail et être remplacé par horde. Je vais peut être même profiter du renouvellement prochain de la flotte de mobiles pour tenter de reprendre à google nos informations.
Je vous présente la nouvelle monture de horde. Attention, si vous souhaitez mettre à jour votre installation de horde en production,Sork n'a pas encore été rendu compatible (on verra comment utiliser quand même le module de changement de mot de passe passwd).
Rapidement en quelques impressions d'écran, je vous présente l’aspect du groupware (qui est tres personnalisable), Puis mon mémo d'installation sur un serveur de messagerie déjà prêt.
Quelques screens shoots
La page de connexion
La pace d'accueil
IMP (le webmail)
Kronolith (l'agenda)
La page de réglages
La version mobile (depuis un HTC explorer)
Préparer une base de données pour horde
Utilisez phpmyadmin, ou la méthode qui vous plait. juste pour frimer, je le fait en console, pour mémo:
mysql -u root -p
CREATE database horde; GRANT ALL ON horde.* TO 'horde'@'localhost' IDENTIFIED BY 'opazeu:/2;A3558/!qeyuzeauioey'; #Au passage, donnez accès à horde à votre base postfix (enfin celle qui contient la liste des comptes e-mails) GRANT ALL ON postfix.* TO 'horde'@'localhost' IDENTIFIED BY 'opazeu:/2;A3558/!qeyuzeauioey'; quit
Installation de horde 5
Prérequis
- Un serveur mails dédié avec acces en root. Perso, l'installation que j'ai faite correspond à quelques pouyems à celle proposée sur le site starbridge. Installation Serveur Mail Postfix, Amavisd, Mysql, Spamassassin, Dspam, Dovecot. Le point intéressant de cette solution, c'est que les comptes mails sont gérés dans une base de donnée mysql, ce qui va etre pratique pour interfacer horde
- LAMP avec un VHOST HTTPS. Je ne détaillerai pas l'installation d'apache.
Installer pear (s'il n'est pas déja installé)
Pear est un système d'installation de "paquets" PHP. C'est une alternative à GIT qui a été choisie par les développeurs de horde. Sous debian, c'est simplement:
apt-get install php-pear #le mettre à jour: pear upgrade PEAR #enregistrer le channel horde pear channel-discover pear.horde.org
Installation de Horde 5
#se placer dans le dossier du vhost (adaptez en fonction de votre configuration cd /var/www/mail2.ton-domaine.fr-https/ #Optionnel, creer un sous dossier et s'y mettre dedans mkdir webmail cd webmail pear install horde/horde_role #configurer pour l'installation: pear run-scripts horde/horde_role #Dans mon cas: Filesystem location for the base Horde application : /var/www/mail2.ton-domaine.fr-https/webmail/ # #la commande suivante peut prendre un peu de temps en fonction de votre connexion: pear install -a -B horde/groupware
Premier paramétrage:
On va faire un paramétrage assez générique, le but étant de pouvoir se connecter , pour ensuite paramétrer via l'interface web.
groupware-install
Voici une copie du shell, j'ai pas mal répondu en laissant par défaut.
- Request persistent connections: Mettez 0 (no) sinon horde ne sera pas capable de se connecter à une autre base de donnée pour l'authentification
- A la dernière question, "administrator account", mettez le même identifiant que celui qui sert à votre adresse e-mail. Ça permettra de faire en sorte que vous restiez administrateur lorsqu'on interfacera l'authentification sur les comptes e-mails.
.
root@mail2:/var/www/mail2.ton-domaine.fr-https/webmail# groupware-install Installing Horde Groupware Configuring database settings What database backend should we use? (false) [None] (mysql) MySQL / PDO (mysqli) MySQL (mysqli) (pgsql) PostgreSQL (sqlite) SQLite Type your choice []: mysql Request persistent connections? (1) Yes (0) No Type your choice [0]: 0 Username to connect to the database as* [] horde Password to connect with How should we connect to the database? (unix) UNIX Sockets (tcp) TCP/IP Type your choice [unix]: tcp Database server/host* [] localhost Port the DB is running on, if non-standard [3306] Database name to use* [] horde Internally used charset* [utf-8] Use SSL to connect to the server? (1) Yes (0) No Type your choice [0]: Certification Authority to use for SSL connections [] Split reads to a different server? (false) Disabled (true) Enabled Type your choice [false]: Writing main configuration file... done. Creating and updating database tables... done. Configuring administrator settings Specify a user name for the administrator account: rpasserieu@ton-domaine.fr Specify a password for the adminstrator account: Writing main configuration file... done. Thank you for using Horde Groupware!
#vu qu'on a tout fait en root, on va changer le propriétaire des fichiers de horde: chown -R www-data:www-data /var/www/mail2.ton-domaine.fr-https/webmail
Vérifier que ça marche
Rendez-vous via votre navigateur sur votre installation.
Normalement vous n'avez pas accès à la lecture du courrier. On installera IMP plus tard.
Changer le mode d'authentification (synchroniser avec les comptes e-mails)
- Allez dans la petite roue qui symbolise les parametres> administration Configuration.
- Allez sur Horde (horde) Puis dans l'onglet authentification
$conf[auth][driver]
Choisissez "SQL authentification w/custom-made queries"
$conf[auth][params][protocol]
TCP/IP
$conf[auth][params][hostspec]
localhost
$conf[auth][params][username]
horde
$conf[auth][params][password]
opazeu:/2;A3558/!qeyuzeauioey
$conf[auth][params][database]
postfix
Les requêtes MySQL
Dans mon installation, la table mailbox qui contient les comptes des e-mails a cette structure:
mysql> describe mailbox; +------------+--------------+------+-----+---------------------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+--------------+------+-----+---------------------+-------+ | username | varchar(255) | NO | PRI | | | | password | varchar(255) | NO | | | | | name | varchar(255) | NO | | NULL | | | maildir | varchar(255) | NO | | | | | quota | bigint(20) | NO | | 0 | | | local_part | varchar(255) | NO | | NULL | | | domain | varchar(255) | NO | | | | | created | datetime | NO | | 0000-00-00 00:00:00 | | | modified | datetime | NO | | 0000-00-00 00:00:00 | | | active | tinyint(1) | NO | | 1 | | +------------+--------------+------+-----+---------------------+-------+
Adaptez les requetes SQL suivantes en fonction de votre base:
Merci à Diablotin qui a trouvé comment adapter les requêtes à un environnement multidomaine via dokho sur le forum de starbridge
$conf[auth][params][query_auth]
SELECT * FROM mailbox WHERE username=\L AND domain=SUBSTRING_INDEX(\L, '@', -1) AND password = \P AND active='1'
$conf[auth][params][query_add]
INSERT INTO mailbox (domain, username, password, maildir, quota, created, modified, active) VALUES ( SUBSTRING_INDEX(\L, '@', -1), \L, \P, \L, '0', NOW(), NOW(), '1')
$conf[auth][params][query_getpw]
SELECT password FROM mailbox WHERE username=\L
$conf[auth][params][query_update]
UPDATE mailbox SET username=\L, password=\P, modified=NOW() WHERE username=\O;
$conf[auth][params][query_resetpassword]
UPDATE mailbox SET password=\P, modified=NOW() WHERE username=\L;
$conf[auth][params][query_remove]
UPDATE mailbox SET active='0' WHERE username=\L;
$conf[auth][params][query_list]
SELECT username FROM mailbox WHERE domain=SUBSTRING_INDEX(\L, '@', -1) AND active='1'
$conf[auth][params][query_exists ]
SELECT 1 FROM mailbox WHERE username = \L AND active='1'
$conf[auth][params][encryption]
Dans mon installation, la méthode de chiffrement du mot de passe c'était "md5-hex" sur le serveur perso, et "crypt-md5" sur le serveur du travail (installation plus ancienne)
Validez la configuration.
maintenant, vous vous identifiez avec vos identifiants e-mail.
Si vous ne pouvez plus vous identifier
C'est qu'il y a une erreur dans dans les parametres qu'on vient de mettre au point précédent. Pour restaurer les anciens parametres, remplacez le fichier conf.php par le conf.php.bak
mv config/conf.php config/conf.php.fail mv config/conf.bak.php config/conf.php
Refermez entièrement le navigateur et éventuellement supprimez les cookies,
et revenez sur horde pour corriger les requetes sql, la méthode de chiffrement du mot de passe ou autre.
Le webmail IMP
Installation
pear install -a -B horde/IMP chown -R www-data:www-data imp/
Paramétrages d'IMP
On va le paramétrer à la fois pour qu'il ait la bonne configuration du serveur mail, mais aussi pour que l'authentification au groupware horde fasse aussi l'authentification d'IMP de manière transparente (une sorte de SSO quoi). Editez le fichier imp/config/backends.php
En bas du fichier, $servers['imap']
$servers['imap'] = array( // ENABLED by default 'disabled' => false, 'name' => 'IMAP Server', 'hostspec' => 'localhost', 'realm' =>'tinad.fr', 'hordeauth' => 'full', 'protocol' => 'imap', 'port' => 143, // Plaintext logins are disabled by default on IMAP servers (see RFC 3501 // [6.2.3]), so TLS is the only guaranteed authentication available by // default. 'secure' => 'tls', 'maildomain' => '', 'smtp' => array( // 'auth' => true, // 'localhost' => 'localhost', // 'host' => 'smtp.example.com', // 'password' => null, // 'port' => 25, // 'username' => null ), 'cache' => false, );
Dans ce fichier Si comme sur ma config, c'est l'adresse e-mail complète qui sert d'identifiant:
- hordeauth => 'full',
- 'realm' =>'tinad.fr', (enfin, mettez votre domaine)
Si ce n'est pas l'adresse mail complete qui sert d'identifiant:
- hordeauth => TRUE,
retournez sur l’interface de horde.
- Allez dans la petite roue qui symbolise les parametres> administration Configuration.
- Allez sur Horde (horde) Puis dans l'onglet authentification
- cliquez sur "Le schéma de la base n'est pas à jour." à la ligne courrier(imp)
- Déconnectez vous et reconnectez vous, idem, mais cette fois générez la configuration en cliquant sur "Configuration absente."
- Générez celle par défaut, elle est tres bien!
Installer le module passwd pour permettre aux utilisateurs de changer de mot de passe
"passwd" est le module de horde 5 qui permet aux utilisateurs de modifier leur mot de passe. son installation présente quelques difficultés actuellement.
Installer passwd
Sur le serveur:
pear install -a -B horde/passwd
Configurer les backends
Editez le fichier passwd/config/backends.php
- Dans l'array $backends['hordesql'], Mettez 'disabled' => true,
- Puis allez bien plus bas éditer le tableau $backends['postfixadmin']
Comme quoi, la structure des bases de données de mon serveur n'est pas si marginale: Ils l'ont prévu dans le backend. Passez le disabled à false et adaptez les parametres des connexion à votre base de données postfix (sans oublier le paramètre 'encryption'):
$backends['postfixadmin'] = array ( 'disabled' => false, 'name' => 'Postfix Admin server', 'preferred' => '', 'policy' => array( 'minLength' => 6, 'maxLength' => 20, 'minNumeric' => 1, ), 'driver' => 'Sql', 'params' => array( 'phptype' => 'mysql', 'hostspec' => 'localhost', 'username' => 'horde', 'password' => 'opazeu:/2;A3558/mljkmjioey', 'encryption' => 'md5-hex', 'database' => 'postfix', 'table' => 'mailbox', 'user_col' => 'username', 'pass_col' => 'password', 'show_encryption' => false, // The following two settings allow you to specify custom queries for // lookup and modify functions if special functions need to be // performed. In places where a username or a password needs to be // used, refer to this placeholder reference: // %d -> gets substituted with the domain // %u -> gets substituted with the user // %U -> gets substituted with the user without a domain part // %p -> gets substituted with the plaintext password // %e -> gets substituted with the encrypted password // 'query_lookup' => 'SELECT password FROM mailbox WHERE username = %u and active = 1', 'query_modify' => 'UPDATE mailbox SET password = %e WHERE username = %u' ), );
Activer passwd
- Allez dans la petite roue qui symbolise les parametres> administration Configuration.
- Cliquez sur "Mot de passe (passwd) 5.0.0 " pour charger sa configuration
Je vous conseille de décocher $conf[user][change] afin que les utilisateurs ne puissent pas changer leur identifiant (et par là même leur adresse e-mail).
Validez, C'est prêt, je vous conseille cependant de tester avec un compte test et pas le seul compte administrateur que vous avez ;)
Mettre Horde à jour
Si dans les parametres il vous prévient que de nouvelles mises à jours sont disponibles.... La commande pour mettre toute l'installation à jour via pear c'est:
[bash] pear upgrade -a -B -c horde #dans un prochain billet j'expliquerai comment demander à pear d'agir en tant que l'utilisateur www-data, #mais comme dans l'immédiat on ne l'a pas fait, redonnez les droits à www-data sur votre vhost: chown -R www-data:www-data /var/www/mail.vhost.fr-https/
Une fois que pear a fini son travail, rafraîchissez la page des paramètres, et cliquez sur les éventuels boutons "mettre à jour les schémas de bases".
ActiveSync
Activation d'activeSync
Un petit tour dans les paramétrages de horde.
Apache - Redirection
Dans le fichier de configuration du vhost, ajoutez un alias. Entre les balises <VirtualHost *:443> et</VirtualHost> ajoutez la ligne suivante en adaptant en fonction du chemin de votre installation.
Alias /Microsoft-Server-ActiveSync /var/www/mail2.vhost-https/webmail/rpc.php
Rechargez la configuration Apache:
/etc/init.d/apache2 reload
Sur mon android
Parametres comptes et synchronisation, Bouton "ajouter un compte"
Un compte Exchange active sync
Mon e-mail et son mot de passe
- l'adresse e-mail
- le nom du serveur pleinement qualifié serveur.domaine.tld
- le domaine qui peut etre laissé vide
- le nom d'utilisateur, dans mon cas, c'est l'adresse e-mail complète
- le mot de passe
Il veut bien tout synchroniser
Trop cool! Merci à microsoft d'avoir créé ce protocole qui s'est imposé sur tous les smartphones, (et j'ai même essayé avec succès sur un macbook), même si je suis ravi d'avoir un équivalent d'un serveur exchange pour peanuts. Quelques heures de travail seulement.
Commentaires
Salut. Merci pour ce tuto, par contre comment partager un agenda (par ex) avec un autre utilisateur du serveur de messagerie (installation Starbridge)?
J'avais bien compris oui, sauf qu'une fois enregistré, si je reviens sur les paramètres de l'agenda ca n'apparaît plus.
Si je vais sur le compte avec lequel j'ai fais le partage, pas d'agenda partages...
De plus si je vais dans "partage avancés", les autres comptes du domaine n'apparaissent pas dans la liste déroulante :(
Une idée? Une piste? ;)
Bonjour,
Tuto impecc, par contre une idée comment importer un calendrier en format csv dans horde ?
Cordialement
Merci :)
@dokho, j'ai le même problème que toi pour les agendas, a tu trouvé une solution ?
Diablotin> Seul le format ics a l'air supporté désolé.
dokho>
Peux tu me laisser jeter un coup d'oeil sur ton fichier config/conf.php, je verrai bien une erreur sur les requetes sql qui permettent de lister les users.Tu peux me l'envoyer par e-mail gnieark@free.fr , et tu peux enlever les mots de passe mysql avant de me le transmettre
diablotin, dokho> de mon coté ça marche, et j'ai vérifié mon tuto en refaisant une install, mais peut etre que j'aurai glissé une coquille. Petite question, sur vos webmails, vous vous authentifiez avec l'adresse mail complète, ou juste le nom qui est avant le arobaze?
diablotin et dokho, dans la configuration de horde, je vous invite à remplacer la requete :
$conf[auth][params][query_list]
SELECT username FROM mailbox WHERE domain='domaine.fr' AND active='1'
par
SELECT username FROM mailbox WHERE active='1'
si_ vous ne gérez qu'un seul domaine sur le webmail
Hello,
Je te confirme cela vient de la gestion de multi-domaine, j'ai remplacé mes requêtes SQL de la sorte:
Dans $conf[auth][params][query_auth]
SELECT * FROM mailbox WHERE username=\L AND domain=SUBSTRING_INDEX(\L, '@', -1) AND password = \P AND active='1'
Dans $conf[auth][params][query_add]
INSERT INTO mailbox (domain, username, password, maildir, quota, created, modified, active) VALUES ( SUBSTRING_INDEX(\L, '@', -1), \L, \P, \L, '0', NOW(), NOW(), '1')
Dans $conf[auth][params][query_list]
SELECT username FROM mailbox WHERE domain=SUBSTRING_INDEX(\L, '@', -1) AND active='1'
Et depuis nikel :) c'est @dokho qui a trouvé ici => http://www.starbridge.org/support/v...
Merci pour ton retour.
Salut,
Dernier petit probleme rencontré, lorsque je parametre mon compte sur iphone en mode exchange (activsync) j'ai une erreur quand je veux supprimer un message. "Erreur, impossible de deplacer le message vers la boite aux lettre corbeille" aurais-tu une idée ? Ou deja rencontré le souci ?
Je te remercie par avance.
Oui, j'ai déja rencontré le soucis. je l'ai corrigé en renseignant à la main dans les parametres de l'iphone où se situait la corbeille.
Par contre, là, je suis en train de faire mumuse avec la config de la dernière version dovecot. Il me semble qu'on peut signifier au client quel est le dossier corbeille http://dovecot.org/list/dovecot/201... par contre, est-ce que cette info passera à travers horde, je n'ai pas encore testé.
Ou, je me doute qu'il y'a une modif comme ça a faire dans les réglages de l'Iphone, mais je n'ai pas trouvé ou :( tu te souviens ce que tu avais modifié ?
Merci
heu...faut que j'emprunte un iphone pour retrouver. je ferai peut etre des screens dans la soirée
Et Bonjour,
Je reviens vers vous avec une colle sur laquelle le bloque depuis ce matin, avez-vous réussi a utiliser activesync avec Outlook 2003/2007/2010 ? mon parc dispose de ces trois versions de client mail et impossible de configurer les outlook avec activesync :( du coup pas de synchro agenda. Y'a t'il une manip/astuce a connaitre pour pallier a ce problème ?
Sur Outlook 2013 en revanche pas de souci et avec l'Iphone nickel aussi.
Vous remerciant pour vos aide et retour.
J'apporte la résolution pour la configuration avec activesync sur l'iphone et l'erreur lors du déplacement du message vers la corbeille.
Il suffit de créer un dossier si ce n'est pas déjà le cas (par exemple: Corbeille) puis dans la roue crantée => Courrier, il y'a un menu qui permet de spécifier le dossier a utiliser pour la corbeille.
A partir de là plus d'erreur lors du déplacement sur l'iPhone :)
Hello Diablotin>
j'avais pas vu tes messages, sorry pour le délai.
Pour l'iphone donc c'est OK ;)
Pour outlook> J'ai remplacé outlook par thunderbird sur tous les postes du travail il y a déja 6 ans. Mais ça ma surprend que tu aies des soucis là dessus. Pense à regarder aussi les versions d'active Sync dans l'interface de horde, peut etre qu'en descendant en version 2003 pour plus de compatibilité...
J'essaierai de mettre certaines de tes remarques dans le billet assez rapidement. je te crédite comment "Diablotin" ?
nice topic thank you
Merci beaucoup pour ce beau topic bien expliqué.
Bonjour,
Merci pour ce tuto clair.
J'ai installé une debian jessie et je contate qu'il est maintenant proposé un paquet pour php-horde-webmail et php-horde-groupware. Il n'est plus alors nécessaire de passer par php-pear.
Avez-vous testé ces solutions? Dans l'affirmative quel est votre retour d'expérience. Merci
Claude Chatonnay
Hello cogefip
Non pas testé. De façon générale, les CMS web comme phpmyadmin, je préfère ne pas passer par les dépots débian. (C'est un choix personnel)
Le petit soucis risque d’être les écarts de version.
La version de horde via les dépots débian est la 5.2.2-1
Alors que la dernière est la 5.2.5