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

horde1.jpeg

La pace d'accueil

horde2.jpeg

IMP (le webmail)

horde3.jpeg

Kronolith (l'agenda)

horde4.jpeg

La page de réglages

horde5.jpeg

La version mobile (depuis un HTC explorer)

horde5-mobile.jpg

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.

horde7.jpeg

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

horde8.jpeg

$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.png "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). horde-passwd1.png

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. active-sync.jpeg

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"

2012-11-29_10-38-26.jpg

Un compte Exchange active sync

2012-11-29_10-38-34.jpg

Mon e-mail et son mot de passe

2012-11-29_10-39-08.jpg

  • 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

2012-11-29_10-40-37.jpg

Il veut bien tout synchroniser

2012-11-29_10-42-42.jpg

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

1. Le lundi, mars 11 2013, 23:07 par dokho

Salut. Merci pour ce tuto, par contre comment partager un agenda (par ex) avec un autre utilisateur du serveur de messagerie (installation Starbridge)?

2. Le mardi, mars 12 2013, 14:43 par Gnieark
Bonjour dokho Sur la page de ton agenda, va sur l’icône en forme de stylo pour voir les propriétés de l'agenda. puis Onglet "Partage". agenda2.jpeg Les agendas partagés apparaissent dans "agendas Partagés"
3. Le mardi, mars 12 2013, 18:18 par dokho

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 :(

4. Le mercredi, mars 13 2013, 23:18 par dokho

Une idée? Une piste? ;)

5. Le mardi, août 6 2013, 12:36 par diablotin

Bonjour,

Tuto impecc, par contre une idée comment importer un calendrier en format csv dans horde ?

Cordialement

Merci :)

6. Le mercredi, août 7 2013, 10:44 par diablotin

@dokho, j'ai le même problème que toi pour les agendas, a tu trouvé une solution ?

7. Le mercredi, août 7 2013, 11:12 par gnieark

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

8. Le mercredi, août 7 2013, 11:14 par gnieark

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?

9. Le mercredi, août 7 2013, 11:25 par gnieark

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

10. Le mercredi, août 7 2013, 12:13 par diablotin

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.

11. Le dimanche, août 11 2013, 16:36 par Diablotin

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.

12. Le lundi, août 12 2013, 13:14 par gnieark

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é.

13. Le mercredi, août 14 2013, 11:27 par diablotin

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

14. Le dimanche, août 18 2013, 19:32 par gnieark

heu...faut que j'emprunte un iphone pour retrouver. je ferai peut etre des screens dans la soirée

15. Le lundi, août 26 2013, 13:45 par diablotin

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.

16. Le mercredi, août 28 2013, 20:01 par diablotin

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 :)

17. Le dimanche, septembre 1 2013, 20:35 par gnieark

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" ?

18. Le vendredi, octobre 11 2013, 23:38 par mike

nice topic thank you

19. Le samedi, octobre 12 2013, 00:20 par smaher

Merci beaucoup pour ce beau topic bien expliqué.

20. Le jeudi, avril 9 2015, 09:36 par cogefip

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

21. Le samedi, avril 11 2015, 21:43 par gnieark

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

Page top