SOGo ermöglicht Benutzern gemeinsamen Zugriff auf Kontakte, Kalender und Aufgaben über die Protokolle CardDAV und CalDAV. Mit dem Mailserver kommuniziert es per IMAP und SMTP. Als Nachfolger von OpenGroupware stellt es eine kostenlose und freie Alternative zu kommerziellen Produkten wie Kolab, Zarafa und Zimbra dar.
Die Groupware benötigt eine Datenbank und einen Speicher-Cache.
apt install sogo memcached
Kontakte und Kalender speichern wir in PostgreSQL und erzeugen dafür einen Benutzer und eine leere Datenbank.
su postgres -c "createuser --pwprompt sogo" su postgres -c "createdb --owner sogo sogo" exit
Die zentralle Konfiguration enthält die Zugangsdaten zu allen externen Diensten, beginnt aber mit Einstellungen zur Lokalisierung.
/etc/sogo/sogo.conf{ SOGoLanguage = Deutsch; SOGoTimeZone = Europe/Berlin; SOGoFirstDayOfWeek = 1;
SOGo braucht die Daten des Mailservers, um in der Webanwendung Nachrichten darstellen und verfassen zu können.
SOGoMailingMechanism = smtp; SOGoSMTPServer = localhost; SOGoSentFolderName = Sent; SOGoTrashFolderName = Trash; SOGoDraftsFolderName = Drafts; SOGoIMAPServer = "imaps://localhost:143/?tls=YES"; SOGoSieveServer = "sieve://localhost:4190/?tls=YES"; SOGoIMAPAclConformsToIMAPExt = YES; SOGoVacationEnabled = NO; SOGoForwardEnabled = NO; SOGoSieveScriptsEnabled = NO; SOGoMailMessageCheck = manually; SOGoAppointmentSendEMailNotifications = YES; SOGoMailAuxiliaryUserAccountsEnabled = NO;
Die Zugangsdaten der Postgres-Datenbank werden in der Konfiguration hinterlegt.
SOGoProfileURL = "postgresql://sogo:Password@localhost:5432/sogo/sogo_user_profile"; OCSFolderInfoURL = "postgresql://sogo:Password@localhost:5432/sogo/sogo_folder_info"; OCSSessionsFolderURL = "postgresql://sogo:Password@localhost:5432/sogo/sogo_sessions_folder"; OCSEMailAlarmsFolderURL = "postgresql://sogo:Password@localhost:5432/sogo/sogo_alarms_folder";
SOGo authentifiziert Benutzer via LDAP. Dazu benötigt es einen administrativen Zugang mit Lesezugriff für die Suche in der Benutzer-Datenbank.
SOGoUserSources = ({ type = ldap; hostname = localhost; port = 389; encryption = STARTTLS; baseDN = ou=users,dc=illusioni,dc=de; bindDN = cn=apache,ou=daemons,dc=illusioni,dc=de; bindPassword = Password; CNFieldName = cn; IDFieldName = uid; UIDFieldName = uid; canAuthenticate = YES; isAddressBook = YES; displayName = "Shared Addresses"; id = public; }); }
SOGo enthält den Anwendungsserver SOPE, der lokal auf Port 20000 lauscht. Für einen sicheren Zugang muss man einen Webserver mit Verschlüsselung vorschalten. Statische Inhalte soll der Webserver einfach durchreichen.
/etc/sogo/apache.confRewriteEngine On RewriteRule ^/SOGo/(.*)$ /SOGo/$1 [E=SOGO_REMOTE_USER:%{REMOTE_USER},env=REMOTE_HOST:%{REMOTE_ADDR},PT] Alias /SOGo.woa/WebServerResources/ /usr/lib/GNUstep/SOGo/WebServerResources/ SetEnv proxy-nokeepalive 1 <Directory /usr/lib/GNUstep/SOGo/> Order deny,allow Allow from all AllowOverride None </Directory> <LocationMatch "^/SOGo/so/ControlPanel/Products/.*UI/Resources/.*\.(jpg|png|gif|css|js)"> SetHandler default-handler </LocationMatch> <Proxy http://localhost:20000/SOGo> RequestHeader set "x-webobjects-server-port" "80" RequestHeader set "x-webobjects-server-name" "mail.illusioni.de" RequestHeader set "x-webobjects-server-url" "https://mail.illusioni.de" RequestHeader set "x-webobjects-server-protocol" "HTTP/1.0" RequestHeader set "x-webobjects-remote-user" "%{SOGO_REMOTE_USER}e" RequestHeader set "x-webobjects-remote-host" "%{REMOTE_HOST}e" env=REMOTE_HOST AddDefaultCharset UTF-8 Order allow,deny Allow from all </Proxy>
Nun muss man nur noch diese Konfiguration in den Apache Webserver laden.
Zum Testen der Konfiguration:
plparse /etc/sogo/sogo.conf Parsing '/etc/sogo/sogo.conf' - a dictionary systemctl restart sogod