SOGo
SOGo (Scalable OpenGroupware.org) est un logiciel de groupe de travail (groupware) libre, proposant les fonctions de calendrier, répertoire d'adresses, et de webmail. Il est dérivé de OpenGroupware.org, lui-même basé sur SOPE (Skyrix Object Publishing Environment).
Il propose trois modes d'accès aux données:
- une interface web ayant recours à AJAX,
- via les protocoles GroupDAV, CardDAV et CalDAV permettant un accès par un client lourd (comme Thunderbird/Lightning par exemple),
- la synchronisation avec les assistants personnels via Funambol
Cet article présente une installation du groupware sous Debian Lenny (à quelques adaptations près, il pourra toutefois être utile pour une installation sur d'autres distributions. Il s'agit ici d'une installation dans un but de démonstration. Si vous l'installer pour une utilisation en production, il est possible que vous ayez à faire quelques adaptations.
L'installation a été effectuée en suivant la documentation fournie sur le site de SOGo. Référez-vous au PDF Installation and Configuration Guide disponible sur cette page pour plus de détails.
Installation des paquets
La société montréalaise Inverse qui maintient SOGo propose des paquets sur leur dépôt debian. Pour l'utilise, vous devrez donc ajouter leur dépôt à votre liste, par exemple en ajoutant la ligne suivante à votre fichier /etc/apt/sources.list:
deb http://inverse.ca/debian lenny lenny
Il suffit ensuite d'installer le paquet sogo qui installera les dépendances nécessaires. Notez que les paquets n'étant pas signés, vous devrez continuer explicitement leur installation en répondant Oui à l'avertissement du gestionnaire de paquets:
sogo:~# aptitude install sogo Lecture des listes de paquets... Fait Construction de l'arbre des dépendances Lecture des informations d'état... Fait Lecture de l'information d'état étendu Initialisation de l'état des paquets... Fait Lecture des descriptions de tâches... Fait Les NOUVEAUX paquets suivants vont être installés : autotools-dev{a} gnustep-base-common{a} gnustep-base-runtime{a} gnustep-common{a} gnustep-make{a} libavahi-client3{a} libavahi-common-data{a} libavahi-common3{a} libavahi-compat-libdnssd1{a} libdbus-1-3{a} libffcall1{a} libgnustep-base1.16{a} libldap-2.4-2{a} libmemcached2{a} libmysqlclient15off{a} libobjc2{a} libsope-appserver4.9{a} libsope-core4.9{a} libsope-gdl1-4.9{a} libsope-ldap4.9{a} libsope-mime4.9{a} libsope-xml4.9{a} libxml2{a} libxslt1.1{a} mysql-common{a} perl{a} perl-modules{a} sgml-base{a} sogo sope4.9-gdl1-mysql{a} sope4.9-libxmlsaxdriver{a} tmpreaper{a} xml-core{a} Les paquets suivants sont RECOMMANDÉS mais ne seront pas installés : dbus libnss-mdns memcached mysql-server mysql-server-5.0 0 paquets mis à jour, 33 nouvellement installés, 0 à enlever et 0 non mis à jour. Il est nécessaire de télécharger 18,2Mo d'archives. Après dépaquetage, 65,6Mo seront utilisés. Voulez-vous continuer ? [Y/n/?] ATTENTION : des versions non certifiées des paquets suivants vont être installées. Des paquets non certifiés peuvent compromettre la sécurité de votre système. Vous ne devriez les installer que si vous êtes certain que c'est bien votre intention. libsope-core4.9 libsope-gdl1-4.9 libsope-mime4.9 sope4.9-gdl1-mysql libsope-ldap4.9 libsope-xml4.9 sogo libsope-appserver4.9 libmemcached2 sope4.9-libxmlsaxdriver Voulez-vous ignorer cet avertissement et continuer quand même ? Pour continuer, entrer « Oui ». Pour interrompre l'installation, entrer « Non » : Oui
Attention: il vous faut ensuite installer le paquet correspondant à la base de données que vous souhaitez utiliser, sinon SOGo ne fonctionnera pas et affichera l'erreur suivante dans ses logs: EOAdaptor: cannot find adaptor bundle: 'PostgreSQL' . SOGo supporte les SGBD PostgreSQL, MySQL, et Oracle. En fonction de votre choix, vous devrez donc installer les paquets sope4.9-gdl1-postgresql, sope4.9-gdl1-mysql, ou sope4.9-gdl1-oracle. Pour mon installation de test, j'ai fait le choix de PostgreSQL:
aptitude install sope4.9-gdl1-postgresql
Configuration de SOGo
SOGo utilise le système de base de données de configuration du projet GNUStep, qui implémente une sorte de base de registres.
Cette configuration sera utilsé par l'utilisateur système sogo qui a été créé à l'installation des paquets. La commande defaults
permet la manipulation de la configuration, qui est dans le fichier ~/GNUstep/Defaults/.GNUstepDefaults. Elle est donc différente pour chaque utilisateur. Ici, l'application fonctionnant sous le compte sogo, il faudra bien veiller à exécuter les appels à defaults sous l'utilisateur sogo.
On passe donc sous le compte sogo
su - sogo
ou bien
sudo -u sogo -i
Paramètres de base
On commence par la définition de paramètres de base. Reportez-vous au PDF pour connaître les fuseaux horaires disponibles et la signification de toutes ces options.
defaults write sogod SOGoTimeZone "Europe/Paris" defaults write sogod SOGoMailDomain "sogo.interne.cliss21.org" defaults write sogod SOGoLanguage "French" defaults write sogod SOGoAppointmentsSendMailNotifications YES defaults write sogod SOGoFoldersSendEMailNotifications YES defaults write sogod SOGoACLsSendEMailNotifications YES
L'option SOGoMailDomain détermine quel domaine est utilisé dans les adresses électroniques. Ici, toutes les adresses seront donc en @sogo.interne.cliss21.org. SOGo supporte la configuration de plusieurs domaines ayant chacun leur source d'authentification et leur serveur mail, mais ce n'est pas le cas dans notre exemple. Reportez-vous au guide d'installation si vous avez besoin de cette fonctionnalité.
La base de données
Le guide d'installation fournit les commandes de la base de données via les appels aux commandes système createuser et createdb. Personnellement, je préfère me connecter à la base de données et effectuer les requêtes moi-même. Pour vous connecter à la base de données, sous Debian, par défaut il faut effectuer la commande suivante:
su - postgres -c psql template1
puis créer l'utilisateur et la base de données:
CREATE USER sogo PASSWORD 'sogo'; CREATE DATABASE sogo OWNER sogo;
Notez que l'utilisateur PostgreSQL doit avoir le droit de créer des tables. Ici, l'utilisateur sogo aura tous les droits sur la base de données. Assurez-vous que votre serveur postgresql permet bien l'authentification par mot de passe depuis le serveur SOGo. Sous Debian, c'est normalement déjà le cas, mais pour les autres distributions, vous devrez peut-être ajouter une ligne telle que celle-ci au fichier pg_hba.conf de votre configuration PostgreSQL (sous debian c'est /etc/postgresql/8.3/main/pg_hba.conf, sous RedHat ça doit être /var/lib/pgsql/data/pg_hba.conf)
On définit ensuite la base de données utilisée par SOGo. Les tables seront créées automatiquement au redémarrage de SOGo.
defaults write sogod SOGoProfileURL 'postgresql://sogo:sogo@bdd1:5432/sogo/sogo_user_profile' defaults write sogod OCSFolderInfoURL 'postgresql://sogo:sogo@bdd1:5432/sogo/sogo_folder_info'
Source d'authentification des utilisateurs
On définit la source d'authentification. SOGo propose de se base sur une authentification LDAP, ou d'utilise le système d'authentification unique CAS, mais il peut aussi s'authentifier via la table ou la vue d'une base de données. Il suffit que cette table ou vue dispose des champs définis c_uid, c_name, c_password, c_cn, et mail.
Pour mes testes, j'ai eu recours à cette dernière solution, et j'ai simplement créé une table PostgreSQL dans la même base que SOGo (on aurait pu opter sans problème pour une table MySQL), avec la définition suivante:
CREATE TABLE sogo_view ( c_uid character varying NOT NULL, c_name character varying, c_password character varying, c_cn character varying, mail character varying ); ALTER TABLE public.sogo_view OWNER TO sogo; ALTER TABLE ONLY sogo_view ADD CONSTRAINT sogo_view_pkey PRIMARY KEY (c_uid);
On insère dans la base de configuration les identifiants d'accès à cette base:
defaults write sogod SOGoUserSources '({ type = "sql"; id = "directory"; viewURL = "postgresql://sogo:sogo@bdd1/sogo/sogo_view"; canAuthenticate = YES; isAddressBook = YES; userPasswordAlgorithm = md5; })'
J'ai ensuite créé manuellement quelques utilisateurs en insérant des données dans ma table d'authentification sogo_view:
INSERT INTO sogo_view VALUES ('sogo','SOGo Administrator',md5('azerty'),'SOGo Administrator','tech@-NOSPAM-cliss21.com'); INSERT INTO sogo_view VALUES ('herschel','Herschel Krusfoski ',md5('monmotdepasse'),'Herschel Krustofski','herschel@-NOSPAM-cliss21.com');
Rappelez-vous que ce n'est ici qu'une source d'authentification à but de test. Pour un système en production, vous utiliserez soit une authentification LDAP, CAS ou une vue fournissant votre source d'authentification réelle (si possible partagée par le serveur IMAP et le reste de vos services).
Serveur SMTP
On précise le serveur SMTP que SOGo pourra utiliser
defaults write sogod SOGoMailingMechanism smtp defaults write sogod SOGoSMTPServer smtp.interne.cliss21.org
Serveur IMAP
Ici on précise le serveur IMAP à utiliser. Comme on ne gère qu'un domaine, il est commun à tous. J'ai utilisé un serveur IMAP de test intsallé sur la même machine, j'ai donc précié localhost. À modifier en fonction de votre environnement. Notez que SOGo utilise le mot de passe de l'utilisateur pour se connecter à ce serveur IMAP. Il faut donc que le serveur IMAP et SOGo partagent la même source d'authentification, ou veiller à ce que que les mots de passe soient toujours identiques.
defaults write sogod SOGoIMAPServer localhost defaults write sogod SOGoDraftsFolderName Drafts defaults write sogod SOGoSentFolderName Sent defaults write sogod SOGoTrashFolderName Trash
Configuration du serveur web
SOGo dispose de son propre daemon, qui reçoit par défaut ses requêtes sur le port 20000. Pour servir les fichiers images, CSS et autres, il faut installer un serveur HTTP en frontal qui servira de proxy aux requêtes princiaple, relayée vers le port 20000. SOGo recommande le serveur NGinx, mais je me suis lâchement contenté d'Apache.
Les paquets debian de SOGo installent sa configuration apache dans le fichier /etc/apache2/conf.d/SOGo.conf. Vous devrez l'adapter pour modifier les lignes suivantes:
RequestHeader set "x-webobjects-server-port" "443" RequestHeader set "x-webobjects-server-name" "sogo" RequestHeader set "x-webobjects-server-url" "https://sogo.interne.cliss21.org"
Notez que si vous préciez une adresse en HTTPS comme URL du serveur, vous devrez activer et configurer mod_ssl pour votre serveur apache.
La configuration SOGo nécessite mod_proxy et mod_headers. On configurera également l'accès par https. Sous debian, l'activation d'un module se fait simplement avec la commande a2enmod et celle d'un vhost par a2ensite. Adaptez les commandes à votre distribution.
# activation des modules proxy et headers a2enmod proxy_http # ceci active aussi mod_proxy dont dépent mod_proxy_http a2enmod headers # activation du module ssl et de la configuration par défaut pour un accès par https a2enmod ssl a2ensite default-ssl # redémarage du serveur pour prendre en compte ces modifications invoke-rc.d apache2 restart
Utilisation de SOGo
Après cette configuration, il faut redémarrer le daemon sogo:
/etc/init.d/sogo restart
Accès à l'interface web
Il ne vous reste plus qu'à vous connecter à SOGo. L'interface web est disponible à l'adresse désignant le serveur sur lequel vous avez installé SOGo, suivi de /SOGo
(respectez la casse, ou bien modifiez '/etc/apache2/conf.d/SOGo.conf si vous souhaitez utiliser un autre nom). Dans mon cas, il s'agit donc de https://sogo.interne.cliss21.org/SOGo/
Accès via un client lourd
Je n'ai pas encore testé l'accès par un client lourd (type Thunderbird). Je tâcherai de compléter cette section quand ça sera fait ^^
En cas de problème
Si votre installation ne fonctionne pas, voici quelques points à vérifier:
- vérifiez éventuellement les fichiers de logs de votre serveur web, mais surtout le fichier de logs de sogo /var/log/sogo/sogo.log.
- vérifiez que le daemon sogo écoute bien sur le port 2000:
$ netstat -let | grep 20000 && echo "ok, un daemon écoute bien sur le port 20000" tcp 0 0 *:20000 *:* LISTEN sogo 8085182 ok, un daemon écoute bien sur le port 20000
Si ce n'est pas le cas, tentez de redémarrer le daemon:
/etc/init.d/sogo restart
Note
La configuration propose l'option SOGoForceIMAPLoginWithEmail qui demande à SOGo d'ajouter le nom de domaine au login de l'utilisateur lors de l'authentification IMAP. En clair, au lieu de s'authentifier auprès du serveur IMAP avec le login herschel, SOGo utilisera herschel@sogo.interne.cliss21.org, où sogo.interne.cliss21.org est la valeur de la variable de configuration SOGoMailDomain. Ceci peut être utile si votre serveur IMAP utilise l'adresse email complète comme login.
Plus d'information
Pour plus d'information, vous pourrez consulter les sites suivantes:
- le site officiel de SOGo, qui propose son téléchargement, ainsi que celui des extentions Thunderbird et Lightning;
- la documentation officielle de SOGo (également sur son site officiel), incluant trois guides en anglais :
- SOGo - Installation and Configuration Guide (PDF)
- Mozilla Thunderbird - Installation and Configuration (PDF)
- Mobile devices - Installation and Configuration (PDF)