En la página oficial de SOGo apareció finalmente un repositorio SOGo 1.0.4 para ubuntu.
Es para Intrepid pero parece funcionar OK en Jaunty. Seguiremos la Guía de Instalación (PDF) teniendo en cuenta que en realidad está pensada para Red Hat Enterprise Linux 5.x o CentOS 5.x.
La guía también asume que tenemos instalado el servidor de base datos, el servidor de directorios (LDAP) y los servidores de mail (SMTP/IMAP) en la misma máquina que el SOGo. Yo tengo cada cosa en otro lugar así que intentaremos hacerlo más generalizado.
Mis servidores son:
groupw0: SOGo
mail0: postfix y dovecot
db0: postgresql
ldap0: openldap
En todos los casos son servidores ubuntu con los paquetes instalados de los repositorios oficiales de ubuntu (y luego configurados por mí).
Tenemos también como referencia instrucciones para compilar e instalar SOGo 1.0.1 en jaunty.
Tabla de Contenidos
Instalación
Paquetes necesarios
Si bien estos paquetes son necesarios (o recomendables), no aparecen en las dependencias del SOGo:
sudo apt-get install apache2 apache2-mpm-prefork zip
SOGo & SOGo database connector
sudo sh -c "cat > /etc/apt/sources.list.d/SOGo.list" <<EOF deb http://inverse.ca/debian/ intrepid universe #SOGo repository for intrepid seems to work on jaunty EOF
Instalar:
# instalamos el SOGo y todas sus dependencias (que no son pocas) sudo apt-get install sogo # sope4.9-libxmlsaxdriver no aparece como dependencia, pero es necesario sudo apt-get install sope4.9-libxmlsaxdriver # instalamos el "database connector" para postgresql sudo apt-get install sope49-gdl1-postgresql
en /install-report muestro la salida de consola de esta instalación.
Algunos Warnings
- El repositorio no parece tener una clave GPG, con lo cual nos va a pedir autorización para instalar paquetes sin verificación:
WARNING: The following packages cannot be authenticated! libmemcached2 libsope-xml4.9 libsope-core4.9 libsope-mime4.9 libsope-appserver4.9 libsope-gdl1-4.9 libsope-ldap4.9 sogo Install these packages without verification [y/N]?
Uno de los paquetes que instala (tmpreaper) hace aparecer una ventana de debconf con un aviso de seguridad así:
Please first read README.security Before running tmpreaper for the first time, please read the file /usr/share/doc/tmpreaper/README.security.gz, e.g. with zless. Therein is contained a discussion of possible ways that usage of tmpreaper may be insecure. If after that you still want tmpreaper to run, please edit /etc/tmpreaper.conf and remove the line: echo "Please read /usr/share/doc/tmpreaper/README.security.gz first."; exit 0
La discusión en /usr/share/doc/tmpreaper/README.security.gz a la que hace alusión es más sociológica que técnica... no parecen haber problemas graves de seguridad con el paquete. Hay que darle <OK> y luego comentar en el archivo /etc/tmpreaper.conf la siguiente línea:
SHOWWARNING=true
El usuario sogo que creó la instalación, si bien es un system user (con uid y gid < 1000) tiene su home en /home/sogo cuando en general lo más razonable es que esté en /var, /var/lib o /etc... quizás después lo "mude".
El conector para postgresql instaló no sólo el cliente si no también el server postgres... no lo voy a desinstalar porque no quiero broken dependencies pero una vez que tenga todo andando, voy a configurar que no levante el server local de postgresql.
Configuración del SOGo
De la Guía de Instalación:
Under GNUstep, a specifc file keeps all the user's applications settings and will be edited during our installation. It is located in /home/sogo/GNUstep/Defaults/.GNUstepDefaults as the fle belongs to the “sogo” user. We will use a command-line tool named defaults to edit this configuration database.
The .GNUstepDefaults file is a serialized property list. This simple format encapsulates four basic data types: arrays, dictionaries (or hashes), strings and numbers. A dictionary is a sequence of key and value pairs separated in their middle with a “=” sign. It starts with a “{“ and ends with a corresponding “}”. Each value definition in a dictionary are ended with a semicolon. An array is a chain of values starting with “(“ and ending with “)”, where the values are separated with a “,”. Also, the file generally follows a C-style indentation for clarity but this indentation is not required, only recommended.
La configuración la hacemos con el usuario sogo
datos generales
sudo -u sogo defaults write sogod SOGoServerTimeZone "America/Argentina/Buenos_Aires" sudo -u sogo defaults write sogod WOParsersUseUTF8 YES sudo -u sogo defaults write sogod WOMessageUseUTF8 YES sudo -u sogo defaults write sogod SOGoDefaultMailDomain "example.org" sudo -u sogo defaults write sogod NGUseUTF8AsURLEncoding YES sudo -u sogo defaults write sogod WOUseRelativeURLs NO sudo -u sogo defaults write sogod SOGoDefaultLanguage English sudo -u sogo defaults write sogod SOGoAppointmentSendEMailNotifications YES sudo -u sogo defaults write sogod SOGoFoldersSendEMailNotifications YES sudo -u sogo defaults write sogod SOGoACLsSendEMailNotifications YES sudo -u sogo defaults write sogod WOPort 20000 sudo -u sogo defaults write sogod WOApplicationRedirectURL “http://sogo.example.org”
configuración LDAP
sudo -u sogo defaults write sogod SOGoAuthenticationMethod LDAP
sudo -u sogo defaults write sogod SOGoLDAPSources '(
{
hostname=ldap0;
port=389;
CNFieldName = cn;
IDFieldName = uid;
UIDFieldName = uid;
MailFieldNames = mail;
bindDN = "uid=sogo,ou=daemons,o=organizacion";
bindPassword = clave;
baseDN = "ou=people,o=organizacion";
scope = one;
filter = "(objectClass=cejilMailAccount)"
canAuthenticate = YES;
isAddressBook = NO;
id = authentication;
},
{
hostname=ldap0;
port=389;
CNFieldName = cn;
IDFieldName = uid;
UIDFieldName = uid;
MailFieldNames = mail;
bindfields=uid;
baseDN = "ou=people,o=organizacion";
scope = one;
filter = "(objectClass=cejilMailAccount)"
canAuthenticate = NO;
isAddressBook = YES;
displayName = "Shared addresses";
id = addressbook;
},
)'
configuración base de datos
Hay que crear una base de datos sogo_db en el postgres y un usuario sogo_user con acceso a esa base (también tiene que estar configurado el acceso remoto al postgresql desde el equipo que corre el SOGo).
sudo -u sogo defaults write sogod SOGoProfileURL \
'postgresql://sogo_user:SOGoPassword:5432/sogo_db/sogo_user_profile'
sudo -u sogo defaults write sogod OCSFolderInfoURL \
'postgresql://sogo_user:SOGoPassword@db0:5432/sogo_db/sogo_folder_info'
configuración mail
SMTP
sudo -u sogo defaults write sogod SOGoMailingMechanism smtp sudo -u sogo defaults write sogod SOGoSMTPServer mail0
IMAP
sudo -u sogo defaults write sogod SOGoFallbackIMAP4Server mail0 sudo -u sogo defaults write sogod SOGoDraftsFolderName Drafts sudo -u sogo defaults write sogod SOGoSentFolderName Sent sudo -u sogo defaults write sogod SOGoTrashFolderName Trash sudo -u sogo defaults write sogod SOGoOtherUsersFolderName "Other Users Folders" sudo -u sogo defaults write sogod SOGoSharedFolderName "Shared" #optional: sudo -u sogo defaults write sogod SOGoMailShowSubscribedFoldersOnly NO sudo -u sogo defaults write sogod SOGoIMAPAclUsernamesAreQuoted NO sudo -u sogo defaults write sogod SOGoIMAPAclStyle rfc4314 sudo -u sogo defaults write sogod SOGoIMAPAclConformsToIMAPExt YES sudo -u sogo defaults write sogod SOGoForceIMAPLoginWithEmail NO
configuración interfase web
sudo -u sogo defaults write sogod SOGoUIxDefaultModule Mail
# SOGoFaviconRelativeURL
# SOGoZipPath
# SOGoSoftQuota
# SOGoLDAPContactInfoAttribute
sudo -u sogo defaults write sogod SOGoMailUseOutlookStyleReplies NO
sudo -u sogo defaults write sogod SOGoMailListViewColumnsOrder '(
Invisible,
Attachment,
Priority,
Unread,
From,
Subject,
Date,
Size,
)'
Configuración del Apache
La configuración de SOGo para Apache, que según la Guía de Instalación se instala (en Red Hat) en /etc/httpd/conf.d/SOGo.conf y cuyo equivalente debiano-ubúntico sería /etc/apache2/conf.d/SOGo.conf, en ubuntu no se instala (de hecho, el paquete de ubuntu ni siquiera verifica que esté instalado el apache).
Sin embargo, encontré ese archivo en /usr/share/doc/sogo/examples/SOGo.conf. Mirando el archivo, veo que hay que habilitar el módulo proxy_balancer que viene instalado pero no habilitado. Habilito el módulo, copio la configuración y reinicio el SOGo y el Apache:
sudo a2enmod proxy_balancer proxy_http sudo cp -v /usr/share/doc/sogo/examples/SOGo.conf /etc/apache2/conf.d sudo invoke-rc.d sogo restart sudo invoke-rc.d apache2 restart
.