2014-09-30 10:13:21 -05:00
< html >
< head >
< meta http-equiv = "Content-Type" content = "text/html; charset=utf-8" / >
2015-01-14 03:25:16 -06:00
< title > Install SOGo groupware on CentOS 6 with iRedMail (MySQL backend)< / title >
2014-09-30 10:13:21 -05:00
< link href = "./css/markdown.css" rel = "stylesheet" > < / head >
< / head >
< body >
< div id = "navigation" >
< a href = "http://www.iredmail.org" target = "_blank" > iRedMail web site< / a >
// < a href = "./index.html" > Document Index< / a >
2015-01-14 03:25:16 -06:00
< / div > < h1 id = "install-sogo-groupware-on-centos-6-with-iredmail-mysql-backend" > Install SOGo groupware on CentOS 6 with iRedMail (MySQL backend)< / h1 >
2014-09-30 10:13:21 -05:00
< div class = "toc" >
< ul >
2015-01-14 03:25:16 -06:00
< li > < a href = "#install-sogo-groupware-on-centos-6-with-iredmail-mysql-backend" > Install SOGo groupware on CentOS 6 with iRedMail (MySQL backend)< / a > < ul >
2014-09-30 10:13:21 -05:00
< li > < a href = "#requirements" > Requirements< / a > < / li >
< li > < a href = "#install-sogo" > Install SOGo< / a > < / li >
2015-01-14 03:25:16 -06:00
< li > < a href = "#create-required-sql-database" > Create required SQL database< / a > < / li >
2014-09-30 10:13:21 -05:00
< li > < a href = "#configure-sogo" > Configure SOGo< / a > < / li >
2015-01-14 10:09:13 -06:00
< li > < a href = "#configure-web-server" > Configure web server< / a > < ul >
2014-10-12 05:03:59 -05:00
< li > < a href = "#apache-web-server" > Apache web server< / a > < / li >
< li > < a href = "#nginx-web-server" > Nginx web server< / a > < / li >
< / ul >
< / li >
2014-09-30 10:13:21 -05:00
< li > < a href = "#start-sogo-and-dependent-services" > Start SOGo and dependent services< / a > < / li >
2015-01-14 10:09:13 -06:00
< li > < a href = "#add-dovecot-master-user-used-for-vacation-message-expiration" > Add Dovecot Master User, used for vacation message expiration< / a > < / li >
< li > < a href = "#add-required-cron-jobs" > Add required cron jobs< / a > < / li >
2015-01-14 03:25:16 -06:00
< li > < a href = "#access-sogo-from-web-browser" > Access SOGo from web browser< / a > < / li >
< li > < a href = "#configure-your-mail-clients-or-mobile-devices-to-use-caldavcarddav-services" > Configure your mail clients or mobile devices to use CalDav/CardDAV services< / a > < / li >
2015-01-14 10:09:13 -06:00
< li > < a href = "#todo" > TODO< / a > < / li >
2014-09-30 10:13:21 -05:00
< / ul >
< / li >
< / ul >
< / div >
< h2 id = "requirements" > Requirements< / h2 >
< ul >
< li > A working iRedMail server (MySQL backend) on CentOS 6.< / li >
< / ul >
< h2 id = "install-sogo" > Install SOGo< / h2 >
< ul >
< li > Make sure you have EPEL repo enabled, if not, please follow < a href = "https://fedoraproject.org/wiki/EPEL#How_can_I_use_these_extra_packages.3F" > this wiki
tutorial< / a >
to enable it.< / li >
< / ul >
< pre > < code > # yum repolist | grep -i 'epel'
epel Extra Packages for Enterprise Linux 6 - x86_64 11,109
< / code > < / pre >
< ul >
< li > Add yum repo file < code > /etc/yum.repos.d/sogo.repo< / code > :< / li >
< / ul >
< pre > < code > [SOGo]
name=Inverse SOGo Repository
baseurl=http://inverse.ca/downloads/SOGo/RHEL6/$basearch
gpgcheck=0
< / code > < / pre >
< ul >
< li > Install SOGo and dependences:< / li >
< / ul >
2015-01-14 03:25:16 -06:00
< pre > < code > # yum install sogo sope49-gdl1-mysql sogo-activesync sogo-ealarms-notify sogo-tool
< / code > < / pre >
< ul >
< li > Append an alias entry in Postfix config file < code > /etc/postfix/aliases< / code > , so that
notifications of cron jobs will be sent to mail server administrator.< / li >
< / ul >
< pre > < code > # Part of file: /etc/postfix/aliases
sogo: root
2014-09-30 10:13:21 -05:00
< / code > < / pre >
2015-01-14 03:25:16 -06:00
< p > Execute command to update alias db:< / p >
< pre > < code > # postalias /etc/postfix/aliases
< / code > < / pre >
< h2 id = "create-required-sql-database" > Create required SQL database< / h2 >
< p > SOGo will store some data (e.g. user preferences, sieve rules) in SQL database,
so we need to create a database for it.< / p >
2014-09-30 10:13:21 -05:00
< pre > < code > $ mysql -u root -p
mysql> CREATE DATABASE sogo CHARSET='UTF8';
mysql> GRANT ALL ON sogo.* TO sogo@localhost IDENTIFIED BY 'password';
mysql> GRANT SELECT ON vmail.mailbox TO sogo@localhost;
2015-01-14 03:25:16 -06:00
mysql> CREATE VIEW sogo.users (c_uid, c_name, c_password, c_cn, mail, home) AS SELECT username, username, password, name, username, CONCAT(storagebasedirectory, '/', storagenode, '/', maildir) FROM vmail.mailbox WHERE active=1;
2014-09-30 10:13:21 -05:00
< / code > < / pre >
2015-01-14 03:25:16 -06:00
< p > Note: SOGo will create required SQL tables automatically, we don't need to
create them manually.< / p >
2014-09-30 10:13:21 -05:00
< h2 id = "configure-sogo" > Configure SOGo< / h2 >
2015-01-14 03:25:16 -06:00
< p > Default SOGo config file is < code > /etc/sogo/sogo.conf< / code > . We have a sample config file
for you, just replace MySQL username/password in this file, then it's done.< / p >
< p > With below config file, SOGo will listen on address < code > 127.0.0.1< / code > , port < code > 20000< / code > .< / p >
2014-10-12 05:03:59 -05:00
< pre > < code > {
2015-01-14 03:25:16 -06:00
// Official SOGo documents:
// - http://www.sogo.nu/english/support/documentation.html
// - http://wiki.sogo.nu
//
// Mailing list:
// - http://www.sogo.nu/english/support/community.html
// Enable verbose logging. Reference:
// http://www.sogo.nu/nc/support/faq/article/how-to-enable-more-verbose-logging-in-sogo.html
//ImapDebugEnabled = YES;
//LDAPDebugEnabled = YES;
//MySQL4DebugEnabled = YES;
//PGDebugEnabled = YES;
// Daemon address and port
2014-09-30 10:13:21 -05:00
WOPort = 127.0.0.1:20000;
2015-01-14 03:25:16 -06:00
// PID file
//WOPidFile = /var/log/sogo/sogo.log;
// IMAP connection pool.
// Your performance will slightly increase, as you won't open a new
// connection for every access to your IMAP server.
// But you will get a lot of simultaneous open connections to your IMAP
// server, so make sure he can handle them.
// For debugging it is reasonable to turn pooling off.
//NGImap4DisableIMAP4Pooling = NO;
SOGoProfileURL = " mysql://sogo:password@127.0.0.1:3306/sogo/sogo_user_profile" ;
OCSFolderInfoURL = " mysql://sogo:password@127.0.0.1:3306/sogo/sogo_folder_info" ;
OCSSessionsFolderURL = " mysql://sogo:password@127.0.0.1:3306/sogo/sogo_sessions_folder" ;
// Default language in the web interface
SOGoLanguage = English;
// Specify which module to show after login: Calendar, Mail, Contacts.
SOGoLoginModule = Mail;
// Must login with full email address
SOGoForceExternalLoginWithEmail = YES;
// Allow user to change full name and email address.
SOGoMailCustomFromEnabled = YES;
2014-09-30 10:13:21 -05:00
2014-10-12 05:03:59 -05:00
// Enable email-based alarms on events and tasks.
SOGoEnableEMailAlarms = YES;
2015-01-14 03:25:16 -06:00
OCSEMailAlarmsFolderURL = " mysql://sogo:password@127.0.0.1:3306/sogo/sogo_alarms_folder" ;
2014-10-12 05:03:59 -05:00
2015-01-14 03:25:16 -06:00
// IMAP server
2014-10-30 07:22:36 -06:00
//SOGoIMAPServer = " imaps://127.0.0.1:143/?tls=YES" ;
// Local connection is considered as secure by Dovecot.
SOGoIMAPServer = " imap://127.0.0.1:143/" ;
2014-09-30 10:13:21 -05:00
2015-01-14 03:25:16 -06:00
// SMTP server
2014-09-30 10:13:21 -05:00
SOGoMailingMechanism = smtp;
SOGoSMTPServer = 127.0.0.1;
2015-01-14 03:25:16 -06:00
//SOGoSMTPAuthenticationType = PLAIN;
2014-09-30 10:13:21 -05:00
// Enable managesieve service
2014-10-30 07:22:36 -06:00
//
// WARNING: Sieve scripts generated by SOGo is not compatible with Roundcube
// webmail, don't use sieve service in both webmails, otherwise
// it will be messy.
//
2015-01-14 03:25:16 -06:00
//SOGoSieveServer = sieve://127.0.0.1:4190;
2014-10-30 07:22:36 -06:00
//SOGoSieveScriptsEnabled = YES;
//SOGoVacationEnabled = YES;
//SOGoForwardEnabled = YES;
2014-09-30 10:13:21 -05:00
2015-01-14 03:25:16 -06:00
// Memcached
2014-09-30 10:13:21 -05:00
SOGoMemcachedHost = 127.0.0.1;
2015-01-14 03:25:16 -06:00
SOGoTimeZone = " America/New_York" ;
2014-09-30 10:13:21 -05:00
SOGoFirstDayOfWeek = 1;
2015-01-14 03:25:16 -06:00
SOGoRefreshViewCheck = every_5_minutes;
SOGoMailReplyPlacement = below;
2014-09-30 10:13:21 -05:00
SOGoAppointmentSendEMailNotifications = YES;
SOGoFoldersSendEMailNotifications = YES;
SOGoACLsSendEMailNotifications = YES;
2015-01-14 03:25:16 -06:00
// PostgreSQL cannot update view
2014-09-30 10:13:21 -05:00
SOGoPasswordChangeEnabled = YES;
2015-01-14 03:25:16 -06:00
// Authentication using SQL
SOGoUserSources = (
2014-09-30 10:13:21 -05:00
{
type = sql;
2015-01-14 03:25:16 -06:00
id = vmail_mailbox;
2014-10-30 07:22:36 -06:00
viewURL = " mysql://sogo:password@127.0.0.1:3306/sogo/users" ;
2014-09-30 10:13:21 -05:00
canAuthenticate = YES;
2015-01-14 03:25:16 -06:00
// Default algorithm used when changing passwords.
userPasswordAlgorithm = ssha;
2014-09-30 10:13:21 -05:00
prependPasswordScheme = YES;
2014-10-30 07:22:36 -06:00
2015-01-14 03:25:16 -06:00
// Use vmail.mailbox as global address book.
// WARNING: This will search all user accounts, not just accounts
// under same domain as login user.
//isAddressBook = YES;
//displayName = " Global Address Book" ;
2014-09-30 10:13:21 -05:00
}
);
2014-10-12 05:03:59 -05:00
}
2014-09-30 10:13:21 -05:00
< / code > < / pre >
2015-01-14 10:09:13 -06:00
< h2 id = "configure-web-server" > Configure web server< / h2 >
< p > To access SOGo groupware (webmail/calendar/contact), we need to configure
web server.< / p >
2014-10-12 05:03:59 -05:00
< h3 id = "apache-web-server" > Apache web server< / h3 >
< p > SOGo installs config file < code > /etc/httpd/conf.d/SOGo.conf< / code > by default, please
open it and find below lines:< / p >
< pre > < code > #ProxyPass /Microsoft-Server-ActiveSync \
# http://127.0.0.1:20000/SOGo/Microsoft-Server-ActiveSync \
# retry=60 connectiontimeout=5 timeout=360
< / code > < / pre >
< p > Remove < code > #< / code > at the beginning to enable ActiveSync support:< / p >
< pre > < code > ProxyPass /Microsoft-Server-ActiveSync \
http://127.0.0.1:20000/SOGo/Microsoft-Server-ActiveSync \
retry=60 connectiontimeout=5 timeout=360
< / code > < / pre >
< h3 id = "nginx-web-server" > Nginx web server< / h3 >
2015-01-14 03:25:16 -06:00
< p > If you're running Nginx web server configured by iRedMail, please open file
< code > /etc/nginx/conf.d/default.conf< / code > , add some lines in < code > server {}< / code > configured for
HTTPS:< / p >
2014-10-12 05:03:59 -05:00
< pre > < code > server {
listen 443;
...
# Add below lines for SOGo
# SOGo
2015-01-14 03:25:16 -06:00
location ~ ^/sogo { rewrite ^ https://$host/SOGo; }
location ~ ^/SOGO { rewrite ^ https://$host/SOGo; }
# For IOS 7
location = /principals/ {
rewrite ^ https://$server_name/SOGo/dav;
allow all;
}
2014-10-12 05:03:59 -05:00
location ^~ /SOGo {
proxy_pass http://127.0.0.1:20000;
#proxy_redirect http://127.0.0.1:20000/SOGo/ /SOGo;
# forward user's IP address
#proxy_set_header X-Real-IP $remote_addr;
#proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#proxy_set_header Host $host;
proxy_set_header x-webobjects-server-protocol HTTP/1.0;
#proxy_set_header x-webobjects-remote-host 127.0.0.1;
#proxy_set_header x-webobjects-server-name $server_name;
#proxy_set_header x-webobjects-server-url $scheme://$host;
}
location ^~ /Microsoft-Server-ActiveSync {
proxy_pass http://127.0.0.1:20000/SOGo/Microsoft-Server-ActiveSync;
proxy_redirect http://127.0.0.1:20000/Microsoft-Server-ActiveSync /;
}
location ^~ /SOGo/Microsoft-Server-ActiveSync {
proxy_pass http://127.0.0.1:20000/SOGo/Microsoft-Server-ActiveSync;
proxy_redirect http://127.0.0.1:20000/SOGo/Microsoft-Server-ActiveSync /;
}
location /SOGo.woa/WebServerResources/ {
2015-01-14 03:25:16 -06:00
alias /usr/lib64/GNUstep/SOGo/WebServerResources/;
2014-10-12 05:03:59 -05:00
}
location /SOGo/WebServerResources/ {
2015-01-14 03:25:16 -06:00
alias /usr/lib64/GNUstep/SOGo/WebServerResources/;
2014-10-12 05:03:59 -05:00
}
location ^/SOGo/so/ControlPanel/Products/([^/]*)/Resources/(.*)$ {
2015-01-14 03:25:16 -06:00
alias /usr/lib64/GNUstep/SOGo/$1.SOGo/Resources/$2;
2014-10-12 05:03:59 -05:00
}
}
< / code > < / pre >
2015-01-14 03:25:16 -06:00
< p > < strong > Important note< / strong > : You must replace path < code > /usr/lib/GNUstep/SOGo< / code > with
2014-10-12 05:03:59 -05:00
the real directory which contains SOGo files:< / p >
< ul >
2015-01-14 03:25:16 -06:00
< li > on i386 platform, it's < code > /usr/lib/GNUstep/SOGo< / code > .< / li >
< li > on x86_64, it's < code > /usr/lib64/GNUstep/SOGo< / code > .< / li >
2014-10-12 05:03:59 -05:00
< / ul >
2014-09-30 10:13:21 -05:00
< h2 id = "start-sogo-and-dependent-services" > Start SOGo and dependent services< / h2 >
2015-01-14 10:09:13 -06:00
< pre > < code > # service httpd restart # < - restart 'nginx' service if you're running Nginx
2015-01-14 03:25:16 -06:00
# service memcached restart
2015-01-14 10:09:13 -06:00
# service sogod restart
< / code > < / pre >
< h2 id = "add-dovecot-master-user-used-for-vacation-message-expiration" > Add Dovecot Master User, used for vacation message expiration< / h2 >
2015-01-17 21:50:10 -06:00
< p > SOGo need a Dovecot Master User to cleanup vacation expiration, please follow
our tutorial to add a Dovecot Master User for this purpose:< / p >
< p > < a href = "./dovecot.master.user.html" > Dovecot Master User< / a > < / p >
2015-01-14 10:09:13 -06:00
< h2 id = "add-required-cron-jobs" > Add required cron jobs< / h2 >
< p > Please add below cron jobs for SOGo daemon user < code > sogo< / code > . You can add them with
command: < code > crontab -l -u sogo< / code > < / p >
< pre > < code > # iRedMail: SOGo email reminder, should be run every minute.
* * * * * /usr/sbin/sogo-ealarms-notify
# iRedMail: SOGo session cleanup, should be run every minute.
# Ajust the [X]Minutes parameter to suit your needs
# Example: Sessions without activity since 30 minutes will be dropped:
* * * * * /usr/sbin/sogo-tool expire-sessions 30
# iRedMail: SOGo vacation messages expiration
# The credentials file should contain the sieve admin credentials (username:passwd)
0 0 * * * /usr/sbin/sogo-tool expire-autoreply -p /etc/sogo/sieve.cred
2014-09-30 10:13:21 -05:00
< / code > < / pre >
2015-01-14 03:25:16 -06:00
< h2 id = "access-sogo-from-web-browser" > Access SOGo from web browser< / h2 >
< p > Open your favourite web browser, access URL: < code > https://[your_server]/SOGo< / code > (the
word < code > SOGo< / code > is case-sensitive), you can login with your email account credential.< / p >
< h2 id = "configure-your-mail-clients-or-mobile-devices-to-use-caldavcarddav-services" > Configure your mail clients or mobile devices to use CalDav/CardDAV services< / h2 >
< p > Please check our documents < a href = "./index.html#configure-mail-client-applications" > here< / a >
to configure your mail clients or mobile devices.< / p >
2015-01-14 10:09:13 -06:00
< h2 id = "todo" > TODO< / h2 >
< ul >
< li > Add Dovecot Master User, for vacation message expiration< / li >
< / ul > < p style = "text-align: center; color: grey;" > Document published under a < a href = "http://creativecommons.org/licenses/by-nd/3.0/us/" target = "_blank" > CC BY-ND 3.0< / a > license. If you found something wrong, please do < a href = "http://www.iredmail.org/contact.html" > contact us< / a > to fix it.<!-- Google Analytics -->
2014-10-13 19:28:43 -05:00
< script type = "text/javascript" >
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
< / script >
< script type = "text/javascript" >
try {
var pageTracker = _gat._getTracker("UA-3293801-14");
pageTracker._trackPageview();
} catch(err) {}
< / script >
< / body > < / html >