SOGo: backend on Debian, Web frontend on NetBSD
416 words, 2 minutes
Learn more about SOGo here .
Quickly sumed up, SOGo is a kind of middleware that will provide Web, CalDAV and CardDAV access to you e-mail and web clients. You can check my NetBSD and OpenBSD articles to see how to build the backend Mail/Directory/SQL services. Once this is done, you can plug SOGo on to this architecture and provide E-Mail, Calendar, AddressBook to your users via mobile phones and mail clients.
I’ll describe here how to setup the sogod
backend onto Debian GNU/Linux and
the Web frontend onto NetBSD.
Install SOGo on Debian GNU/Linux
I installed Debian Lenny 5.0 on a Xen domU.
Then setup APT and install the SOGo package:
# vi /etc/apt/sources.list
(...)
deb http://inverse.ca/debian lenny lenny
(...)
# apt-get update
# apt-get install sogo
Configure the MySQL root password in the installation process.
I’m using an external MySQL instance so I disabled mysqld on the Debian
machine:
# /etc/init.d/mysql stop
Stopping MySQL database server: mysqld.
# for FIC in `find /etc/rc*.d -name "S*mysql*"`; do \
mv "$FIC" "`echo $FIC | sed -e 's|/S|/K|'`"; \
done
Configure SOGo. The configuration file is located at
/home/sogo/GNUstep/Defaults/.GNUstepDefaults
.
Install OpenSSL:
# apt-get install openssl
Install the CA and configure LDAP for ldaps access:
# install -o root -g root -m 0644 cacert.pem /etc/ssl/certs/ca.tumfatig.net.pem
# vi /etc/ldap/ldap.conf
(...)
TLS_CACERT /etc/ssl/certs/ca.tumfatig.net.pem
Start the SOGo daemon:
# /etc/init.d/sogo start
# tail /var/log/sogo/sogo.log
Publish SOGo using Apache on NetBSD
Use Apache to run Web front-end and forward CardDAV/CalDAV request to sogod.
On the Debian server, create an archive of the Web resources:
# tar czf SOGoWebResources.tar.bz2 \
/usr/lib/GNUstep/SOGo/WebServerResources \
/usr/lib/GNUstep/SOGo/*.SOGo
Transfer it to the NetBSD server. Untar the files to create $DocumentRoot/SOGo:
# ls SOGo/
./ Contacts.SOGo/ MainUI.SOGo/
../ ContactsUI.SOGo/ PreferencesUI.SOGo/
AdministrationUI.SOGo/ MailPartViewers.SOGo/ SchedulerUI.SOGo/
Appointments.SOGo/ Mailer.SOGo/ WebServerResources/
CommonUI.SOGo/ MailerUI.SOGo/
Modify httpd.conf
to publish SOGo:
# vi /usr/pkg/etc/httpd/httpd.conf
(...)
Listen 0.0.0.0:8800
(...)
# SOGo AJAX-based Web interface
ProxyRequests Off
ProxyPreserveHost On
Alias /SOGo.woa/WebServerResources/ /SOGo/WebServerResources/
Alias /SOGo/WebServerResources/ /SOGo/WebServerResources/
AliasMatch /SOGo/so/ControlPanel/Products/(.*)/Resources/(.*)
/SOGo/$1.SOGo/Resources/$2
<Directory /SOGo/>
AllowOverride None
Order deny,allow
Allow from all
</Directory>
<LocationMatch "^/SOGo/so/ControlPanel/Products/.*UI/Resources/.*.(jpg|png|gif|css|js)">
SetHandler default-handler
</LocationMatch>
SetEnv proxy-nokeepalive 1
ProxyPass /SOGo http://10.0.0.62:20000/SOGo retry=0
<Proxy http://10.0.0.62:20000/SOGo>
RequestHeader set "x-webobjects-server-port" "443"
RequestHeader set "x-webobjects-server-name" "www.tumfatig.net"
RequestHeader set "x-webobjects-server-url" "https://www.tumfatig.net"
RequestHeader set "x-webobjects-server-protocol" "HTTP/1.0"
RequestHeader set "x-webobjects-remote-host" %{REMOTE_HOST}e env=REMOTE_HOST
AddDefaultCharset UTF-8
Order allow,deny
Allow from all
</Proxy>
RewriteEngine On
RewriteRule ^/SOGo/(.*)$ /SOGo/$1 [env=REMOTE_HOST:%{REMOTE_ADDR},PT]
(...)
<VirtualHost *:8800>
(...)
ProxyRequests Off
ProxyPreserveHost On
ProxyPass /principals http://sogo.tumfatig.net:20000/SOGo/dav/
ProxyPass /SOGo http://sogo.tumfatig.net:20000/SOGo
ProxyPass / http://sogo.tumfatig.net:20000/SOGo/dav/
AddDefaultCharset UTF-8
</VirtualHost>
Reload Apache and enjoy!