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.

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

InstalaciónDeSOGoEnUbuntu (última edición 2009-09-10 09:52:04 efectuada por MarianoAbsatz)

Edit and actions menu

  • Página inmutable
  • Información
  • Adjuntos