How to install SOGo on CentOS 6 with iRedMail (MySQL backend)

Requirements

Install SOGo

# yum repolist | grep -i 'epel'
epel              Extra Packages for Enterprise Linux 6 - x86_64          11,109
[SOGo]
name=Inverse SOGo Repository
baseurl=http://inverse.ca/downloads/SOGo/RHEL6/$basearch
gpgcheck=0
# yum install sogo sope49-gdl1-mysql sogo-activesync libwbxml

Create SQL database to store SOGo data

$ mysql -u root -p

mysql> CREATE DATABASE sogo CHARSET='UTF8';
mysql> GRANT ALL ON sogo.* TO sogo@localhost IDENTIFIED BY 'password';

-- TODO
mysql> GRANT SELECT ON vmail.mailbox TO sogo@localhost;

mysql> CREATE VIEW sogo.sogo_users (c_uid, c_name, c_password, c_cn, mail, home) AS SELECT username, username, password, name, username, maildir FROM vmail.mailbox;

Configure SOGo

Default SOGo config file is /etc/sogo/sogo.conf:

(
    SOGoProfileURL = "mysql://sogo:password@localhost:3306/sogo/sogo_user_profile";
    OCSFolderInfoURL = "mysql://sogo:password@localhost:3306/sogo/sogo_folder_info";
    OCSSessionsFolderURL = "mysql://sogo:password@localhost:3306/sogo/sogo_sessions_folder";

    SOGoIMAPServer = "127.0.0.1";
    SOGoDraftsFolderName Drafts
    SOGoSentFolderName Sent
    SOGoTrashFolderName Trash

    SOGoMailingMechanism = smtp;
    SOGoSMTPServer = 127.0.0.1;

    // Enable managesieve service
    SOGoSieveServer = sieve://127.0.0.1:4190;
    SOGoSieveScriptsEnabled = YES;
    SOGoVacationEnabled = YES;

    SOGoFirstDayOfWeek = 1;

    SOGoMailMessageCheck = every_5_minutes;
    SOGoForceExternalLoginWithEmail = YES;
    SOGoAppointmentSendEMailNotifications = YES;
    SOGoFoldersSendEMailNotifications YES
    SOGoACLsSendEMailNotifications YES

    SOGoUserSources =
    (
        {
            type = sql;
            id = directory;
            viewURL = "mysql://sogo:password@127.0.0.1:3306/sogo/sogo_users";
            canAuthenticate = YES;
            isAddressBook = YES;
            userPasswordAlgorithm = md5;
            prependPasswordScheme = YES;
        }
    );

NOTE: SOGo will create required SQL tables automatically (sogo_user_profile, sogo_folder_info, sogo_sessions_folder, ...), we don't need to create them manually.

Start SOGo and dependent services

service sogod start
service httpd restart
service memcached start

How to configure client applications

Apple Devices

URL for calendar service: http://[host]/SOGo/dav/[user]/

TODO

References:

defaults write sogod OCSEMailAlarmsFolderURL mysql://sogo:password@localhost:3306/sogo/sogo_alarms_folder
defaults write sogod SOGoTimeZone "Europe/Berlin"

defaults write sogod SOGoMailingMechanism smtp
defaults write sogod SOGoSMTPServer 127.0.0.1
defaults write sogod SOGoMemcachedHost 127.0.0.1

defaults write sogod SOGoIMAPServer localhost
defaults write sogod SOGoPasswordChangeEnabled YES
defaults write sogod SOGoSieveScriptsEnabled YES
defaults write sogod SOGoSieveServer sieve://127.0.0.1:4190
defaults write sogod WOPort 127.0.0.1:20000