SOGo Guide
SOGo Guide
5
Installation and Configuration Guide
Contents
Chapter 1
Chapter 2
Introduction
Architecture
Chapter 3
3
4
System Requirements
Assumptions 6
Chapter 4
Installation
Software Downloads
Software Installation 9
Chapter 5
Configuration
10
10
11
General Preferences 12
Authentication using LDAP
17
22
23
24
Database Configuration
24
26
28
29
31
35
Multi-domains Configuration
36
Apache Configuration
Starting Services
39
39
40
40
41
Funambol
43
Chapter 8
Using SOGo
46
42
46
46
47
Apple AddressBook
47
Upgrading
50
Chapter 10
Additional Information 52
Chapter 11
53
Chapter 1
This guide will walk you through the installation and configuration of the SOGo solution. It also
covers the installation and configuration of Funambol the middleware used to synchronize
mobile devices with SOGo.
The instructions are based on version 2.0.5 of SOGo, and version 10.0 of Funambol.
The latest version of this guide is available at
http://www.sogo.nu/downloads/documentation.html.
Chapter 2
2 Introduction
SOGo is a free and modern scalable groupware server. It offers shared calendars, address books,
and emails through your favourite Web browser and by using a native client such as Mozilla
Thunderbird and Lightning.
SOGo is standard-compliant. It supports CalDAV, CardDAV, GroupDAV, iMIP and iTIP and
reuses existing IMAP, SMTP and database servers - making the solution easy to deploy and
interoperable with many applications.
SOGo features :
Scalable architecture suitable for deployments from dozens to many thousands of users
Rich Web-based interface that shares the look and feel, the features and the data of Mozilla
Thunderbird and Lightning
Improved integration with Mozilla Thunderbird and Lightning by using the SOGo Connector
and the SOGo Integrator
Introduction
Chapter 2
Architecture
The following diagram demonstrates the SOGo architecture.
Standard protocols such as CalDAV, CardDAV, GroupDAV, HTTP, IMAP and SMTP are used to
communicate with the SOGo platform or its sub-components. Mobile devices supporting the
SyncML standard use the Funambol middleware to synchronize information.
To install and configure the native Microsoft Outlook compatibility layer, please refer to the
SOGo Native Microsoft Outlook Configuration Guide.
Introduction
Chapter 3
3 System Requirements
Assumptions
SOGo reuses many components in an infrastructure. Thus, it requires the following :
LDAP server
SMTP server
Postfix 2.x
IMAP server
More recent versions of the software mentioned above can also be used.
System Requirements
Chapter 3
Desktop
General
Intel, AMD, or PowerPC CPU 1.5 GHz
1024x768 monitor resolution
512 MB of RAM
128 Kbps or higher network connection
Microsoft Windows
Microsoft Windows XP SP2 or Vista
Apple Mac OS X
Apple Mac OS X 10.2 or later
Linux
Your favourite GNU/Linux distribution
Mobile Device
Any mobile device which supports the SyncML 1.0 or 1.1 standard.
Recommended
Palm OS based devices with Synthesis SyncML Client
Research In Motion (RIM) BlackBerry devices with Funambol client
Microsoft Windows Mobile PocketPC or SmartPhone with the
Funambol client
Apple iPhone / iPod / iPad using Apple iOS 3.0 or later
System Requirements
Chapter 3
System Requirements
Chapter 4
4 Installation
This section will guide you through the installation of SOGo together with its dependencies. The
steps described here apply to an RPM-based installation for a Red Hat or CentOS distribution.
Software Downloads
SOGo can be installed using the yum utility. To do so, first create the
/etc/yum.repos.d/inverse.repo configuration file with the following content :
[SOGo]
name=Inverse SOGo Repository
baseurl=http://inverse.ca/downloads/SOGo/RHEL6/$basearch
gpgcheck=0
Some of the softwares on which SOGo depends are available from the repository of RepoForge
(previously known as RPMforge). To add RepoForge to your packages sources, download and
install the appropriate RPM package from http://packages.sw.be/rpmforge-release/. Also make
sure you enabled the rpmforge-extras repository.
For more information on using RepoForge, visit http://repoforge.org/use/.
Software Installation
Once the yum configuration file has been created, you are now ready to install SOGo and its
dependencies. To do so, proceed with the following command :
yum install sogo
This will install SOGo and its dependencies such as GNUstep, the SOPE packages and
memcached. Once the base packages are installed, you need to install the proper database
connector suitable for your environment. You need to install sope49-gdl1-postgresql for the
PostgreSQL database system, sope49-gdl1-mysql for MySQL or sope49-gdl1-oracle for
Oracle. The installation command will thus look like this :
yum install sope49-gdl1-postgresql
Once completed, SOGo will be fully installed on your server. You are now ready to configure it.
2008-2013 Inverse inc.
Installation
Chapter 5
5 Configuration
In this section, you'll learn how to configure SOGo to use your existing LDAP, SMTP and
database servers. As previously mentioned, we assume that those components run on the same
server on which SOGo is being installed. If this is not the case, please adjust the configuration
parameters to reflect those changes.
Configuration
10
Chapter 5
Preferences Hierarchy
SOGo supports domain names segregation, meaning that you can separate multiple groups of
users within one installation of SOGo. A user associated to a domain is limited to access only
the users data from the same domain. Consequently, the configuration parameters of SOGo are
defined on three levels:
Each level inherits the preferences of the parent level. Therefore, domain preferences define the
defaults values of the user preferences, and the system preferences define the default values of
all domains preferences. Both system and domains preferences are defined in the
/etc/sogo/sogo.conf, while the users preferences are configurable by the user and stored in
SOGo's database.
To identify the level in which each parameter can be defined, we use the following
abbreviations in the tables of this document :
S Parameter exclusive to the system and not configurable per domain
D Parameter exclusive to a domain and not configurable per user
U Parameter configurable by the user
Remember that the hierarchy paradigm allow the default value of a parameter to be defined at a
parent level.
Configuration
11
Chapter 5
General Preferences
The following table describes the general parameters that can be set :
S WOWorkersCount
S WOPort
S WOLogFile
The file path where to log messages. Specify to log to the console.
Defaults to /var/log/sogo/sogo.log.
S WOPidFile
S WOWatchDogRequestTimeout
S SxVMemLimit
S SOGoMemcachedHost
Configuration
12
Chapter 5
S SOGoCacheCleanupInterval
S SOGoAuthenticationType
SOGoTrustProxyAuthentication
SOGoEncryptionKey
S SOGoCASServiceURL
S SOGoAddressBookDAVAccessEnabled
S SOGoCalendarDAVAccessEnabled
S SOGoSAML2PrivateKeyLocation
S SOGoSAML2CertiticateLocation
S SOGoSAML2IdpMetadataLocation
S SOGoSAML2IdpPublicKeyLocation
Configuration
13
Chapter 5
S SOGoSAML2IdpCertificateLocation
S SOGoSAML2LogoutEnabled
D SOGoTimeZone
D SOGoMailDomain
D SOGoACLsSendEMailNotifications
D SOGoCalendarDefaultRoles
Configuration
14
Chapter 5
values:
Viewer
DAndTViewer
Modifier
Responder
The array can also contain one or many of the
following strings:
ObjectCreator
ObjectEraser
Example: SOGoCalendarDefaultRoles =
("ObjectCreator", "PublicViewer");
D SOGoContactsDefaultRoles
U SOGoLanguage
15
Chapter 5
Welsh
D SOGoNotifyOnPersonalModifications
D SOGoNotifyOnExternalModifications
D SOGoLDAPContactInfoAttribute
D SOGoiPhoneForceAllDayTransparency
S SOGoEnablePublicAccess
S SOGoPasswordChangeEnabled
S SOGoSupportedLanguages
Configuration
16
Chapter 5
"BrazilianPortuguese", "Polish",
"Russian", Ukrainian", "Swedish" )
D SOGoHideSystemEMail
D SOGoSearchMinimumWordLength
In our example, we use a LDAP server running on the same host where SOGo is being installed.
You can also, using the filter attribute, restrict the results to match various criteria. For example,
you could define, in your .GNUstepDefaults file, the following filter to return only entries
belonging to the organization Inverse with a mail address and not inactive:
2008-2013 Inverse inc.
Configuration
17
Chapter 5
filter = "(o='Inverse' AND mail='*' AND status <> 'inactive')";
Since LDAP sources can serve as user repositories for authentication as well as address books,
you can specify the following for each source to make them appear in the address book
module:
displayName = "<human identification name of the address book>";
isAddressBook = YES;
For certain LDAP sources, SOGo also supports indirect binds for user authentication. Here is an
example :
SOGoUserSources = (
{
type = ldap;
CNFieldName = cn;
IDFieldName = cn;
UIDFieldName = sAMAccountName;
baseDN = "cn=Users,dc=acme,dc=com";
bindDN = "cn=sogo,cn=Users,dc=acme,dc=com";
bindFields = (sAMAccountName);
bindPassword = qwerty;
canAuthenticate = YES;
displayName = "Active Directory";
hostname = ldap://10.0.0.1:389;
id = directory;
isAddressBook = YES;
}
);
In this example, SOGo will use an indirect bind by first determining the user DN. That value is
found by doing a search on the fields specified in bindFields. Most of the time, there will be
only one field but it is possible to specify more in the form of an array (for example,
bindFields = (sAMAccountName, cn) ). When using multiple fields, only one of the fields
needs to match the login name. In the above example, when a user logs in, the login will be
checked against the sAMAccountName entry in all the user cards, and once this card is found,
the user DN of this card will be used for checking the user's password.
Finally, SOGo supports LDAP-based groups. Groups must be defined like any other
authentication sources (ie., canAuthenticate must be set to YES and a group must have a valid
email address). In order for SOGo to determine if a specific LDAP entry is a group, SOGo will
look for one of the following objectClass attributes :
group
groupOfNames
groupOfUniqueNames
posixGroup
Configuration
18
Chapter 5
You can set ACLs based on group membership and invite a group to a meeting (and the group
will be decomposed to its list of members upon save by SOGo). You can also control the
visibility of the group from the list of shared address books or during mail autocompletion by
setting the isAddressBook parameter to YES or NO. The following LDAP entry shows how a
typical group is defined :
dn: cn=inverse,ou=groups,dc=inverse,dc=ca
objectClass: groupOfUniqueNames
objectClass: top
objectClass: extensibleObject
uniqueMember: uid=alice,ou=users,dc=inverse,dc=ca
uniqueMember: uid=bernard,ou=users,dc=inverse,dc=ca
uniqueMember: uid=bob,ou=users,dc=inverse,dc=ca
cn: inverse
structuralObjectClass: groupOfUniqueNames
mail: [email protected]
The corresponding SOGoUserSources entry to handle groups like this one would be :
{
type = ldap;
CNFieldName = cn;
IDFieldName = cn;
UIDFieldName = cn;
baseDN = "ou=groups,dc=inverse,dc=ca;
bindDN = "cn=sogo,ou=services,dc=inverse,dc=ca";
bindPassword = zot;
canAuthenticate = YES;
displayName = Inverse Groups;
hostname = ldap://127.0.0.1:389;
id = inverse_groups;
isAddressBook = YES;
}
The following table describes the possible parameters related to a LDAP source :
D SOGoUserSources
CNFieldName
IDFieldName
Configuration
19
Chapter 5
This field must be unique across the entire SOGo domain
UIDFieldName
MailFieldNames
SearchFieldNames
IMAPHostFieldName
(optional)
IMAPLoginFieldName
(optional)
SieveHostFieldName
(optional)
baseDN
KindFieldName (optional)
the field that returns the IMAP hostname for the user
the field that returns the IMAP login name for the user
(defaults to the value of UIDFieldName when unset)
the field that returns the Sieve hostname for the user
the base DN of your user entries
if set, SOGo will try to determine if the value of the field
corresponds to either group, location or thing. If
that's the case, SOGo will consider the returned entry to
be a resource.
For LDAP-based sources, SOGo can also automatically
determine if it's a resource if the entry has the
calendarresource objectClass set.
MultipleBookingsFieldName
(optional)
filter (optional)
scope (optional)
bindDN
bindPassword
bindAsCurrentUser
bindFields (optional)
hostname
if set, SOGo will read the value of that field and prevent
over-booking resources. If not set, 0 is considered, which
means no limit.
the LDAP filter
either BASE, ONE or SUB
the DN of the login name to use for binding to your
server
its password
if set to YES, SOGo will always keep binding to the LDAP
server using the DN of the currently authenticated user. If
bindFields is set, bindDN and bindPassword will still be
required to find the proper DN of the user.
an array of fields to use when doing indirect binds
a space-delimited list of LDAP URLs or LDAP hostnames.
LDAP URLs are specified in RFC 4516 and have the
following general format:
scheme://host:port/DN?attributes?scope?
filter?extensions
Configuration
20
Chapter 5
Note that SOGo doesn't currently support DN,
attributes, scope and filter in such URLs. Using
them may have undefined side effects.
URLs examples:
ldap://127.0.0.1:3389 ldaps://127.0.0.1
ldap://127.0.0.1/????!StartTLS
port(deprecated)
encryption (deprecated)
userPasswordAlgorithm
canAuthenticate
passwordPolicy
isAddressBook
displayName (optional)
ModulesConstraints (optional)
mapping
Configuration
21
Chapter 5
fields in user by the active schemas of the LDAP source.
Each entry must have a field name as key and an array of
strings as value. This enables actual fields to be mapped
one after another when fetching contact informations.
objectClasses
modifiers
abOU
The following parameters can be defined along the other keys of each entry of the
SOGoUserSources, but can also defined at the domain and/or system levels :
D SOGoLDAPContactInfoAttribute
D SOGoLDAPQueryLimit
D SOGoLDAPQueryTimeout
givenName
cn
mail
sn
Please refer to the documentation of the software you use in order to index those attributes.
Configuration
22
Chapter 5
Configuration
23
Chapter 5
Database Configuration
SOGo requires a relational database system in order to store appointments, tasks and contacts
information. It also uses the database system to store personal preferences of SOGo users. In this
guide, we assume you use PostgreSQL so commands provided the create the database are
related to this application. However, other database servers are supported, such as MySQL and
Oracle.
First, make sure that your PostgreSQL server has TCP/IP connections support enabled.
Create the database user and schema using the following commands :
su postgres
createuser --no-superuser --no-createdb -no-createrole \
-encrypted --pwprompt sogo
(specify sogo as password)
createdb -O sogo sogo
You should then adjust the access rights to the database. To do so, modify the configuration file
/var/lib/pgsql/data/pg_hba.conf in order to add the following line at the very beginning
of the file:
host
sogo
sogo
127.0.0.1/32
md5
Once added, restart the PostgreSQL database service. Then, modify the SOGo configuration file
(/etc/sogo/sogo.conf) to reflect your database settings :
Configuration
24
Chapter 5
SOGoProfileURL =
"postgresql://sogo:sogo@localhost:5432/sogo/sogo_user_profile";
OCSFolderInfoURL =
"postgresql://sogo:sogo@localhost:5432/sogo/sogo_folder_info";
OCSSessionsFolderURL =
"postgresql://sogo:sogo@localhost:5432/sogo/sogo_sessions_folder";
D OCSFolderInfoURL
D OCSSessionsFolderURL
Configuration
25
Chapter 5
If you're using MySQL, make sure in your my.cnf file you have :
[mysqld]
...
character_set_server=utf8
character_set_client=utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
and when you create the SOGo database, you correctly specify the charset :
create database sogo CHARSET='UTF8';
Parameter used to set the SQL and/or LDAP sources used for
authentication and global address books. Multiple sources can
be specified as an array of dictionaries. A dictionary that
defines a SQL source can contain the following values :
type
id
viewURL
userPasswordAlgorithm
2008-2013 Inverse inc.
the type of this user source, set to sql for a SQL source
the identification name of the SQL repository. This must be
unique even when using multiple domains.
database URL of the view used by SOGo. The view expects
columns to be present. Required columns are :
c_uid : will be used for authentication it's a username
or [email protected]
c_name : will be used to uniquely identify entries which
can be identical to c_uid
c_password : password of the user, plain text, crypt, md5
or sha encoded
c_cn : the user's common name
mail : the user's email address
Other columns can exist and will actually be mapped
automatically if they have the same name as popular LDAP
attributes (such as givenName, sn, department, title,
telephoneNumber, etc.)
The default algorithm used for password encryption when
Configuration
26
Chapter 5
changing passwords.
Possible values are: none, plain, crypt, md5, md5-crypt,
smd5, cram-md5, ldap-md5, and sha, sha256, sha512 and
its ssha (e.g. ssha or ssha256) variants. Passwords can have
the scheme prepended in the form
{scheme}encryptedPass.
If no scheme is given, userPasswordAlgorithm is used
instead. The schemes listed above follow the algorithms
described in
http://wiki.dovecot.org/Authentication/PasswordSchemes.
Note that cram-md5 is not actually using cram-md5 (due to
the lack of challenge-response mechanism), its
just saving the intermediate MD5 context as Dovecot stores
in its database.
prependPasswordScheme
canAuthenticate
isAddressBook
authenticationFilter
(optional)
displayName (optional)
LoginFieldNames (optional)
MailFieldNames (optional)
IMAPHostFieldName
(optional)
IMAPLoginFieldName
(optional)
SieveHostFieldName
(optional)
KindFieldName (optional)
MultipleBookingsFieldNam
e (optional)
2008-2013 Inverse inc.
Configuration
27
Chapter 5
means no limit.
DomainFieldName
(optional)
If set, SOGo will use the value of that field as the domain
associated to the user. See the Multi-domains
Configuration section in this document for more
information.
Note that groups are currently not supported for SQL-based authentication sources.
D SOGoSMTPServer
D SOGoSMTPAuthenticationType
Configuration
28
Chapter 5
S WOSendMail
D SOGoForceExternalLoginWithEmail
U SOGoSentFolderName
U SOGoTrashFolderName
D SOGoIMAPServer
D SOGoSieveServer
Configuration
29
Chapter 5
sieve://localhost
sieve://localhost:2000
sieve://localhost:2000/?tls=YES
Note that TLS is supported but SSL is not.
U SOGoMailShowSubscribedFoldersOnly Parameter used to specify if the Web interface
should only show subscribed IMAP folders.
Possible values are :
YES
NO
Defaults to NO when unset.
D SOGoIMAPAclStyle
D SOGoIMAPAclConformsToIMAPExt
D SOGoForceExternalLoginWithEmail
D SOGoMailSpoolPath
S NGImap4ConnectionStringSeparator
S NGImap4AuthMechanism
D NGImap4ConnectionGroupPrefix
Configuration
30
Chapter 5
permissions for the individual user. The default
prefix is '$'.
S SOGoPageTitle
U SOGoLoginModule
S SOGoFaviconRelativeURL
S SOGoZipPath
D SOGoSoftQuotaRatio
U SOGoMailUseOutlookStyleReplies
(not currently editable in Web interface)
U SOGoMailListViewColumnsOrder
(not currently editable in Web interface)
D SOGoVacationEnabled
Configuration
31
Chapter 5
When enabling this parameter, one must also
enable the associated cronjob in
/etc/cron.d/sogo in order to activate automatic
vacation message expiration.
See the Cronjob Vacation messages
expiration section below for details.
D SOGoForwardEnabled
D SOGoSieveScriptsEnabled
D SOGoMailPollingIntervals
U SOGoMailMessageCheck
D SOGoMailAuxiliaryUserAccountsEnabled
U SOGoDefaultCalendar
Configuration
32
Chapter 5
personal
first
Defaults to selected when unset.
U SOGoDayStartTime
U SOGoDayEndTime
U SOGoFirstDayOfWeek
U SOGoFirstWeekOfYear
U SOGoTimeFormat
U SOGoCalendarCategories
U SOGoCalendarDefaultCategoryColor
D SOGoFreeBusyDefaultInterval
Configuration
33
Chapter 5
information. The parameter is an array of two
numbers, the first being the number of days
prior to the current day and the second being
the number of days following the current day.
Defaults to (7, 7) when unset.
U SOGoBusyOffHours
U SOGoMailMessageForwarding
U SOGoMailCustomFullName
U SOGoMailCustomEmail
U SOGoMailReplyPlacement
U SOGoMailReplyTo
U SOGoMailSignaturePlacement
U SOGoMailComposeMessageType
S SOGoEnableEMailAlarms
Configuration
34
Chapter 5
on events and tasks.
Defaults to NO when unset.
For this feature to work correctly, one must also
set the OCSEMailAlarmsFolderURL parameter
and enable the associated cronjob.
See the Cronjob EMail reminders section
from this document for more information.
U SOGoContactsCategories
D SOGoUIAdditionalJSFiles
D SOGoMailCustomFromEnabled
D SOGoUIxAdditionalPreferences
Configuration
35
Chapter 5
{
SOGoProfileURL =
"postgresql://sogo:sogo@localhost:5432/sogo/sogo_user_profile";
OCSFolderInfoURL =
"postgresql://sogo:sogo@localhost:5432/sogo/sogo_folder_info";
OCSSessionsFolderURL =
"postgresql://sogo:sogo@localhost:5432/sogo/sogo_sessions_folder";
SOGoAppointmentSendEMailNotifications = YES;
SOGoCalendarDefaultRoles = (
PublicViewer,
ConfidentialDAndTViewer
);
SOGoLanguage = English;
SOGoMailDomain = acme.com;
SOGoDraftsFolderName = Drafts;
SOGoIMAPServer = localhost;
SOGoUserSources = (
{
type = ldap;
CNFieldName = cn;
IDFieldName = uid;
UIDFieldName = uid;
baseDN = "ou=users,dc=acme,dc=com";
bindDN = "uid=sogo,ou=users,dc=acme,dc=com";
bindPassword = qwerty;
canAuthenticate = YES;
displayName = "Shared Addresses";
hostname = localhost;
id = public;
isAddressBook = YES;
port = 389;
}
);
SOGoMailingMechanism = smtp;
SOGoSMTPServer = 127.0.0.1;
SOGoSentFolderName = Sent;
SOGoTimeZone = America/Montreal;
SOGoTrashFolderName = Trash;
}
Multi-domains Configuration
If you want your installation to isolate two groups of users, you must define a distinct
authentication source for each domain. Following is the same configuration that now includes
two domains (acme.com and coyote.com) :
Configuration
36
Chapter 5
{
SOGoProfileURL =
"postgresql://sogo:sogo@localhost:5432/sogo/sogo_user_profile";
OCSFolderInfoURL =
"postgresql://sogo:sogo@localhost:5432/sogo/sogo_folder_info";
OCSSessionsFolderURL =
"postgresql://sogo:sogo@localhost:5432/sogo/sogo_sessions_folder";
SOGoAppointmentSendEMailNotifications = YES;
SOGoCalendarDefaultRoles = (
PublicViewer,
ConfidentialDAndTViewer
);
SOGoLanguage = English;
SOGoMailingMechanism = smtp;
SOGoSMTPServer = 127.0.0.1;
SOGoSentFolderName = Sent;
SOGoTimeZone = America/Montreal;
SOGoTrashFolderName = Trash;
SOGoIMAPServer = localhost;
domains = {
acme = {
SOGoMailDomain = acme.com;
SOGoDraftsFolderName = Drafts;
SOGoUserSources = (
{
type = ldap;
CNFieldName = cn;
IDFieldName = uid;
UIDFieldName = uid;
baseDN = "ou=users,dc=acme,dc=com";
bindDN = "uid=sogo,ou=users,dc=acme,dc=com";
bindPassword = qwerty;
canAuthenticate = YES;
displayName = "Shared Addresses";
hostname = localhost;
id = public_acme;
isAddressBook = YES;
port = 389;
}
);
};
coyote = {
SOGoMailDomain = coyote.com;
SOGoIMAPServer = imap.coyote.com;
SOGoUserSources = (
{
type = ldap;
CNFieldName = cn;
IDFieldName = uid;
UIDFieldName = uid;
baseDN = "ou=users,dc=coyote,dc=com";
bindDN = "uid=sogo,ou=users,dc=coyote,dc=com";
Configuration
37
Chapter 5
bindPassword = qwerty;
canAuthenticate = YES;
displayName = "Shared Addresses";
hostname = localhost;
id = public_coyote;
isAddressBook = YES;
port = 389;
}
);
};
};
}
The following additional parameters only affect SOGo when using multiple domains.
S SOGoEnableDomainBasedUID
S SOGoLoginDomains
S SOGoDomainsVisibility
Configuration
38
Chapter 5
Apache Configuration
The SOGo configuration for Apache is located in /etc/httpd/conf.d/SOGo.conf.
Upon SOGo installation, a default configuration file is created which is suitable for most
configurations.
You must also configure the following parameters in the SOGo configuration file for Apache in
order to have a working installation :
RequestHeader set "x-webobjects-server-port" "80"
RequestHeader set "x-webobjects-server-name" "yourhostname"
RequestHeader set "x-webobjects-server-url" "http://yourhostname"
You may consider enabling SSL on top of this current installation to secure access to your SOGo
installation.
See http://httpd.apache.org/docs/2.2/ssl/ for details.
You might also have to adjust the configuration if you have SELinux enabled.
The default configuration will use mod_proxy and mod_headers to relay requests to the sogod
parent process. This is suitable for small to medium deployments.
Starting Services
Once SOGo if fully installed and configured, start the services using the following command :
service sogod start
You may verify using the chkconfig command that the SOGo service is automatically started
at boot time. Restart the Apache service since modules and configuration files were added :
service httpd restart
Finally, you should also make sure that the memcached service is started and that it is also
automatically started at boot time.
Configuration
39
Chapter 5
/usr/sbin/sogo-ealarms-notify
Configuration
40
Chapter 6
Load the LDIF file inside your LDAP server using the following command :
ldapadd -f sogo.ldif -x -w qwerty -D cn=Manager,dc=acme,dc=com
Finally, set the password (to the value qwerty) of the SOGo administrative account using the
following command :
ldappasswd -h localhost -x -w qwerty -D cn=Manager,dc=acme,dc=com
uid=sogo,ou=users,dc=acme,dc=com -s qwerty
41
Chapter 6
Load the LDIF file inside your LDAP server using the following command :
ldapadd -f jdoe.ldif -x -w qwerty -D cn=Manager,dc=acme,dc=com
Finally, set the password (to the value qwerty) of the SOGo administrative account using the
following command :
ldappasswd -h localhost -x -w qwerty -D cn=Manager,dc=acme,dc=com
uid=jdoe,ou=users,dc=acme,dc=com -s qwerty
As an alternative to using command-line tools, you can also use LDAP editors such as Luma or
Apache Directory Studio to make your work easier. These GUI utilities can make use of
templates to create and pre-configure typical user accounts or any standardized LDAP record,
along with the correct object classes, fields and default values.
42
Chapter 7
7 Funambol
The Funambol middleware allows you to synchronize mobile devices with SOGo through the
use of the Funambol SOGo Connector. The connector allows any SyncML enabled devices to
fully synchronize contacts, events and tasks with SOGo.
First of all, install and configure Funambol v10.0.3 which can be found from
http://sourceforge.net/projects/funambol/files/bundle/v10/. We suppose Funambol was installed
in /opt/Funambol.
If running after installation, stop the Funambol server using :
/opt/Funambol/bin/funambol.sh stop
The Funambol SOGo Connector currently supports only MySQL, Oracle and PostgreSQL. You
can download the jar file for PostgreSQL from http://jdbc.postgresql.org/. For Oracle, please
refer to the following site :
http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/htdocs/jdbc_10201.html and
download the ojdbc14.jar file. For MySQL, please refer to the following site :
http://dev.mysql.com/usingmysql/java/
You must also download the JSON.simple package from http://code.google.com/p/jsonsimple/downloads/list and place it in :
/opt/Funambol/tools/tomcat/lib/
Then, open the /opt/Funambol/ds-server/install.properties file and add "funambolsogo-1.0.9" at the end of the "modules-to-install" line.
Start the Funambol server using :
Funambol
43
Chapter 7
/opt/Funambol/bin/funambol start
Next, install the Funambol SOGo Connector within Funambol server by issuing the following
commands :
cd /opt/Funambol/
./bin/install-modules
Log in.
Go in Modules > sogo > FunambolSOGoConnector > SOGo SyncSource and add a source for
each data type you would like to synchronize. For example, to synchronize an address book,
you would specify:
Source URI:
Name:
Supported type:
Database URL:
Database username:
Database password:
sogo-card
sogo-card
text/x-vcard
jdbc:postgresql://localhost/sogo
sogo
sogo
You can then do the same (and specify the same database connection information) for events
and tasks using sogo-cal and sogo-todo as sync source names and URI.
If you want to auto-create Funambol user accounts for every users that can authenticate to
SOGo, you can use the SOGoOfficer to do so. From the Funambol Administration Tool, in
"Server Settings", set the Officer to the following value :
ca/inverse/sogo/security/SOGoOfficer.xml
change the host property to the host name value of your SOGo server. Change the port property
to the port value of your sogod daemon. No server restart is required. In our example, the file
would look like :
Funambol
44
Chapter 7
<?xml version="1.0" encoding="UTF-8"?>
<java version="1.4.0" class="java.beans.XMLDecoder">
<object class="ca.inverse.sogo.security.SOGoOfficer">
<void property="host">
<string>localhost</string>
</void>
<void property="port">
<string>20000</string>
</void>
</object>
</java>
Funambol
45
Chapter 8
8 Using SOGo
Using SOGo
46
Chapter 8
Click on OK.
To access your personal calendar:
Select CalDAV.
Click on Continue.
Apple iCal
Apple iCal can also be used as a client application for SOGo.
To configure it so it works with SOGo, create a new account and specify, as the Account URL,
an URL such as :
http://localhost/SOGo/dav/jdoe/
Note that the trailing slash is important for Apple iCal 3.
Apple AddressBook
Since Mac OS X 10.6 (Snow Leopard), Apple AddressBook can be configured to use SOGo.
In order to make this work, you must add a new virtual host in your Apache configuration file to
listen on port 8800 and handle requests coming from iOS devices.
The virtual host should be defined like :
Using SOGo
47
Chapter 8
<VirtualHost *:8800>
RewriteEngine Off
ProxyRequests Off
SetEnv proxy-nokeepalive 1
ProxyPreserveHost On
ProxyPassInterpolateEnv On
ProxyPass /principals http://127.0.0.1:20000/SOGo/dav/ interpolate
ProxyPass /SOGo http://127.0.0.1:20000/SOGo interpolate
ProxyPass / http://127.0.0.1:20000/SOGo/dav/ interpolate
<Location />
Order allow,deny
Allow from all
</Location>
<Proxy http://127.0.0.1:20000>
RequestHeader set "x-webobjects-server-port" "8800"
RequestHeader set "x-webobjects-server-name" "acme.com:8800"
RequestHeader set "x-webobjects-server-url" "http://acme.com:8800"
RequestHeader set "x-webobjects-server-protocol" "HTTP/1.0"
RequestHeader set "x-webobjects-remote-host" "127.0.0.1"
AddDefaultCharset UTF-8
</Proxy>
ErrorLog /var/log/apache2/ab-error.log
CustomLog /var/log/apache2/ab-access.log combined
</VirtualHost>
This configuration is also required if you want to configure a CardDAV account on a Apple iOS
device (version 4.0 and later).
Using SOGo
48
Chapter 8
For contacts:
sogo-card
For events:
sogo-cal
For tasks:
sogo-todo
The user name / password is the same as the one you can use to log in SOGo.
For more details on mobile devices, such as Apple iPhone, please refer to the SOGo Mobile
Devices Installation and Configuration guide available from http://www.sogo.nu.
Using SOGo
49
Chapter 9
9 Upgrading
This section describes what needs to be done when upgrading to the current version of SOGo
from the previous release.
2.0.5
The configuration is now stored in /etc/sogo/sogo.conf. Perform the following commands as
root to migrate your previous user defaults:
install -d -m 750 -o root -g sogo /etc/sogo
sudo -u sogo sogo-tool dump-defaults > /etc/sogo/sogo.conf
chown root:sogo /etc/sogo/sogo.conf
chmod 640 /etc/sogo/sogo.conf
sudo -u sogo mv ~sogo/GNUstep/Defaults/.GNUstepDefaults \
~sogo/GNUstep/Defaults/GNUstepDefaults.old
2.0.4
The parameter SOGoForceIMAPLoginWithEmail is now deprecated and is replaced by
SOGoForceExternalLoginWithEmail (which extends the functionality to SMTP
authentication). Update your configuration if you use this parameter.
The sogo user is now a system user. For new installs, this means that su - sogo won't work
anymore. Please use sudo -u sogo <cmd> instead. If used in scripts from cronjobs,
requiretty must be disabled in sudoers.
1.3.17
Run the shell script sql-update-1.3.16_to_1.3.17.sh or sql-update1.3.16_to_1.3.17-mysql.sh (if you use MySQL).
This will grow the cycle info field of calendar tables to a larger size.
1.3.12
Once you have updated and restarted SOGo, run the shell script sql-update1.3.11_to_1.3.12.sh or sql-update-1.3.11_to_1.3.12-mysql.sh (if you use
MySQL).
This will grow the content field of calendar and addressbook tables to a larger size and fix
the primary key of the session table.
1.3.9
For Red Hat-based distributions, version 1.23 of GNUstep will be installed. Since the location
2008-2013 Inverse inc.
Upgrading
50
Chapter 9
of the Web resources changes, the Apache configuration file (SOGo.conf) has been adapted.
Verify your Apache configuration if you have customized this file.
51
Chapter 10
10 Additional Information
For more information, please consult the online FAQs (Frequently Asked Questions) :
http://www.sogo.nu/english/support/faq.html
You can also read the mailing archives or post your questions to it. For details, see :
https://inverse.ca/sogo/lists
Additional Information
52
Chapter 11
Information
53