Progetto

Generale

Profilo

Installare e configurare SOGo

Sogo è un interessante software di groupware in grado di
fornire le funzionalità di exchange integrando diversi servizi già
disponibili.

Installazione e configurazione dei servizi

Il software viene fornito già pacchettizzato per Debian Lenny, per questo è
sufficiente aggiungere la seguente riga a /etc/apt/sources.list:

deb http://inverse.ca/debian lenny lenny

ed installarlo con:

apt-get install sogo

Nelle dipendenze verrà installato anche tmpreaper che richiede, per
funzionare, una modifica al file di configurazione /etc/tmpreaper.conf,
commentando la riga come nell'esempio seguente:

#SHOWWARNING=true

Il passo successivo è configurare Apache per SOGo, il pacchetto inserisce la
sua configurazione in /etc/apache2/conf.d/SOGo.conf ma richiede l'uso di
aulcuni moduli (in particolare di Proxy) che non è detto siano installati di
default, per questo è necessario abilitare i moduli necessari con:

a2enmod headers proxy proxy_connect proxy_http

Inoltre si dovrà cambiare la configurazione di Apache per inserire il corretto
nome a dominio da utilizzare per l'interfaccia web, per questo occorre
modificare le seguenti righe di SOGo.conf:

 RequestHeader set "x-webobjects-server-name" "mail.truelite.it" 
 RequestHeader set "x-webobjects-server-url" "https://mail.truelite.it" 

Si dovranno inoltre impostare alcune configurazioni di default per SOGo,
questo deve essere fatto usando il comando defaults dall'utente sogo,
pertanto si dovranno eseguire i comandi:

su - sogo
defaults write sogod SOGoTimeZone "Europe/Rome" 
defaults write sogod SOGoMailDomain "truelite.it" 
defaults write sogod SOGoLanguage Italian
defaults write sogod SOGoAppointmentSendEMailNotifications YES
defaults write sogod SOGoFoldersSendEMailNotifications YES
defaults write sogod SOGoACLsSendEMailNotifications YES

fatto questo ci si potrà collegare al proprio server andando all'URL:

http://sogo.truelite.it/SOGo

e si dovrà ottenere la pagina di login di SOGo.

Per poter utilizzare il programma via web occorrerà però prima configurare un
meccanismo di autenticazione. Se gli utenti sono su LDAP questo può essere
fatto definendo la opportuna fonte con:

defaults write sogod SOGoUserSources '({CNFieldName = cn;
     IDFieldName = uid; UIDFieldName = uid;
     baseDN = "ou=People,dc=truelite,dc=it";
     bindDN = "cn=admin,dc=truelite,dc=it";
     bindPassword = pippopluto; canAuthenticate = YES;
     displayName = "LDAP"; hostname = "localhost"; id = public;
     isAddressBook = NO;  port=389})'

Se si vuole utilizzare l'addressbook su LDAP (che però è disponibile in sola
lettura, e quindi di scarsa utilità) si deve mettere come parametro:

isAddressBook = YES;

ma la configurazione di una fonte di utenti su LDAP però non consente di avere
i dati dell'addressbook in un ramo diverso rispetto a quello degli utenti, la
qual cosa è a dir poco seccante, per questo si è usata la configurazione
precedente. Idem per il fatto che di debba usare l'account amministrativo per
accedere ai dati degli utenti invece di affidarsi direttamente alla
autenticazione degli stessi sul LDAP.

É comunque possibile utilizzare un addressbook globale su LDAP se questo è su
un ramo diverso dell'albero, definendo una ulteriore sorgente, in cui si
blocca l'autenticazione e si attiva invece l'uso come addressbook. In questo
caso è più facile operare direttamente sulle configurazioni di GNUStep, queste
sono nel file GNUstep/Defaults/.GNUstepDefaults nella home dell'utente
sogo, la precedente istruzione inserisce nel file stesso una voce:

SOGoUserSources = (
     {
CNFieldName = cn;
IDFieldName = uid;
UIDFieldName = uid;
baseDN = "ou=People,dc=truelite,dc=it";
bindDN = "cn=admin,dc=truelite,dc=it";
bindPassword = pippopluto;
canAuthenticate = YES;
displayName = LDAP;
hostname = localhost;
id = public;
isAddressBook = NO;
port = 389;
}
);

la nuova fonte si aggiunge all'interno delle parentesi tonde con un altro
campo fra parentesi graffe, aggiungendo qualcosa del tipo:

       SOGoUserSources = (
            {
                CNFieldName = cn;
        ...
                id = public;
                isAddressBook = NO;
                port = 389;
            },
            {
                CNFieldName = cn;
                IDFieldName = uid;
                UIDFieldName = uid;
                baseDN = "ou=Contacts,dc=truelite,dc=it";
                bindDN = "cn=admin,dc=truelite,dc=it";
                bindPassword = pippopluto;
                canAuthenticate = NO;
                displayName = LDAP;
                hostname = localhost;
                id = "LDAP addressbook";
                isAddressBook = YES;
                port = 389;
            }
    );

ma si ricordi di aver cura di usare un valore diverso per la chiave id per ciascuna fonte.

Per poter usufruire delle funzionalità di calendario e address book esterni si
può comunque fare ricorso ad un database. Si possono usare sia PostgreSQL che
MySQL, ed è richiesta la creazione di un database dedicato con relativo
utente. Nel caso di MySQL basterà seguire le istruzioni di MySQLInitConf per creare
il tutto e poi si dovrà indicare a SOGo dove inserire i suoi dati con:

defaults write sogod SOGoProfileURL 'mysql://sogo:sogo@localhost:3306/sogo/sogo_user_profile'
defaults write sogod OCSFolderInfoURL 'mysql://sogo:sogo@localhost:3306/sogo/sogo_folder_info'

e volendo si può anche aggiungere una fonte per un addressbook globale su MySQL con una ulteriore
sezione:

       SOGoUserSources = (
            {
                CNFieldName = cn;
        ...        

            },
            {
                CNFieldName = cn;
        ...
                id = "LDAP addressbook";
                isAddressBook = YES;
                port = 389;
            },
           {
                type = sql;
                id = "SQL AddressBook";
                viewURL = "mysql://sogo:sogo@localhost:3306/sogo/sogo_view" 
                canAuthenticate = NO;
                isAddressBook = YES;
            }
        );

e di nuovo si usi un valore di id diverso.