Sogo
Sommaire
Infrastructure
PostgreSQL
PgPool
LDAP-Mail
Installation
Installation des paquets
La société montréalaise Inverse qui maintient SOGo propose des paquets sur leur dépôt debian. Pour l'utiliser, vous devrez donc ajouter leur dépôt à votre liste de dépôts, par exemple en ajoutant la ligne suivante à votre fichier /etc/apt/sources.list:
#Pour ubuntu 12.04 deb http://inverse.ca/ubuntu precise precise #Pour debian Squeeze deb http://inverse.ca/debian squeeze squeeze
On ajoute la clé publique au dépot
Rechargez la liste des paquets :
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'avais fait le choix de PostgreSQL (l'installation de production se base sur MySQL):
aptitude install sope4.9-gdl1-postgresql
Configuration
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
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//GNUstep//DTD plist 0.9//EN" "http://www.gnustep.org/plist-0_9.xml">
<plist version="0.9">
<dict>
<key>NSGlobalDomain</key>
<dict>
</dict>
<key>sogod</key>
<dict>
<key>OCSEMailAlarmsFolderURL</key>
<string>postgresql://sogo:sogo@192.168.100.6:9998/sogo/sogo_alarms_folder</string>
<key>OCSFolderInfoURL</key>
<string>postgresql://sogo:sogo@192.168.100.6:9998/sogo/sogo_folder_info</string>
<key>OCSSessionsFolderURL</key>
<string>postgresql://sogo:sogo@192.168.100.6:9998/sogo/sogo_sessions_info</string>
<key>SOGoAppointmentSendEMailNotifications</key>
<string>YES</string>
<key>SOGoEnableEMailAlarms</key>
<string>YES</string>
<key>SOGoForwardEnabled</key>
<string>YES</string>
<key>SOGoIMAPServer</key>
<string>postfix01.admin.pass.be</string>
<key>SOGoLanguage</key>
<string>French</string>
<key>SOGoMailAuxiliaryUserAccountsEnabled</key>
<string>YES</string>
<key>SOGoMailingMechanism</key>
<string>smtp</string>
<key>SOGoSMTPServer</key>
<string>postfix01.admin.pass.be</string>
<key>SOGoProfileURL</key>
<string>postgresql://sogo:sogo@192.168.100.6:9998/sogo/sogo_user_profile</string>
<key>SOGoSieveServer</key>
<string>sieve://192.168.100.5:4190</string>
<key>SOGoSieveScriptsEnabled</key>
<string>YES</string>
<key>SOGoTimeZone</key>
<string>Europe/Brussels</string>
<key>SOGoUserSources</key>
<array>
<dict>
<key>CNFieldName</key>
<string>displayName</string>
<key>IDFieldName</key>
<string>uid</string>
<key>UIDFieldName</key>
<string>uid</string>
<key>IMAPLoginFieldName</key>
<string>cn</string>
<key>IMAPHostFieldName</key>
<string>mailHost</string>
<key>baseDN</key>
<string>ou=Users,dc=admin,dc=pass,dc=be</string>
<key>bindDN</key>
<string>uid=sogo,ou=Applications,dc=admin,dc=pass,dc=be</string>
<key>bindPassword</key>
<string>abcde</string>
<key>canAuthenticate</key>
<string>YES</string>
<key>displayName</key>
<string>Shared Addresses</string>
<key>type</key>
<string>ldap</string>
<key>hostname</key>
<string>192.168.100.34</string>
<key>port</key>
<string>636</string>
<key>encryption</key>
<string>SSL</string>
<key>scope</key>
<string>SUB</string>
<key>passwordPolicy</key>
<string>NO</string>
<key>id</key>
<string>public</string>
<key>isAddressBook</key>
<string>YES</string>
<key>SearchFieldNames</key>
<array>
<string>uid</string>
<string>sn</string>
<string>displayName</string>
<string>telephoneNumber</string>
<string>mail</string>
</array>
</dict>
</array>
<key>SOGoVacationEnabled</key>
<string>YES</string>
<key>SOGoFirstDayOfWeek</key>
<string>1</string>
<key>WOLogFile</key>
<string>/var/log/sogo/sogo.log</string>
<key>WOWorkersCount</key>
<string>3</string>
<key>NGImap4ConnectionStringSeparator</key>
<string>.</string>
<key>SOGoSentFolderName</key>
<string>INBOX.Sent</string>
<key>SOGoDraftsFolderName</key>
<string>INBOX.Drafts</string>
<key>SOGoTrashFolderName </key>
<string>INBOX.Trash</string>
<key>SOGoMailComposeMessageType</key>
<string>html</string>
<key>SOGoMailSignaturePlacement</key>
<string>above</string>
<key>SOGoMailMessageCheck</key>
<string>every_10_minutes</string>
<key>SOGoEnablePublicAccess</key>
<string>YES</string>
</dict>
</dict>
</plist>
Pour utiliser LDAP en version non crypté :
<key>hostname</key> <string>192.168.1.24</string> <key>port</key> <string>389</string>
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 princiaples, relayées vers le port 20000.
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.cliss21.com"
Notez que si vous précisez 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 si ce n'est déjà fait. 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 # activation du module rewrite a2enmod rewrite
Lancement de SOGo
Après cette configuration, il faut redémarrer le daemon sogo (de même qu'après chaque modification du fichier .GNUstepDefaults):
/etc/init.d/sogo restart
Intégration Thunderbird
Il est possible d'intégrer Sogo directement dans Thunderbird via des plugins :
- Sogo-integration
- Sogo-connector
- Lightning
On se rend dans le dossier /var/www/plugins .
On crée un dossier temp qui va nous iader à travailler plus proprement
On se rend dans le dossier pour travailler et télécharger le plugins integrator ( C'est ce plugin qui va réaliser l'installation des autres plugins qu'on airait renseigné )
On change le nom du plugin (Question de facilité de travaille) et on va désarchivez le .xpi
[root@ordi ~]# unzip -oq integrator.xpi
[root@ordi ~]# rm -f integrator.xpi
On va éditer le fichier chrome/content/extensions.rdf et remplacer
isi:updateURL="http://sogo-demo.inverse.ca/plugins/updates.php?plugin=%ITEM_ID%&version=%ITEM_VERSION%&platform=%PLATFORM%">
Par l'IP o le FQDN du serveur sogo
isi:updateURL="http://192.168.1.30/plugins/updates.php?plugin=%ITEM_ID%&version=%ITEM_VERSION%&platform=%PLATFORM%">
On renseigne également les extensions que l'on désire installé de manière automatique (D'autre peuvent être ajoutées) :
<li><Description em:id="{e2fda1a4-762b-4020-b5ad-a41df1933103}" em:name="Lightning"/></li>
<li><Description em:id="sogo-integrator@inverse.ca" em:name="SOGo Integrator"/></li>
<li><Description em:id="sogo-connector@inverse.ca" em:name="SOGo Connector"/></li>On va reconstruire notre fichier integrator.xpi
[root@ordi ~]# mv integrator.xpi /var/www/plugins
[root@ordi ~]# cd /var/www/plugins
[root@ordi ~]# rm -rf temp
Maintenant que notre plugins est configuré, il nous faut éditer le script d'update /var/www/plugins/updates.php .
On va devoir éditer 3 parties du script :
Cette partie renseigne les plugins à installer ainsi que leur numéro de version
$plugins
= array(
"sogo-connector@inverse.ca"
=> array( "application" => "thunderbird",
"version" => "10.0.3",
"filename" => "sogo-connector-10.0.3.xpi" ),
"sogo-integrator@inverse.ca"
=> array( "application" => "thunderbird",
"version" => "10.0.2",
"filename" => "sogo-integrator-10.0.2.xpi" ),
"{e2fda1a4-762b-4020-b5ad-a41df1933103}"
=> array( "application" => "thunderbird",
"version" => "1.2.3",
"filename" => "lightning-1.2.3.xpi" )
);
Cette partie spécifie le numéro des versions de Thunderbird supportée :
$applications
= array( "thunderbird" => "<em:id>{3550f703-e582-4d05-9a08-453d09bdfdc6}</em:id>
<em:minVersion>10.0</em:minVersion>
<em:maxVersion>10.*</em:maxVersion>" );
Dans cette partie, on doit spécifier l'IP du serveur sogo ou son FQDN :
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:em="http://www.mozilla.org/2004/em-rdf#">
<Description about="urn:mozilla:extension:<?php echo $pluginname ?>">
<em:updates>
<Seq>
<li>
<Description>
<em:version><?php echo $plugin["version"] ?></em:version>
<em:targetApplication>
<Description><?php echo $applications[$plugin["application"]] ?>
<em:updateLink>http://192.168.1.30/plugins/<?php echo $plugin["filename"] ?></em:updateLink>
</Description>
</em:targetApplication>
</Description>
</li>
</Seq>
</em:updates>
</Description>
</RDF>
Le fichier complet se trouve ici
Installation
Pour installer le plugin dans Thunderbird :
Le premier compte renseigné dans Thunderbird doit absolument être le compte mail lié à Sogo
- Télécharger le plugin depuis le serveur Sogo : IP ou FQDN/plugins/integrator.xpi
- Dans Thunderbird, Allé sur la page des extensions -> Intaller un module depuis un fichier
- Redémarrez Thunderbird. Thunderbird va installer les extensions puis redémarrer encore une fois tous seul.
- Au redémarrage, le mot de passe lié au compte sogo sera demandé
Astuces/Problèmes
Sent is not an IMAP4 folder
Si on rencontre cette erreur, il faut modifier le fichier de configuration de Sogo en y ajoutant ceci :
<key>SOGoSentFolderName</key> <string>INBOX.Sent</string>
Dans ce cas-ci, Sogo va utiliser le sous dossier Sent qui se trouve dans la boite mail de l'utilisateur.
Disclaimer
TODO
Signature
Pour utiliser la signature, il suffit de d'aller dans l'onglet Préférences -> Courrier IMAP -> Sélectionner le compte -> Cliquer sur signature vide
Pour utiliser les signatures en html, il faut spécifier à Sogo que les messages doivent s'écrire en html. Il faut éditer le fichier de configuration :
Il faut ajouter ces 2 lignes suivantes :
... <key>SOGoMailComposeMessageType</key> <string>html</string> ...
Il ne reste plus qu'a redémarrer le service Sogo :
Email reminders et Vacation messages expiration
Pour les courriels de rappel et l'expiration des messages automatiques, il est nécessaire de mettre en place des taches Cron sous l'utilisateur sogo. Il faut donc avant de créer une tache cron se connecter sous l'utilisateur sogo.
Pour créer une tâche cron :
# m h dom mon dow command 0 * * * * /usr/sbin/sogo-tool expire-autoreply * * * * * /usr/sbin/sogo-ealarms-notify
