I would like to write here something about the installation of SOGo on Debian Lenny and Squeeze. I do it here with MySQL, and for authentication I use also use a MySQL table what I create here in this manual. This idea comes from an article in Linux Journal.

Please copy the text (from "# become root") into an editor, and replace the password "secret" with another password. Further, replace the hostname "sogo.vandervlis.nl" with your own hostname, or with e.g. "localhost". When you want to install SOGo on Lenny, please replace "squeeze" with "lenny".

Read it, and make some other changes, you will want other test-users with other passwords then I have. You will want e.g. another timezone, language and maildomain. After that, you can copy/paste it in lines or parts to your terminal.

I am using Sogo with Icedove 3.0.11 from Debian stable, with the Sogo connector from the sogo site: http://www.sogo.nu/files/downloads/extensions/sogo-connector-0.101.xpi I don't use the Sogo-integrator (I think I don't need it), and I don't use the Mozilla Lighting Sogo edition because (it needs Icedove 3.1). I use iceowl-extension from Debian stable, so I cannot edit ACL's in Icedove.

There is still a little problem with workarround: sometimes I cannot create a caldav calendar (the "next" button does not work then). When this happens I disable the sogo-connector, a restart of Icedove is needed. Then I can create the caldav calendar. After this I enable the sogo-connector again and everything works. This does not remove a remote calendar.

The install is fresh, I do not have much experience with it. But the webinterface and Icedove seems to work fine.

# become root
su

# this manual assumes you allready have apache2 running
# if not please install it first.

# change sources.list
echo '# sogo:" >> /etc/apt/sources.list
echo 'deb http://inverse.ca/debian squeeze squeeze' >> /etc/apt/sources.list
apt-get update

# install sogo
apt-get install sogo sope4.9-gdl1-mysql memcached
# you will get an error about the key of the repostitory, there is no key.
# in some cases MySQL is stopped, therefore I start MySQL again:
/etc/init.d/mysql restart
# you will get an security message from tmpreaper, no problem.
# you will get an error when sogo starts, no problem.

# install rpl  (I use it in this manual)
apt-get install rpl

# to read more about the security-issues of tmpreader
zless /usr/share/doc/tmpreaper/README.security.gz
# to remove the warning of tmpreaper
rpl 'SHOWWARNING=true' 'SHOWWARNING=false' /etc/tmpreaper.conf

# memcached
apt-get install memcached
# this is because of IPv6 errors:
rpl '127.0.0.1' localhost /etc/memcached.conf
/etc/init.d/memcached restart

# create a database and add some test-users
mysql  # start mysql client, maybe you will need the -p option

------start mysql------
CREATE DATABASE sogo CHARSET='UTF8';
CREATE USER 'sogo'@'localhost' IDENTIFIED BY 'secret';
GRANT ALL PRIVILEGES ON sogo.* TO 'sogo'@'localhost';
USE sogo;
CREATE TABLE sogo_users (c_uid VARCHAR(10) PRIMARY KEY, c_name VARCHAR(10), c_password VARCHAR(32), c_cn VARCHAR(128), mail VARCHAR(128));
INSERT INTO sogo_users VALUES ('paul', 'paul', MD5('zxc'), 'Paul van der Vlis', 'paul@vandervlis.nl');
INSERT INTO sogo_users VALUES ('piet', 'piet', MD5('zxc'), 'Piet van der Vlis', 'piet@vandervlis.nl');
INSERT INTO sogo_users VALUES ('klaas', 'klaas', MD5('zxc'), 'Klaas van der Vlis', 'klaas@vandervlis.nl');
flush privileges;
exit
----end mysql--------

# add some apache modules
a2enmod proxy
a2enmod proxy_http
a2enmod headers
a2enmod rewrite
# remove default configuration
mv /etc/apache2/conf.d/SOGo.conf /root/SOGo.conf-backup
echo "# disabled" >> /etc/apache2/conf.d/SOGo.conf
# restart
/etc/init.d/apache2 restart

# sogo configuration, as user "sogo"
su sogo
defaults write sogod SOGoTimeZone "Europe/Amsterdam"
defaults write sogod SOGoMailDomain "vandervlis.nl"
defaults write sogod SOGoLanguage "Dutch"
defaults write sogod SOGoUserSources '({canAuthenticate = YES; displayName = "SOGo Users"; id = users; isAddressBook = YES; type = sql; userPasswordAlgorithm = md5; viewURL ="mysql://sogo:secret@127.0.0.1:3306/sogo/sogo_users";})'
defaults write sogod SOGoProfileURL 'mysql://sogo:secret@127.0.0.1:3306/sogo/sogo_user_profile'
defaults write sogod OCSFolderInfoURL 'mysql://sogo:secret@127.0.0.1:3306/sogo/sogo_folder_info'
defaults write sogod OCSSessionsFolderURL 'mysql://sogo:secret@127.0.0.1:3306/sogo/sogo_sessions_folder'
defaults write sogod SOGoAppointmentSendEMailNotifications NO
defaults write sogod SOGoLoginModule Calendar
exit
/etc/init.d/sogo restart

# copy the virtualhost apache configuration and restart apache
pico /etc/apache2/sites-available/sogo.vandervlis.nl

---begin apache config-------
<VirtualHost *:80>
   Servername sogo.vandervlis.nl
   DocumentRoot /usr/lib/GNUstep/SOGo/WebServerResources/
   ErrorLog /var/log/apache2/error.log
   Customlog /var/log/apache2/access.log combined
   ServerSignature Off

   Alias /SOGo.woa/WebServerResources/ /usr/lib/GNUstep/SOGo/WebServerResources/
   Alias /SOGo/WebServerResources/ /usr/lib/GNUstep/SOGo/WebServerResources/
   AliasMatch /SOGo/so/ControlPanel/Products/(.*)/Resources/(.*) /usr/lib/GNUstep/SOGo/$1.SOGo/Resources/$2

   <Directory /usr/lib/GNUstep/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>

   ProxyRequests Off
   SetEnv proxy-nokeepalive 1
   ProxyPreserveHost On
   ProxyPass /SOGo http://127.0.0.1:20000/SOGo retry=0

   <Proxy http://127.0.0.1:20000/SOGo>
     RequestHeader set "x-webobjects-server-port" "80"
     RequestHeader set "x-webobjects-server-name" "sogo.vandervlis.nl"
     RequestHeader set "x-webobjects-server-url" "http://sogo.vandervlis.nl"
     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>
   ## We use mod_rewrite to pass remote address to the SOGo proxy.
   # The remote address will appear in SOGo's log files and in the X-Forward
   # header of emails.
   RewriteEngine On
   RewriteRule ^/SOGo/(.*)$ /SOGo/$1 [env=REMOTE_HOST:%{REMOTE_ADDR},PT]
   RedirectMatch permanent ^/ https://sogo.vandervlis.nl/SOGo
</virtualhost>
----end apache config---------

a2ensite sogo.vandervlis.nl
/etc/init.d/apache2 reload

# Now you can access SOGo on http://sogo.vanderdervlis.nl/SOGo

# Url's for Thunderbird:
# adressbook: http://sogo.vandervlis.nl/SOGo/dav/paul/Contacts/personal/ 
# calendar:   http://sogo.vandervlis.nl/SOGo/dav/paul/Calendar/personal/ 

# If everything works well, you can make it https, with something like this:
pico /etc/apache2/sites-available/sogo.vandervlis.nl

------begin apache config ssl---------
<VirtualHost *:80>
   Servername sogo.vandervlis.nl
   RedirectMatch permanent ^/ https://sogo.vandervlis.nl/SOGo
   RedirectMatch permanent ^/SOGo https://sogo.vandervlis.nl/SOGo
</VirtualHost>

<VirtualHost *:443>
   Servername sogo.vandervlis.nl
   SSLEngine On
   SSLCertificateFile /etc/apache2/ssl/sogo.vandervlis.nl.pem
   SSLCertificateChainFile /etc/apache2/ssl/sogo.vandervlis.nl.pem
   DocumentRoot /usr/lib/GNUstep/SOGo/WebServerResources/
   ErrorLog /var/log/apache2/error.log
   Customlog /var/log/apache2/access.log combined
   ServerSignature Off
   <IfModule mpm_itk_module>
       AssignUserId sogo-a sogo-a
  </IfModule>

   Alias /SOGo.woa/WebServerResources/ /usr/lib/GNUstep/SOGo/WebServerResources/
   Alias /SOGo/WebServerResources/ /usr/lib/GNUstep/SOGo/WebServerResources/
   AliasMatch /SOGo/so/ControlPanel/Products/(.*)/Resources/(.*) /usr/lib/GNUstep/SOGo/$1.SOGo/Resources/$2

   <Directory /usr/lib/GNUstep/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>

   ProxyRequests Off
   SetEnv proxy-nokeepalive 1
   ProxyPreserveHost On
   ProxyPass /SOGo http://127.0.0.1:20000/SOGo retry=0

   <Proxy http://127.0.0.1:20000/SOGo>
     RequestHeader set "x-webobjects-server-port" "443"
     RequestHeader set "x-webobjects-server-name" "sogo.vandervlis.nl"
     RequestHeader set "x-webobjects-server-url" "https://sogo.vandervlis.nl"
     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>
   ## We use mod_rewrite to pass remote address to the SOGo proxy.
   # The remote address will appear in SOGo's log files and in the X-Forward
   # header of emails.
   RewriteEngine On
   RewriteRule ^/SOGo/(.*)$ /SOGo/$1 [env=REMOTE_HOST:%{REMOTE_ADDR},PT]
   RedirectMatch permanent ^/ https://sogo.vandervlis.nl/SOGo
</virtualhost>
------end apache config ssl-----------------

a2ensite sogo.vandervlis.nl
/etc/init.d/apache2 reload

# Now you can access it on https://sogo.vanderdervlis.nl/SOGo

# Url's for Thunderbird:
# adressbook: https://sogo.vandervlis.nl/SOGo/dav/paul/Contacts/personal/ 
# calendar:   https://sogo.vandervlis.nl/SOGo/dav/paul/Calendar/personal/

# please write me if you have an good idea to make this manual better:
# Paul van der Vlis paul@vandervlis.nl
# please don't change the setup of this page without contact.
# I also like something like this:
echo "Your SOGo manual helped me" | mail -s Thanks paul@vandervlis.nl