Community Home

Installation and configuration HowTo of open-XChange™ 0.8.0 on SuSE 9.2 pro

From Stefan's famous Howto,translated by Julie,'The funny' Pascal et Timon :-)
Version:1.0


Last change:
22.04.2005 Automatically create filespool folder for uploaded files New!./correctfilespool is obsolete ;-) by Timon
18:30


Reference | Installation of necessary packages | Installation of Open-Xchange™ | Configuration OX/LDAP | Database | Tomcat | Apache | User | Start | Tipps und Tricks | WebDAV | Adressbook | Example-Files | Do not forget this.. | Postgresql | Installation errors | Create new moduls |

Note:
This is an example installation. I do not take responsibility and no adhesion in relation to the instructions printed here! I do not tidy up also your dwelling if the server exploded...EVERYTHING ON OWN DANGER AND WITHOUT GUARANTEE!
This howto describes an installation by open-Xchange™ on SuSE 9.2 pro with the consideration an external IMAP server is used. This installation does not describe an update of an older version!
As example a server with the IP: 192.168.1.121 and the example-Domain ox-server.de. OX is installed under /data/ox/. These data and the password "YOURPASSWORD" must be adapted with your installation! And please the goal listing to linux-file-system to point leave. Furthermore this configuration is appropriate only for a test operation, because e.g. passwords are not yet coded in the files. When You do all the showing steps here,the installation and all the feature from OX will works for You.A 'Newbie' must execute this installation-guide step by step and the time for installation is not more than 2 hours.For a 'profi' is the time less than 20 minutes.
Read the Howto very carefully...and no panic,when something goes wrong...

The installation steps must be implemented as root!

There are further assistance in Open-Xchange-Forum, in the Wiki and in the Mailinglisten.

Have a lot of fun with OX :-)

Installation of necessary packages:

The minimum installation was selected and installed by SuSE 9.2.

By means of Yast the following packages and their dependence are after-installed.
ant
ant-apache-*
apache2
(+ apache2-prefork)
mod_jk-ap20
tomcat5-*
»postgresql
postgresql-server
(+ postgresql-libs)
postgresql-devel
postgresql-jdbc  >>>>download the jdbc!Do not use the SuSE jdbc..don't work for You..;-)
jikes
(+ java)
openldap2*
perl-IO-Socket-SSL
perl-Authen-SASL*
perl-Convert-*
perl-XML-LibXML
perl-libxml-perl
perl-CGI-Application
perl-ldap*
unzip
ispell-german
»ispell-british
»ispell
»words-words
autoconf
automake
gcc
gcc-c++
To avoid the Apache error 404:missing You must have ispell-british,ispell,words on your system.


You must do now after installing this packages logout,login from the system,because than the 'changes' will work for You ;-)

After installing these packages if necessary patches implement with Yast-online-update to install.

Further packages are needed from the internet:
jaf:
Download from: http://java.sun.com/products/javabeans/glasgow/jaf.html
Unpack and copy the file activation.jar to: /usr/lib/java/lib/


Xerces-J-bin:
Download from: http://apache.kgt.org/xml/xerces-j/
Unpack and copy the file xercesImpl.jar to: /usr/lib/java/lib/


JavaMail:
Download from: http://java.sun.com/products/javamail/downloads/index.html
Unpack and copy the file mail.jar to: /usr/lib/java/lib/


jdom-1.0:
Download from: http://www.jdom.org/dist/binary/ Unpack,change into /jdom-1.0 and execute: ./build.sh
You must sure that the build-process was successful otherwise You will found in /build the origine jdom.jar from the developper..does not work for You:-(
execute:cd build
cp jdom.jar /usr/lib/java/lib/


Postgres JDBC driver:
Download pg74.215.jdbc3.jar from: http://jdbc.postgresql.org/download.html
Rename it to: postgresql.jar and copy to: /usr/lib/java/lib/. Make sure that the file has following rights: rwxr-xr-x owner:root group:root

To the start of page

postgres-database
Edit /etc/sysconfig/postgresql and set:
POSTGRES_OPTIONS="-i"

Execute:
rcpostgresql start

Edit /var/lib/pgsql/data/pg_hba.conf
and make sure that the entries are not deactivated:

TYPE
DATABASE
USER
IP-ADDRESS
IP-MASK
METHOD
host
all
all
127.0.0.1
255.255.255.255
trust
local
all
all
trust

BUT BE CAREFUL DO NOT THIS ON A REAL-TIME-SYSTEM: HACKERS FROM THE INTERNET LOVE THIS ;-)..IS NOT SECURE!!!! ;-))


But deactivate the line with ::1 as IP address for IPv6!

Edit /var/lib/pgsql/data/postgresql.conf and make sure that the line is not deactivated:
tcpip_socket = true

Execute:
rcpostgresql restart

Execute:
su postgres

If still no user 'openexchange' for the database exists then:
createuser --pwprompt
Enter name of user to add: openexchange
Enter password for new user: YOURPASSWORD
Enter it again: YOURPASSWORD
Shall the new user be allowed to create databases? (y/n) y
Shall the new user be allowed to create more new users? (y/n) n


createdb -O openexchange -E UTF-8 openexchange
This is important,because You can avoid in ./configure and make,that the database will not found..
exit(do not forget this step,because your account is still for the user 'postgres' ;-)

To the start of page

Installation of Open-Xchange

Download Open-Xchange™ from: here
(e.g.: with 'wget http://mirror.open-xchange.org/download/open-xchange-0.8.0-RC1.tar.bz2')

- unpacking into a folder

For tying up the external IMAP server, if the Login on the IMAP server is in the kind testuser@domain.com, now two files must be edited. Is the login only 'testuser' then can this setting ignored!
For the Webmail: line 1242: src/com/openexchange/webmail/Management.java
change in:
wdic.setUsername(wus.getUsername()+"@"+wus.getDomain());
For the portal side and if necessary the e-Mail-Popup: line 148: src/com/openexchange/tools/MailHandle.java
change in:
this.store.connect(imap,user+"@ox-server.de",password);
All accounts must then on the IMAP server: xyz@ox server.de!



Implement of OX: (do not forget to adapt request to the own data!)
In many cases to avoid the following funny warning: configure:WARNING: 'missing' script is too old or missing
You have to change in OX_src/config/missing against the missing-script from /usr/share/automake-1.9/missing before execute the script ./configure funny? ;-)

Write after ./configure the values in one line !
./configure --prefix=/data/ox \
--with-mailjar=/usr/lib/java/lib/mail.jar \
--with-activationjar=/usr/lib/java/lib/activation.jar \
--with-jdomjar=/usr/lib/java/lib/jdom.jar \
--with-xercesjar=/usr/lib/java/lib/xercesImpl.jar \
--with-jsdkjar=/usr/share/java/servletapi5.jar \
--with-jdbcjar=/usr/lib/java/lib/postgresql.jar \
--with-dbpass=YOURPASSWORD \
--with-domain=ox-server.de \
--with-basedn=dc=ox-server,dc=de \
--with-rootdn=uid=mailadmin,dc=ox-server,dc=de \
--with-organization="OX Server" \
--with-runuid=wwwrun \
--with-rungid=tomcat \
--with-jni-dir=/usr/lib/jvm/java-1.4.2-sun-1.4.2.06/include/ \
--enable-webdav \
--enable-doc


make
Some "Semantic warning" You can ignore it...


make install

cd /data/ox
cp share/perl/* /srv/www/cgi-bin/
cp share/openxchange.schema /etc/openldap/schema/


mkdir -p /srv/www/htdocs/cfintranet/webmail/


cp -r share/groupware/data/css share/groupware/data/images _
share/groupware/data/javascript /srv/www/htdocs/cfintranet/
You must write it in one line in the console. Do not forget this step,otherwise You have a 'nice' OX outfit in the browser ;-)...looks like not very funny

cp -r share/webmail/data/css share/webmail/data/images _
share/webmail/data/javascript /srv/www/htdocs/cfintranet/webmail


cd etc/webmail/
ln -s /etc/openldap/ldap.conf      IMPORTANT! Do not forget this step
ln -s /etc/mime.types
cd ../groupware
ln -s /etc/openldap/ldap.conf      IMPORTANT! Do not forget this step
ln -s /etc/mime.types


Second part of database: initialize the OX-database
su postgres
psql -U openexchange openexchange < /data/ox/share/init_database.sql
exit
Execute:
/data/ox/sbin/dbinit_ox

Execute:
rcpostgresql restart
To the start of page
Configuration of Open-Xchange

Edit /etc/init.d/ldap and change:
SLAPD_URLS="ldap://192.168.1.121/ ldap://127.0.0.1/"

Execute:
rcldap restart

Edit /data/ox/share/init_ldap.ldif and change all entries of the kind dc=example,dc=org into your Domain.

Examine now again conscientiously the files:Have a look for it in the example files,too
/etc/openldap/ldap.conf
/etc/openldap/slapd.conf
/data/ox/etc/admintools.conf
in all files must the same BINDDN and/or rootdn,BINDPW. That is the most frequent error cause!
In the folder /etc/openldap/ create with the command 'touch acl_ox.conf'. This is merged of slapd.conf and contains the ACLs for OX.(Example-files)

LDAP data initialize:
slapadd -l /data/ox/share/init_ldap.ldif
If error to be returned here,there is something wrong with admintools.conf and ldap configuration files! Examine then all entries.

If it no errors appears: rcldap restart

Now the script:./correctfilespool is obsolete,because when You upload some files,the folders in PREFIX/var/filespool/ will create automatically
If the filespool-folder have not the rights for wwwrun.tomcat then execute the following:
The filespool-folder must exists!
chown wwwrun.tomcat /data/ox/var/filespool -R
chmod g+w /data/ox/var/filespool -R
YOU NEED THIS SETTINGS FOR THE RIGHT FUNCTION OF WEBDAV! OTHERWISE THE WEBDAV-FEATURE DOES NOT WORK!

Copy the start-script (openexchange) in the system-folder (etc/init.d/) and merge the programs into the starting process:
cp -a /data/ox/etc/init.d/openexchange /etc/init.d/
chkconfig apache2 on
chkconfig tomcat5 on
chkconfig ldap on
chkconfig postgresql on
chkconfig openexchange on
To the start of page

Tomcat

cd /srv/www/tomcat5/base/
mkdir -p webapps/servlet/WEB-INF/lib
mkdir -p webapps/servlet/WEB-INF/classes


cd /data/ox
cp share/servlets/*.class /srv/www/tomcat5/base/webapps/servlet/WEB-INF/classes/
cp lib/* /srv/www/tomcat5/base/webapps/servlet/WEB-INF/lib/


From the sources_OX-folder/system/servlet the web.xml copy to
/srv/www/tomcat5/base/webapps/servlet/WEB-INF/


cp /usr/share/doc/packages/mod_jk-ap20/workers.properties /etc/tomcat5/base/
Edit the file for your settings or use the example file workers.properties . workers.properties

Edit /etc/tomcat5/base/tomcat-users.xml and set: 'user username="Your Admin-user" password="Your password" roles="manager,admin" '
Tomcat must be started again: rctomcat5 restart
Call up now with a Browser
http://ox-server.de:8080/manager/html/
and upload ('deploy') the files 'umin.war' and 'servlet.war' (from the directory of OX under lib).
After a Login page (see for the login-values the tomcat-user.xml), You can see in the browser the 'Application Manager' and there now should appear servlet "/umin" and "/servlet".
This procedure can naturally also via simple copy the files to take place,however thus to have we become acquainted Tomcat a little...;-))!
A description for a secure connection from Tomcat and 'Autodeploy' will comes in a following HowTo :-) That's will be funny..isn't it ;-)

Under /srv/www/tomcat5/base/webapps/servlet/WEB-INF/lib/ the following files must be there:
activation.jar, comfiretools.jar, intranet.jar, jdom.jar, mail.jar, nas.jar, postgresql.jar and webdav.jar
and all files must have the rights of Tomcat and the postgresql.jar must have following rights(rw-r--r--):
chown tomcat.tomcat /srv/www/tomcat5/base/webapps/servlet/WEB-INF/ -R

Restart of Tomcat:
rctomcat5 restart
To the start of page

Configuration Apache

Edit /etc/sysconfig/apache2 and change the lines:
 APACHE_SERVERADMIN="webmaster@ox-server.de"
 APACHE_SERVERNAME="ox-server.de"
 At the end of the line of APACHE_MODULES set: jk .
 APACHE_MODULES="access actions .... jk"

Edit /etc/apache2/mod_mime-defaults.conf and change and/or add the line:
AddDefaultCharset UTF-8


Execute:
SuSEconfig

Firewall-Configuration for OX:
80 http
443 imap
25 Mail

Provide under /etc/apache2/conf.d/ the file jk.conf. jk.conf.

Edit /etc/hosts and add IP and Domainnamen

192.168.1.121 ox-server. de ox-server


To the start of page
OX-User

Write after ./adduser_ox the values in one line !
cd /data/ox/sbin
./adduser_ox --username=mmustermann \
--passwd=maxmuste \
--name=Max \
--sname=Mustermann \
--maildomain=ox-server.de
--ox_timezone=Europe/Berlin
--inetmail=TRUE
--write_global_address=TRUE

And:

./addgroup_ox --group=[Your group]
./addusertogroup_ox --user=[Your user] --group=[Your group]

Thus OX knows which IMAP server it for the user to access:
./changeuserattr_ox --username=mmustermann --attrib=imapServer --value=imap.ox-server.de
Do not forget this,because than You will not have a PopUp-windows for incoming mail's ;-)
To the start of page
Start

rcldap restart
rcpostgresql restart
rcapache2 restart
rctomcat5 restart
/etc/init.d/openexchange start


Login:
http://ox-server.de/cgi-bin/login.pl

To the start of page

Tipps and Tricks:

Nice Icons You can find here: OX Crystal Icons and here: OX Zenith Icons
Installation:
tar -xvzf ox_zenith_iconset-0.1.tar.gz
cd ox_zenith_iconset/
cp -a top/* /srv/www/htdocs/cfintranet/images/top/EN/
cp -a top/* /srv/www/htdocs/cfintranet/images/top/DE/


If the users are not to be allowed to change the password (because e.g. this must be used for the IMAP server), then in acl_ox.conf to add.
access to attr=userPassword
by dn="uid=mailadmin,ou=Users,ou=OxObjects,dc=ox-server,dc=de" write
by anonymous auth
by * none


If the installation of OX in first time does not work because e.g. different LDAP of entries in different files was located recommends:
rcldap stop
/etc/init.d/openexchange stop
everything below /var/lib/ldap delete naturally only if not still different data LDAP data are stored here!!!)(
rcldap start
Then again the LDAP data initializes with: slapadd -l /data/ox/share/init_ldap.ldif
and
rcldap restart
/etc/init.d/openexchange start
.

A login problem to the IMAP-server can come also from the value "mail.smtp.auth=true" into /data/ox/etc/webmail/webmail.properties. For your IMAP-configuration: You can comment- or uncomment this value and execute PREFIX/etc/init.d/webmail restart restart.

Create automatically IMAP folders:

If You want to create automatically IMAP folders,edit PREFIX/etc/webmail/webmail.properties:

The default in OX for that feature is user.default.folder.autocreate = false
Change it to: user.default.folder.autocreate = true

Create new external moduls:here a google-search You can create some 'own' moduls and implement them in OX:
Create a folder called 'external' in /data/ox/.Then write in a txt-file:e.g. my_modul.txt
In my_modul.txt there is following code for your modul in OX:this will create a 'google'-buttom and a search-field

<form action="http://www.google.de/search" name=f target="inMain">
<input type=hidden name=hl value=en>
<input type=hidden name=ie value="UTF-8">
<table style="padding:5">
<tr>
<td><input maxLength=256 size=20 name=q style="border: 1px #A8B1C4 solid;"></td>
</tr>
<td>>input type=submit value="Google-Search" name=btnG style="color:#415582; font-weight: bold; border:1px #A8B1C4 slid; background-color:#d3d8e1"></td>
</tr>
<tr>
<td><small>Space for your slogan :-)</small></td/
</tr>
</table>
</form>

And now in /data/etc/groupware/external.conf set the following values:

# You can add new areas to the left/right frame which
# will be displayed under the existing entries
<externalElement>
<element status="open"/>
<element title="SEARCH INTERNET" language="DE"/>
<element title="Search" language="EN"/>
<content src="/opt/ox/external/my_content.txt"/>
6lt;/externalElement>
To the start of page

WebDAV:

Documents:

in the Konqueror either
http://testuser@ox-server.de/servlet/webdav.documents
or better:
webdav://testuser@ox-server.de/servlet/webdav.documents

in the M$-Explorer as new Web-folder
http://ox-server.de/servlet/webdav.documents


Calendar:

In 'Kontact' as calendar:
Select as source: "calendar in file on foreign computers" select.
in 'download from' und 'upload to' set:

webdav://ox-server.de/servlet/webdav.ical
or http://ox-server.de/servlet/webdav.ical

Kontact KDE3.4

Note: Since OX the calendar dates in the GMT time belt stores must in Kontact the time belt accordingly is unfortunately adapted, so that the times are correct!

In other calendar programs also merge this line:
http://ox-server.de/servlet/webdav.ical

To the start of page


Adressbook:

Reading accesses to the personal directory:

Enter the line of the kind in the Konqueror:
ldap://uid=mmustermann,ou=Users,ou=OxObjects,dc=ox-server,
dc=de@192.168.1.121:389uid=mmustermann,ou=Users,
ou=OxObjects,dc=ox-server,dc=de?l,cn,description,
facsimileTelephoneNumber,sn,displayName,givenName,jpegPhoto,
mail,mobile,o,pager,homePhone,postalCode,st,street,telephoneNumber,title,
uid?sub?(objectclass=inetorgperson)?x-dir=base,x-ver=3


After a password inquiry the queried LDAP entries should appear.

Under KDE 3.4 and Kontact selects 'LDAP under contacts as new source'.

Set your setting like in the screen-shot
User: uid=mmustermann,ou=Users,ou=OxObjects,dc=ox-server,dc=de
DN: ou=addr,uid=mmustermann,ou=Users,ou=OxObjects,dc=ox-server,dc=de

The name 'ldapkio', change in ' OX-Adressbook'.
The password is the LDAP password for mmustermann.

Kontact KDE3.4

Reading access to the global adressbook:

The same attitudes as however for the personal adressbook but:
DN: o=AddressBook,ou=OxObjects,dc=ox-server,dc=de
To the start of page

As soon as possible,we will create an 'Add-on' here for:

Any suggestions are 'welcome' :-)

Suggestions, references, etc. ask on: ox at ox-server. de

Error's:
slappadd:
slapadd: no structural object class provided
This means there is no 'openxchange.schema' in /etc/openldap/schema or You have not an include directive in slapd.conf
include /etc/openldap/schema/openxchange.schema



Example-files

Contents of: /etc/apache2/conf.d/jk.conf

<IfModule mod_jk.c>

    JkWorkersFile /etc/tomcat5/base/workers.properties
    JkLogFile /var/log/apache2/mod_jk.log

    # Log level to be used by mod_jk
    JkLogLevel warn


    # webdav
    JkMount /servlet/* ajp13
    JkMount /servlet/webdav.contacts/* ajp13
    JkMount /umin/* ajp13
    JkMount /servlet/webdav.documents/* ajp13

    # The following line makes apache aware of the location of
    # the /servlet
    Alias /servlet "/srv/www/tomcat5/base/webapps/servlet"
    Alias /webdav.documents "/srv/www/tomcat5/base/webapps/servlet"

    <Directory "/srv/www/tomcat5/base/webapps/servlet">
       Options Indexes FollowSymLinks
       allow from all
    </Directory>
    #<Directory "/srv/www/tomcat5/base/webapps/servlets-examples">
    #   Options Indexes FollowSymLinks
    #   allow from all
    #</Directory>


    # The following line prohibits users from directly accessing WEB-INF
    <Location "/servlet/WEB-INF/">
       AllowOverride None
       deny from all
    </Location>

</IfModule>

Contents of: /etc/tomcat5/base/workers.properties

workers.tomcat_home=/usr/share/tomcat5

#
# workers.java_home should point to your Java installation. Normally
# you should have a bin and lib directories beneath it.
#
workers.java_home=/usr/lib/java

[uri:/servlet/*]
worker=ajp13:localhost:8009

[uri:/servlet/webdav.contacts/*]
worker=ajp13:localhost:8009

[uri:/umin/*]
worker=ajp13:localhost:8009

#
# You should configure your environment slash... ps=\ on NT and / on UNIX
# and maybe something different elsewhere.
#
ps=/

#
#------ DEFAULT worket list ------------------------------------------
#---------------------------------------------------------------------
#
#
# The workers that your plugins should create and work with
#
# Add 'inprocess' if you want JNI connector
worker.list=ajp12, ajp13
# , inprocess


#
#------ DEFAULT ajp12 WORKER DEFINITION ------------------------------
#---------------------------------------------------------------------
#

#
# Defining a worker named ajp12 and of type ajp12
# Note that the name and the type do not have to match.
#
worker.ajp12.port=8007
worker.ajp12.host=localhost
worker.ajp12.type=ajp12
#
# Specifies the load balance factor when used with
# a load balancing worker.
# Note:
#  ----> lbfactor must be > 0
#  ----> Low lbfactor means less work done by the worker.
worker.ajp12.lbfactor=1

#
#------ DEFAULT ajp13 WORKER DEFINITION ------------------------------
#---------------------------------------------------------------------
#

#
# Defining a worker named ajp13 and of type ajp13
# Note that the name and the type do not have to match.
#
worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13
#
# Specifies the load balance factor when used with
# a load balancing worker.
# Note:
#  ----> lbfactor must be > 0
#  ----> Low lbfactor means less work done by the worker.
worker.ajp13.lbfactor=1

#
# Specify the size of the open connection cache.
#worker.ajp13.cachesize

#
#------ DEFAULT LOAD BALANCER WORKER DEFINITION ----------------------
#---------------------------------------------------------------------
#

#
# The loadbalancer (type lb) workers perform wighted round-robin
# load balancing with sticky sessions.
# Note:
#  ----> If a worker dies, the load balancer will check its state
#        once in a while. Until then all work is redirected to peer
#        workers.
worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=ajp12, ajp13
#
#------ DEFAULT JNI WORKER DEFINITION---------------------------------
#---------------------------------------------------------------------
#

#
# Defining a worker named inprocess and of type jni
# Note that the name and the type do not have to match.
#
worker.inprocess.type=jni

#
#------ CLASSPATH DEFINITION -----------------------------------------
#---------------------------------------------------------------------
#

#
# Additional class path components.
#
worker.inprocess.class_path=$(workers.tomcat_home)$(ps)lib$(ps)tomcat.jar

#
# Setting the command line for tomcat.
# Note: The cmd_line string may not contain spaces.
#
worker.inprocess.cmd_line=start

# Not needed, but can be customized.
#worker.inprocess.cmd_line=-config
#worker.inprocess.cmd_line=$(workers.tomcat_home)$(ps)conf$(ps)server.xml
#worker.inprocess.cmd_line=-home
#worker.inprocess.cmd_line=$(workers.tomcat_home)


#
# And this is for jdk1.1.X
#
#worker.inprocess.jvm_lib=$(workers.java_home)$(ps)bin$(ps)javai.dll


#
# Setting the place for the stdout and stderr of tomcat
#
worker.inprocess.stdout=$(workers.tomcat_home)$(ps)logs$(ps)inprocess.stdout
worker.inprocess.stderr=$(workers.tomcat_home)$(ps)logs$(ps)inprocess.stderr

Contents of: /etc/openldap/ldap.conf

#
# LDAP Defaults
#

# See ldap.conf(5) for details
# This file should be world readable but not world writable.

BASE    dc=ox-server,dc=de
HOST 192.168.1.121

TLS_REQCERT allow

Contents of: /etc/openldap/sldap.conf

#
# See slapd.conf(5) for details on configuration options.
# This file should NOT be world readable.
# The *.schema here must in this order !!
include         /etc/openldap/schema/core.schema
include         /etc/openldap/schema/cosine.schema
include         /etc/openldap/schema/nis.schema
include         /etc/openldap/schema/inetorgperson.schema
#include                /etc/openldap/schema/rfc2307bis.schema
include         /etc/openldap/schema/openxchange.schema
include         /etc/openldap/schema/yast.schema

# Define global ACLs to disable default read access.

pidfile         /var/run/slapd/slapd.pid
argsfile        /var/run/slapd/slapd.args

# Load dynamic backend modules:
modulepath      /usr/lib/openldap/modules
# moduleload    back_ldap.la
# moduleload    back_meta.la
# moduleload    back_monitor.la
# moduleload    back_perl.la


# if no access controls are present, the default policy
# allows anyone and everyone to read anything but restricts
# updates to rootdn.  (e.g., "access to * by * read")
#
# rootdn can always read and write EVERYTHING!

#######################################################################
# bdb database definitions
#######################################################################

# allow bind_v2
loglevel 5
database        ldbm
#checkpoint      1024    5
cachesize       10000
suffix          "dc=ox-server,dc=de"
"uid=mailadmin,dc=ox-server,dc=de"rootdn
rootpw          "YOURPASSWORD"
directory       /var/lib/ldap

index   objectClass     eq
index uid,mailEnabled,cn,sn,givenname,lnetMailAccess,alias,loginDestination eq,sub

include /etc/openldap/acl_ox.conf

Contents of: /etc/openldap/acl_ox.conf

access to dn.base="" by * read
access to dn.base="cn=Subschema" by * read

# protect the userPassword attribute
access to attr=userPassword
    by self =w
    by anonymous auth

# global address book
access to dn.subtree="o=AddressBook,ou=OxObjects,dc=ox-server,dc=de"
    by group.exact="cn=AddressAdmins,o=AddressBook,ou=OxObjects,dc=ox-server,dc=de" write
    by users read

# personal address book
access to dn.regex="^ou=addr,(uid=([^,]+),ou=Users,ou=OxObjects,dc=ox-server,dc=de)$" attrs=children
    by dn.exact,expand="$1" write

access to dn.regex="^uid=([^,]+),ou=addr,(uid=([^,]+),ou=Users,ou=OxObjects,dc=ox-server,dc=de)$" attrs=entry
    by dn.exact,expand="$2" write

# default rule allowing users full access to their own entries
access to *
    by self write
    by users read

Contents of: /etc/hosts  You have to deactivate ALL IPV6 VALUES

127.0.0.1       localhost
192.168.1.121   ox-server.de ox-server

Contents of: /data/ox/etc/admintools.conf

#!/bin/sh
#
# (c) 2004-2100 ;)
# Author: cutmasta AT netline-is D0T de
#
# OX-SCRIPTS - CONFIGURATION PARAMETER :)
#
############## GENERAL CONFIG STUFF ###############
# Your Company Name
# To which Organisation new User belong!
ORGA="OX Server"
# OXBASE
OXBASE=`grep -v '^#' /data/ox/etc/groupware/ldap.conf | grep -i BASE | head -n 1 | awk {'print $2'}`
# LDAP Server
LDAPHOST=`grep -v '^#' /data/ox/etc/groupware/ldap.conf | grep -i HOST | head -n 1 | awk {'print $2'}`
# LDAP Admin
BINDDN="uid=mailadmin,dc=ox-server,dc=de"
# LDAP Admin Passwd
BINDPW="YOURPASSWORD"
# OX LDAP Leaf, where is the "OxObjects" leaf?
OX_LEAF="ou=OxObjects,$OXBASE"
# Default Language
DEFAULT_PREF_LANG="EN"
# Default mail is enabled
DEFAULT_MAIL_ENAB="OK"
# Default the user can send mail to the internet
DEFAULT_INET_MAIL="TRUE"
# Default days of displaying appointments
DEFAULT_OX_APP_DAYS=5
# Default days of displaying tasks
DEFAULT_OX_TASK_DAYS=5
# default the user can write in the global adressbook
DEFAULT_WRITE_GLOBAL_ADDR="TRUE"
# The used Tools - should work on most Systems!
LDAPADD_BIN="ldapadd"
LDAPDELETE_BIN="ldapdelete"
LDAPMODIFY_BIN="ldapmodify"
LDAPSEARCH_BIN="ldapsearch"
GREP_BIN="grep"
SED_BIN="sed"
EXPR_BIN="expr"
SORT_BIN="sort"
HEAD_BIN="head"
TAIL_BIN="tail"
AWK_BIN="awk"
SQL_BIN="psql"
##################################################

#################### SQL Stuff #####################
DEFAULT_SQL_HOST="localhost"
DEFAULT_SQL_DB="openexchange"
DEFAULT_SQL_USER="openexchange"
DEFAULT_SQL_PASS="YOURPASSWORD"

# Default Table where we store the Rights
RIGHTS_TABLE="usr_general_rights"
# Default Template Table where the template is stored!
TEMPLATE_TABLE="sys_gen_rights_template"
# Default Template for creating Users.
# Must exist in the DB
DEFAULT_TEMPLATE_NAME="default_template"
####################################################

####################### LDAP #######################
# Where are the OX Users
USER_BASEDN="ou=Users,$OX_LEAF"
# Where are the OX Groups
GROUP_BASEDN="ou=Groups,$OX_LEAF"
# Where are the OX Resources
RESOURCES_BASEDN="ou=Resources,ou=ResourceObjects,$OX_LEAF"
# Where are the OX Resource Groups
RESOURCE_GROUPS_BASEDN="ou=ResourceGroups,ou=ResourceObjects,$OX_LEAF"
# Where is the Global Adressbook
GLOBAL_ADDRESSBOOKDN="o=AddressBook,$OX_LEAF"
# where are the adressbook admins
GLOBAL_ADDRESSBOOK_ADMINSDN="cn=AddressAdmins,$GLOBAL_ADDRESSBOOKDN"
# TEMPORARY FILE
TMPDIF="/data/ox/var/temporary_ldap_scripts.ldif"
####################################################

####################################################

HOME_DIR="/home/"
DEFAULT_USR_SHELL="/bin/bash"

SHADOW_EXPIRE=0
SHADOW_MIN=0
SHADOW_MAX=9999
SHADOW_WARN=7

STD_GID=500
MIN_UID=501
MIN_GID=500
####################################################


Contents of: /data/ox/share/init_ldap.ldif

dn: dc=ox-server,dc=de
objectClass: dcObject
objectClass: organization
dc: ox-server
o: OX Servers

dn: ou=OxObjects,dc=ox-server,dc=de
objectClass: top
objectClass: organizationalUnit
ou: OxObjects

dn: ou=Users,ou=OxObjects,dc=ox-server,dc=de
objectClass: top
objectClass: organizationalUnit
ou: Users

dn: ou=Groups,ou=OxObjects,dc=ox-server,dc=de
objectClass: top
objectClass: organizationalUnit
ou: Groups

dn: ou=ResourceObjects,ou=OxObjects,dc=ox-server,dc=de
objectClass: top
objectClass: organizationalUnit
ou: ResourceObjects

dn: ou=ResourceGroups,ou=ResourceObjects,ou=OxObjects,dc=ox-server,dc=de
objectClass: top
objectClass: organizationalUnit
ou: ResourceGroups

dn: ou=Resources,ou=ResourceObjects,ou=OxObjects,dc=ox-server,dc=de
objectClass: top
objectClass: organizationalUnit
ou: Resources

dn: ou=AdminObjects,ou=OxObjects,dc=ox-server,dc=de
objectClass: top
objectClass: organizationalUnit
ou: AdminObjects

dn: ou=SMTPObjects,ou=AdminObjects,ou=OxObjects,dc=ox-server,dc=de
objectClass: top
objectClass: organizationalUnit
ou: SMTPObjects

dn: ou=DNSObjects,ou=AdminObjects,ou=OxObjects,dc=ox-server,dc=de
objectClass: top
objectClass: organizationalUnit
ou: DNSObjects

dn: o=AddressBook,ou=OxObjects,dc=ox-server,dc=de
objectClass: top
objectClass: organization
o: AddressBook

dn: cn=AddressAdmins,o=AddressBook,ou=OxObjects,dc=ox-server,dc=de
objectClass: top
objectClass: groupOfNames
cn: AddressAdmins
member: uid=mailadmin,ou=Users,ou=OxObjects,dc=ox-server,dc=de

dn: cn=users,ou=Groups,ou=OxObjects,dc=ox-server,dc=de
objectClass: top
objectClass: posixGroup
cn: users
userPassword: YOURPASSWORD
gidNumber: 500

dn: cn=OXSMTPAdmins,ou=Administration,ou=Groups,ou=OxObjects,dc=ox-server,dc=de
objectClass: top
objectClass: groupOfNames
member: uid=mailadmin,ou=Users,ou=OxObjects,dc=ox-server,dc=de
cn: OXSMTPAdmins

dn: cn=OXUserAdmins,ou=Administration,ou=Groups,ou=OxObjects,dc=ox-server,dc=de
objectClass: top
objectClass: groupOfNames
member: uid=mailadmin,ou=Users,ou=OxObjects,dc=ox-server,dc=de
cn: OXUserAdmins

dn: cn=OXGroupAdmins,ou=Administration,ou=Groups,ou=OxObjects,dc=ox-server,dc=de
objectClass: top
objectClass: groupOfNames
cn: OXGroupAdmins
member: uid=mailadmin,ou=Users,ou=OxObjects,dc=ox-server,dc=de

dn: cn=OXDNSAdmins,ou=Administration,ou=Groups,ou=OxObjects,dc=ox-server,dc=de
objectClass: top
objectClass: groupOfNames
cn: OXDNSAdmins
member: uid=mailadmin,ou=Users,ou=OxObjects,dc=ox-server,dc=de

dn: cn=OXResourceAdmins,ou=Administration,ou=Groups,ou=OxObjects,dc=ox-server,dc=de
objectClass: top
objectClass: groupOfNames
cn: OXResourceAdmins
member: uid=mailadmin,ou=Users,ou=OxObjects,dc=ox-server,dc=de

dn: cn=OXIMAPAdmins,ou=Administration,ou=Groups,ou=OxObjects,dc=ox-server,dc=de
objectClass: top
objectClass: groupOfNames
member: uid=mailadmin,ou=Users,ou=OxObjects,dc=ox-server,dc=de
cn: OXIMAPAdmins

dn: ou=Administration,ou=Groups,ou=OxObjects,dc=ox-server,dc=de
objectClass: top
objectClass: organizationalUnit
ou: Administration

dn: uid=mailadmin,ou=Users,ou=OxObjects,dc=ox-server,dc=de
objectClass: top
objectClass: shadowAccount
objectClass: posixAccount
objectClass: person
objectClass: inetOrgPerson
objectClass: OXUserObject
OpenLDAPaci: 1#entry#grant;r,w,s,c;cn,initials,mail,title,ou,l,birthday,description,street,postalcode,st,c,oxtime
zone,homephone,mobile,pager,facsimiletelephonenumber,telephonenumber,labeleduri,jpegphoto,loginDestination,sn,giv
enname,;r,s,c;[all]#self#
uidNumber: 501
homeDirectory: /home/mailadmin/
loginShell: /bin/bash
mailEnabled: OK
gidNumber: 500
mailDomain: ox-server.de
ou: Administration
uid: mailadmin
sn: Admin
preferredLanguage: DE
mail: mailadmin@ox-server.de
o: Example Organization
smtpServer: localhost
imapServer: localhost
alias: postmaster@ox-server.de
alias: root@ox-server.de
givenName: Admin
cn: Admin Admin
shadowMin: 0
shadowMax: 9999
shadowWarning: 7
shadowExpire: 0
userPassword: YOURPASSWORD
OXAppointmentDays: 5
OXGroupID: 500
OXTaskDays: 5
OXTimeZone: Europe/Berlin

dn: ou=addr,uid=mailadmin,ou=Users,ou=OxObjects,dc=ox-server,dc=de
ou: addr
objectClass: top
objectClass: organizationalUnit

dn: ou=MailTransports,ou=SMTPObjects,ou=AdminObjects,ou=OxObjects,dc=ox-server,dc=de
objectClass: top
objectClass: organizationalUnit
ou: MailTransports

dn: smtpDomain=ox-server.de,ou=MailTransports,ou=SMTPObjects,ou=AdminObjects,ou=OxObjects,dc=ox-server,dc=de
smtpDomainTransportNexthop: smtp:192.168.32.134
smtpDomain: ox-server.de
objectClass: top
objectClass: OXMailTransportObject
cn: example transport map entry

dn: ou=AvailableServers,ou=AdminObjects,ou=OxObjects,dc=ox-server,dc=de
objectClass: top
objectClass: organizationalUnit
ou: AvailableServers
description: List of available Servers for OX

dn: ou=directoryServer,ou=AvailableServers,ou=AdminObjects,ou=OxObjects,dc=ox-server,dc=de
objectClass: top
objectClass: organizationalUnit
ou: directoryServer

dn: ou=webmailServer,ou=AvailableServers,ou=AdminObjects,ou=OxObjects,dc=ox-server,dc=de
objectClass: top
objectClass: organizationalUnit
ou: webmailServer

dn: ou=smtpServer,ou=AvailableServers,ou=AdminObjects,ou=OxObjects,dc=ox-server,dc=de
objectClass: top
objectClass: organizationalUnit
ou: smtpServer

dn: ou=SharedFolder,ou=OxObjects,dc=ox-server,dc=de
objectClass: top
objectClass: organizationalUnit
ou: SharedFolder

dn: ou=imapServer,ou=AvailableServers,ou=AdminObjects,ou=OxObjects,dc=ox-server,dc=de
objectClass: top
objectClass: organizationalUnit
ou: imapServer

dn: domainName=ox-server.de,ou=DNSObjects,ou=AdminObjects,ou=OxObjects,dc=ox-server,dc=de
objectClass: top
objectClass: OXVDomainObject
MTALocaldomain: TRUE
domainName: ox-server.de

dn: ou=groupwareServer,ou=AvailableServers,ou=AdminObjects,ou=OxObjects,dc=ox-server,dc=de
objectClass: top
objectClass: organizationalUnit
ou: groupwareServer
To the start of page