19.04.2023

GroupWare

Open Xchange
SOGo
Kopano
Zarafa
Kerio Connect
sonstiges

Links zu den Projekten

Zimbra, Zimbra Wiki
Axigen
DOCUframe
OpenGroupware
SmarterMail
Community Projekt Tine.org
Kolab Community, Kolab Enterprise ausprobieren

Groupware Migration

audriga Groupware Migration

Seitenanfang

SOGo

Navigation:
Zero Effort Groupware einrichten
Installation
Konfiguration
sonstiges

SOGo Links:
Download SOGo
VM Images (Zero Effort Groupware)
Webmin SOGo Modul
Webmin StressFree Theme
SOGo Mailinglists
SOGo Community
SOGo Community Mail Archiv
SOGo BugTracking

sonstige Anleitungen:
Anleitung ZEG
ubuntu Wiki SOGo
Debian Wiki SOGo
OpenLDAP ubuntu Wiki
Admin-World SOGo mit Sieve und Dovecot
SOGo mit Dovecot

SOGo ist ein Ableger von OGo (OpenGroupware.org)

Seitenanfang

Zero Effort Groupware einrichten

ZEG anpassen

- Tastaturbelegung der VM auf der Konsole einrichten

apt-get install console-common language-pack-de-base

locale-gen
update-locale LANG="de_DE.UTF-8"
localedef -v -i de_DE -c -f UTF-8 de_DE.UTF-8

dpkg-reconfigure locales
dpkg-reconfigure keyboard-configuration
echo LANGUAGE="de_DE.UTF-8" >> /etc/environment
echo LC_ALL="de_DE.UTF-8" >> /etc/environment

Anmeldung am Webmin

https://<IP-Adresse>:10000
Benutzernamen: sogo
Passwort: sogo

- Webmin konfigurieren
Webmin | Webmin-Konfiguration | Vertraute Verweise | Überprüfung des Verweisenden aktivieren:nein
Hardware | Systemzeit | Ändere Zeitzone: Europa/Berlin

- Admin Account Passwort ändern
System | Benutzer und Gruppen | Benutzer sogo Passwort ändern

- Benutzer einrichten
Server | LDAP Server | Browse Database
Browsing: dc=example,dc=com

es gibt drei Objekte
cn=admin,dc=example,dc=com
ou=people,dc=example,dc=com
ou=service,dc=example,dc=com

unter ou=people,dc=example,dc=com sind die Benutzer angelegt, mit Add new sub-object einen neuen Benutzer erstellen
New object DN:uid=user1
Object classes:

inetOrgPerson
organizationalPerson
person

Andere Attribute
cn:Max Mustermann
sn:Mustermann
givenName:Max
mail:user1@example.com
uid:user1
userPassword:user1

- unter Cyrus den Benutzer auch noch neu anlegen
Server | Cyrus IMAP server | Mailbox tree
create mailbox: user/user1
user's mailbox: deaktivieren

auf der Konsole

cyradm --auth plain --user cyrus localhost

Passwort: sogo

cm - Benutzer anlegen
lm - Benutzer anzeigen

cm user/user1
lm

WBM Zugriff

http://<IP-Adresse>/SOGo
Benutzername: user1
Passwort: user1

 

 

Seitenanfang

Installation unter Ubuntu

- OpenSource Komponenten die benötigt werden

SOGo
OpenChange/Samba4 (Outlook compatibility)
MySQL (database server)
OpenLDAP (LDAP directory)
Cyrus (IMAP server)
Postfix (SMTP server)
Apache (Web server)

- Erweitern der PaketQuellen

# /etc/apt/sources.list.d/SOGo.list
# SOGo Groupware Erweiterung
deb http://inverse.ca/ubuntu precise precise
deb-src http://inverse.ca/ubuntu precise precise
# aktuellste Version (kann Fehler enthalten)
# deb http://inverse.ca/ubuntu-nightly precise precise

- Key importieren

gpg --keyserver subkeys.pgp.net --recv 19CDA6A9810273C4
gpg --export --armor 19CDA6A9810273C4 | sudo apt-key add -

- Installation starten

apt-get update
apt-get install mysql-common mysql-server apache2-mpm-prefork \
		postfix sasl2-bin cyrus-imapd-2.4 cyrus-admin-2.4 \
		samba4 sogo sogo-dbg openchangeserver sogo-openchange \
                openchangeproxy openchange-ocsmanager openchange-rpcproxy \
                ldap-utils libsasl2-modules-ldap postfix-ldap slapd \
                imapproxy libnet-ldap-perl memcached

 

Seitenanfang

Konfiguration

MySQL
Apache
OpenLDAP
SASL
Postfix
Cyrus
Samba
Webmin
SOGo
Cron

Dateien/Befehle Beschreibung
/home/sogo/GNUstep/Defaults/.GNUstepDefaults Konfigurationsdatei
/var/log/sogo/sogo.log LOG Datei
service sogo start SOGo starten
service sogo status SOGo Status
service sogo stop SOGo stop
su - sogo als Benutzer sogo anmelden

http://<SOGO-Server>/SOGo - Zugriff Webmail Anmeldung
http://<SOGO-Server>:10000/ - Webmin Administration

- um alle LOG Files in der Übersicht zu haben, am einfachsten einen Alias anlegen

# /etc/profile.d/aliase.sh
alias tailsogo='tail -f /var/log/syslog /var/log/mysql.log /var/log/mail.log \
/var/log/sogo/sogo.log /var/log/ocsmanager/ocsmanager.log /var/log/samba/log.samba'

 

Seitenanfang

MySQL

Zeichensatz für die Datenbank festlegen

# /etc/mysql/my.cnf
...
[client]
default-character-set	= utf8
...
[mysqld]
character_set_server    = utf8
character_set_client    = utf8
...
[mysql]
default-character-set	= utf8
...

- am MySQL Server anmelden als root

mysql -u root -p

- Datenbank erstellen und Benutzer sogo Zugriff gewähren.

CREATE DATABASE `sogo`;
CREATE USER 'sogo'@'localhost' IDENTIFIED BY 'sogo_UserPasswort';
GRANT ALL PRIVILEGES ON `sogo`.* TO 'sogo'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
exit
Seitenanfang

Apache

- die SOGo.conf wie folgt anpassen

# /etc/apache2/conf.d/SOGo.conf
...
<Proxy http://127.0.0.1:20000/SOGo>
## adjust the following to your configuration
  RequestHeader set "x-webobjects-server-port" "80"
#  RequestHeader set "x-webobjects-server-port" "443"
#  RequestHeader set "x-webobjects-server-name" "yourhostname"
#  RequestHeader set "x-webobjects-server-url" "https://yourhostname"
## When using proxy-side autentication, you need to uncomment and
## adjust the following line:
#  RequestHeader set "x-webobjects-remote-user" "%{REMOTE_USER}e"
  RequestHeader set "x-webobjects-server-protocol" "HTTP/1.0"
  RequestHeader set "x-webobjects-remote-host" %{REMOTE_HOST}e env=REMOTE_HOST
...

- Module Proxy, Headers und Rewrite aktivieren

a2enmod proxy proxy_http headers rewrite include wsgi
service apache2 restart

- wenn noch eine Startseite vor der Webmail Anmeldung läuft noch folgende anpassungen vornehmen, index.shtml als Indexsite aktivieren und SSI aktivieren

# /etc/apache2/mods-enabled/dir.conf
<IfModule mod_dir.c>
          DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm index.shtml
</IfModule>
# /etc/apache2/sites-enabled/000-default
...
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews +Includes
                AllowOverride None
...
Seitenanfang

OpenLDAP

Ubuntu LDAP Wiki
LDAP Howto

Grundkonfiguration

- Port auf dem OpenLDAP läuft auf 3389 ändern, da Samba4 schon 389 benutzt.

# /etc/default/slapd
...
SLAPD_SERVICES="ldap://127.0.0.1:3389/"
...

Struktur mit OUs und Benutzer erstellen

- LDAP Daten zurücksetzen

dpkg-reconfigure slapd

DNS-Domainname:domain.tld
Name der Organisation:domain.tld

- OUs hinzufügen

# sogo.ldif
# Zweite Stufe - Organisationseinheiten
dn: ou=benutzer,dc=domain,dc=tld
objectclass: organizationalunit
ou: benutzer
description: Benutzer OU

dn: ou=service,dc=domain,dc=tld
objectclass: organizationalunit
ou: service
description: Service OU

OUs ins LDAP importieren

ldapadd -h localhost -p 3389 -x -W -D 'cn=admin, dc=domain,dc=tld' -f sogo.ldif

- Benutzer hinzufügen

# user.ldif
# Dritte Stufe - Benutzer
dn: uid=user1,ou=benutzer,dc=domain,dc=tld
cn:Max Mustermann
sn:Mustermann
givenName:Max
mail:user1@domain.tld
uid:user1
userPassword: {SSHA}OR5F+XAEoQ+3mlzZnE6XguqEo4s8G8hn
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person

Benutzer ins LDAP importieren

ldapadd -h localhost -p 3389 -x -W -D 'cn=admin, dc=domain,dc=tld' -f user.ldif

als Admin, Passwort für einen User setzen

ldappasswd -h localhost -p 3389 -xWD cn=admin,dc=domain,dc=tld uid=user1,ou=benutzer,dc=domain,dc=tld -s NewUserPasswd

- Cyrus Service registrieren

# cyrus.ldif
# cyrus Service
dn: cn=cyrus,ou=service,dc=domain,dc=tld
cn: cyrus
sn: cyrus
objectClass: person
objectClass: top
userPassword: sogo
ldapadd -h localhost -p 3389 -x -W -D 'cn=admin, dc=domain,dc=tld' -f cyrus.ldif

 

Seitenanfang

SASL

- Daemon Start aktivieren

# /etc/default/saslauthd
START=yes
MECHANISMS="ldap"
...
# /etc/saslauthd.conf
ldap_servers: ldap://localhost:3389/
ldap_version: 3
ldap_auth_method: bind
ldap_search_base: dc=domain,dc=tld
ldap_filter: (|(uid=%U)(cn=%U))
ldap_scope: sub

- Daemon starten

service saslauthd start

- SASL Auth testen

testsaslauthd -u <Benutzer> -p <Passwort>
Seitenanfang

Postfix

# /etc/postfix/main.cf
#
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no
append_dot_mydomain = no
# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h
readme_directory = no
# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
#
myhostname = sogo.domain.tld
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = sogo
mydestination = localhost, $myhostname, $mydomain
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
virtual_alias_maps = ldap:/etc/postfix/people.ldap
mailbox_transport = lmtp:127.0.0.1:24
# /etc/postfix/people.ldap
#
version = 3
server_port = 3389
timeout = 60
search_base = ou=benutzer,dc=domain,dc=tld
query_filter = (mail=%s)
result_attribute = uid
bind = no
Seitenanfang

Cyrus

# /etc/cyrus.conf
#
START {
        recover         cmd="/usr/sbin/cyrus ctl_cyrusdb -r"
        delprune        cmd="/usr/sbin/cyrus expire -E 3"
        tlsprune        cmd="/usr/sbin/cyrus tls_prune"
}
SERVICES {
        imap            cmd="imapd -U 30" listen="imap" prefork=0 maxchild=100
        pop3            cmd="pop3d -U 30" listen="pop3" prefork=0 maxchild=50
        lmtp            cmd="lmtpd -a" listen="127.0.0.1:24" prefork=0 maxchild=20
        sieve           cmd="timsieved" listen="localhost:sieve" prefork=0 maxchild=100
        notify          cmd="notifyd" listen="/var/run/cyrus/socket/notify" proto="udp" prefork=1
}
EVENTS {
        checkpoint      cmd="/usr/sbin/cyrus ctl_cyrusdb -c" period=30
        delprune        cmd="/usr/sbin/cyrus expire -E 3" at=0401
        tlsprune        cmd="/usr/sbin/cyrus tls_prune" at=0401
}
# /etc/imapd.conf
altnamespace: yes
unixhierarchysep: yes
admins: cyrus
sasl_mech_list: PLAIN
sasl_pwcheck_method: alwaystrue
#
# ubuntu defaults
allowanonymouslogin: no
allowplaintext: yes
autocreatequota: 0
configdirectory: /var/lib/cyrus
defaultpartition: default
hashimapspool: true
idlesocket: /var/run/cyrus/socket/idle
lmtp_downcase_rcpt: yes
lmtpsocket: /var/run/cyrus/socket/lmtp
mboxname_lockpath: /var/lib/cyrus/lock
newsspool: /var/spool/news
notifysocket: /var/run/cyrus/socket/notify
partition-default: /var/spool/cyrus/mail
partition-news: /var/spool/cyrus/news
popminpoll: 1
proc_path: /var/run/cyrus/proc
sasl_auto_transition: no
sievedir: /var/spool/sieve
sieveusehomedir: false
syslog_prefix: cyrus
tls_ca_path: /etc/ssl/certs
tls_cipher_list: TLSv1+HIGH:!aNULL:@STRENGTH
tls_session_timeout: 1440
umask: 077

- unter Cyrus die Mailbenutzer anlegen (Passwort zum cyradm wurde mit dem LDAP Eintrag definiert)

cyradm --auth plain --user cyrus localhost
Passwort: sogo
cm user/user1

 

Seitenanfang

Samba4

#/etc/samba/smb.conf
#
# Global parameters
[global]
        workgroup = OPENCHANGE
        realm = domain.tld
        netbios name = SOGO
        server role = active directory domain controller
        passdb backend = samba4
        dcerpc endpoint servers = epmapper, mapiproxy
        dcerpc_mapiproxy:server = true
        dcerpc_mapiproxy:interfaces = exchange_emsmdb, exchange_nsp, exchange_ds_rfr
[netlogon]
        path = /var/lib/samba/sysvol/domain.tld/scripts
        read only = No
[sysvol]
        path = /var/lib/samba/sysvol
        read only = No

 

Seitenanfang

Webmin

- Webmin laden und Paket installieren

wget http://prdownloads.sourceforge.net/webadmin/webmin_1.600_all.deb
dpkg --install webmin_1.600_all.deb
aptitude install webmin

- Zugriff Webmin Konfiguration

http://<Webmin-Server>:10000/

- Webmin starten / stoppen

service webmin start
service webmin status
service webmin stop

- Anpassung OpenLDAP an Port 3389
Webmin unter Server | LDAP Server | Modulkonfiguration
LDAP Server Port - 3389
Passwort für LDAP-Server - <OpenLDAP Server Kennwort>

Seitenanfang

SOGo konfigurieren

- Anmelden als SOGo Benutzer

sudo su - sogo

- SOGo KonfigurationsScript erstellen sogo.script, mit dem Script wird die Datei /home/sogo/GNUstep/Defaults/.GNUstepDefaults konfiguriert

touch sogo.script
chmod +x sogo.script
# sogo.script
defaults write sogod SOGoACLsSendEMailNotifications YES
defaults write sogod OCSEMailAlarmsFolderURL "mysql://sogo:sogo@localhost:3306/sogo/sogo_alarms_folder"
defaults write sogod OCSFolderInfoURL "mysql://sogo:sogo@localhost:3306/sogo/sogo_folder_info"
defaults write sogod OCSSessionsFolderURL "mysql://sogo:sogo@localhost:3306/sogo/sogo_sessions_folder"
defaults write sogod SOGoAppointmentSendEMailNotifications YES
defaults write sogod SOGoEnableEMailAlarms YES
defaults write sogod SOGoIMAPServer mail.domain.tld
defaults write sogod SOGoMailingMechanism smtp
defaults write sogod SOGoProfileURL "mysql://sogo:sogo@localhost:3306/sogo/sogo_user_profile"
defaults write sogod SOGoSMTPServer mail.domain.tld
defaults write sogod SOGoSieveScriptsEnabled YES
defaults write sogod SOGoSieveServer sieve://127.0.0.1:4190
defaults write sogod SOGoTimeZone "Europe/Berlin"

defaults write sogod SOGoUserSources '({CNFieldName = cn;IDFieldName = uid;UIDFieldName = uid;
 baseDN = "ou=benutzer,dc=domain,dc=tld"; bindDN = "cn=admin,dc=domain,dc=tld";
 bindPassword = sogo; canAuthenticate = YES; displayName = "Shared Addresses";
 hostname = "127.0.0.1"; port = 3389; id = public; isAddressBook = YES; type = ldap;})'

defaults write sogod SOGoVacationEnabled YES
defaults write sogod SOGoSupportedLanguages '("German","English")'

weitere möglicheParameter (!!! Liste nicht vollständig)

defaults write sogod SOGoMailDomain "domain.tld"
defaults write sogod SOGoLanguage German
defaults write sogod SOGoFoldersSendEMailNotifications YES
defaults write sogod SOGoCalendarDefaultRoles '("PublicViewer","ConfidentialDAndTViewer")'
defaults write sogod SOGoMemcachedHost 127.0.0.1
Seitenanfang

Cron

- Abwesenheitsnotiz und eMail Benachrichtigung aktivieren

# /etc/cron.d/sogo
0 0 * * *      sogo     /usr/sbin/sogo-tool expire-autoreply authname:authpassword
* * * * *      sogo     /usr/sbin/sogo-ealarms-notify

 

Seitenanfang

sonstiges

Fehlermeldung: im LOG /var/log/sogo/sogo.log
sogod [2943]: <0x0xaa90c0[SOGoProductLoader]> AdministrationUI.SOGo, MailPartViewers.SOGo, SchedulerUI.SOGo, Mailer.SOGo, MainUI.SOGo, ContactsUI.SOGo, PreferencesUI.SOGo, Contacts.SOGo, CommonUI.SOGo, MailerUI.SOGo, Appointments.SOGo
sogod[2943] Assertion failed in UIxComponent(instance), method initialize. invalid superclass (SoComponent) version 0 !
/usr/sbin/sogod: Uncaught exception NSInternalInconsistencyException, reason: UIxComponent.m:77 Assertion failed in UIxComponent(instance), method initialize. invalid superclass (SoComponent) version 0 !

Lösung:
Versionen der Pakete prüfen
libsope-core4.9 libsope-gdl1-4.9 libsope-ldap4.9 libsope-mime4.9 libsope-xml4.9 sope4.9-gdl1-mysql sope4.9-libxmlsaxdriver

dpkg -l | grep sope
dpkg -P --force-all libsope-core4.9 libsope-gdl1-4.9 libsope-ldap4.9 libsope-mime4.9 \
libsope-xml4.9 sope4.9-gdl1-mysql sope4.9-libxmlsaxdriver

apt-get install libsope-core4.9 libsope-gdl1-4.9 libsope-ldap4.9 libsope-mime4.9 \
libsope-xml4.9 sope4.9-gdl1-mysql sope4.9-libxmlsaxdriver