Autor: sledge0303
Erstellt auf: Debian 4.0 (Etch)
getestet auf: Rootserver mit 256MB RAM
Es gelten die allgemeinen Bedingungen des Rootwikies. Vervielfältigung dieses Howtos nur mit Zustimmung des Autors erlaubt!!!
Ziel der Installation:
Installation von OpenXchange5, Version 0.8.8-0 mit Lighttpd 1.5.0 als Webdaemon
Gestützt wird OpenXchange durch eine PgSQL Datenbank und OpenLDAP für die Verwaltung von Benutzeraccounts.
Bei OpenXchange handelt es sich um eine auf Java basierende Groupware. Wer vor der Installation mehr Informationen haben möchte, sollte sich auf die Homepage des Herstellers erkundigen.
Die Installation erfolgt in folgenden Schritten:
0. Erstellung Lighttpd als Debianpaket
1. Installation und Konfiguration Lighttpd + SSL + PHP5 als spawn-fcgi
2. Download benötigter Software und Installation von Abhängigkeiten
3. Installation & Konfiguration OpenXchange
4. PgSQL und OpenLDAP
5. Installation Mailserver
Bevor ihr loslegt, bitte lesen
Solltet ihr bereits ein funktionsfähiges Lighttpd 1.5.0 erstellt haben, bitte weiter zu Punkt 1
Alternativ kann der Lighty als fertiges deb runtergeladen werden.
Zur Zeit noch nicht verfügbar
apt-get install -y zlib1g libpcre3-dev zlib1g-dev libbz2-dev \ libssl-dev debhelper libgtkhtml2-0 libgtkhtml2-dev gcc g++ flex libcurl3-dev libxpm-dev
cd /usr/src wget http://www.lighttpd.net/download/lighttpd-1.5.0-r1992.tar.gz wget http://download.nixhelp.de/sonstiges/lighttpd-1.4.7.tar.gz tar zxf lighttpd-1.5.0-r1857.tar.gz tar zxf lighttpd-1.4.7.tar.gz cp -R lighttpd-1.4.7/debian lighttpd-1.5.0/ cd lighttpd-1.5.0/ nano debian/changelog
Jetzt bearbeitest du die Changelog Datei, indem du den oberen Block nach unten stehendem Muster bearbeitest
lighttpd (1.5.0) unstable; urgency=low * updated to 1.5.0 -- Dein Name <deine@mail.de> Sun, 09 May 2007 22:48:00 +0200
Sind die Änderungen vorgenommen worden, kann jetzt endlich der Lighty als Debianpaket gebaut werden
dpkg-buildpackage
cd ..
Läuft alles ohne Fehlermeldungen durch, findet man diese Datei:
lighttpd_1.5.0_i386.deb
Diese wird jetzt installiert
dpkg -i lighttpd_1.5.0_i386.deb
Hinweis, für den Fall ihr wollt/müsst OpenXchange erneut installieren, sichert dieses Paket zu Hause oder in einem
Verzeichnis auf dem Server, welches selbst nach einer Neuinstallation nicht gelöscht wird. Dann kann man sich
diesen Schritt zukünftig ersparen.
mkdir -p /usr/ox mkdir -p /var/www/ox/htdocs mkdir -p /var/www/ox/cgi-bin mkdir -p /var/www/domain/htdocs mkdir -p /etc/lighttpd/ssl
Für die Grundinstallation des LDAP Servers wird temporär irgendein Passwort erstellt, egal welches.
Der Domainname für LDAP wird nicht korrekt erstellt, dies werden wir später manuell berichtigen:
Du kannst überall, mit Ausnahme von der Passworteingabe, alles mit <ENTRER> blind bestätigen.
Die Lizenzbedingungen für Java müssen akzeptiert werden
apt-get install -y postgresql-8.1 libnet-ssleay-perl libio-socket-ssl-perl libxml-namespacesupport-perl \ libxml-sax-perl libauthen-sasl-perl libconvert-asn1-perl libnet-ldap-perl \ ldap-utils libldap2 slapd db4.2-util sudo cpp g++ unzip sun-java5-jdk sun-java5-bin \ ant ant-optional openssl ssl-cert libglib2.0-0 libpcre3 lynx
openssl req -new -nodes -x509 -keyout /etc/lighttpd/ssl/lighttpd.pem -out /etc/lighttpd/ssl/lighttpd.pem -days 365
Der Kontext sieht in etwa so aus:
Country Name (2 letter code) [AU]:DE
State or Province Name (full name) [Some-State]: <dein Bundesland>
Locality Name (eg, city) []: <deine Stadt>
Organization Name (eg, company) [Internet Widgits Pty Ltd]:<Musterfirma>
Organizational Unit Name (eg, section) []:<Musterabteilung>
Common Name (eg, YOUR name) []:<www.deinedomain.de>
Email Address []:mailadmin@deinedomain.de
Anschließend noch kleine Änderung an den Dateirechten für das Zertifikat
chown www-data:www-data /etc/lighttpd/ssl/lighttpd.pem chmod 600 /etc/lighttpd/ssl/lighttpd.pem
Bitte denkt daran, den Servernamen anzupassen. Trotzdem legen wir noch eine Sicherheitskopie der alten lighttpd.conf an
mv /etc/lighttpd/lighttpd.conf /etc/lighttpd/lighttpd.conf.OLD
cat > /etc/lighttpd/lighttpd.conf << "EOF" server.username = "www-data" server.groupname = "www-data" server.document-root = "/var/www/domain/htdocs/" server.pid-file = "/var/run/lighttpd.pid" server.errorlog = "/var/log/lighttpd/error.log" accesslog.filename = "/var/log/lighttpd/access.log" server.stat-cache-engine = "fam" server.event-handler = "linux-sysepoll" server.name = "domain.tld" server.max-fds = 2048 evasive.max-conns-per-ip = 10 server.follow-symlink = "enable" server.max-keep-alive-idle = 10 server.modules = ( "mod_access", "mod_status", "mod_cgi", "mod_alias", "mod_auth", "mod_evasive", "mod_proxy_core", "mod_proxy_backend_fastcgi", "mod_proxy_backend_ajp13", "mod_deflate", "mod_accesslog" ) server.indexfiles = ( "index.xhtml", "index.html", "index.htm", "index.php", ) mimetype.assign = ( ".pdf" => "application/pdf", ".sig" => "application/pgp-signature", ".spl" => "application/futuresplash", ".class" => "application/octet-stream", ".ps" => "application/postscript", ".torrent" => "application/x-bittorrent", ".dvi" => "application/x-dvi", ".pac" => "application/x-ns-proxy-autoconfig", ".swf" => "application/x-shockwave-flash", ".tgz" => "application/x-tgz", ".mp3" => "audio/mpeg", ".m3u" => "audio/x-mpegurl", ".wma" => "audio/x-ms-wma", ".wax" => "audio/x-ms-wax", ".ogg" => "application/ogg", ".wav" => "audio/x-wav", ".xbm" => "image/x-xbitmap", ".xpm" => "image/x-xpixmap", ".xwd" => "image/x-xwindowdump", ".asc" => "text/plain", ".c" => "text/plain", ".h" => "text/plain", ".cc" => "text/plain", ".cpp" => "text/plain", ".hh" => "text/plain", ".hpp" => "text/plain", ".conf" => "text/plain", ".log" => "text/plain", ".text" => "text/plain", ".txt" => "text/plain", ".diff" => "text/plain", ".patch" => "text/plain", ".ebuild" => "text/plain", ".eclass" => "text/plain", ".rtf" => "application/rtf", ".bmp" => "image/bmp", ".tif" => "image/tiff", ".tiff" => "image/tiff", ".ico" => "image/x-icon", ".mpeg" => "video/mpeg", ".mpg" => "video/mpeg", ".mov" => "video/quicktime", ".qt" => "video/quicktime", ".avi" => "video/x-msvideo", ".asf" => "video/x-ms-asf", ".asx" => "video/x-ms-asf", ".wmv" => "video/x-ms-wmv", ".tbz" => "application/x-bzip-compressed-tar", ".tar.bz2" => "application/x-bzip-compressed-tar", ".tar.gz" => "application/x-tgz", ".bz2" => "application/x-bzip", ".gz" => "application/x-gzip", ".tar" => "application/x-tar", ".zip" => "application/zip", ".jpeg" => "image/jpeg", ".jpg" => "image/jpeg", ".png" => "image/png", ".gif" => "image/gif", ".xhtml" => "text/html", ".html" => "text/html", ".htm" => "text/html", ".dtd" => "text/xml", ".xml" => "text/xml", ".css" => "text/css", ".js" => "text/javascript", ".deb" => "application/x-deb", ".php" => "application/x-httpd-php", "" => "text/plain", ) static-file.exclude-extensions = ( ".pl", ".cgi", ".fcgi", ".php", ) url.access-deny = ( "~", ".ini", ".inc", ".cfg", ".tpl", ".bak", ".dist", ".orig", ".htaccess", ".htpasswd", ".example", ".sample", ".lang", ) $SERVER["socket"] == ":443" { ssl.engine = "enable" ssl.pemfile = "/etc/lighttpd/ssl/lighttpd.pem" server.document-root = "/var/www/ox/htdocs/" alias.url += ( "/cgi-bin/" => "/var/www/ox/cgi-bin/" ) cgi.assign = ( ".pl" => "/usr/bin/perl"), accesslog.filename = "/var/log/lighttpd/ox-access.log" $HTTP["url"] =~ "^/servlet/|^/umin/" { proxy-core.balancer = "round-robin" proxy-core.protocol = "ajp13" proxy-core.backends = ( "localhost:8009" ) proxy-core.max-pool-size = 16 } } $HTTP["url"] =~ "\.php$" { proxy-core.balancer = "round-robin" proxy-core.protocol = "fastcgi" proxy-core.allow-x-sendfile = "enable" proxy-core.backends = ( "unix:/tmp/php-fastcgi.sock" ) proxy-core.max-pool-size = 16 } deflate.enabled = "enable" deflate.compression-level = 9 deflate.mem-level = 9 deflate.window-size = 15 deflate.allowed_encodings = ( "bzip2", "gzip", "deflate" ) deflate.min-compress-size = 200 deflate.work-block-size = 512 deflate.mimetypes = ("text/html", "text/plain", "text/css", "text/javascript", "text/xml") EOF
Verzeichnisrecht:
chmod 600 /etc/lighttpd/lighttpd.conf
Damit wir später nicht jeden neuen User manuell über die Konsole erstellen müssen, wird PHP5 mit PostgreSQL und
LDAP Unterstützung installiert. PHP wird beim Lighttpd ab Version 1.5 generell per 'spawn-fcgi' eingebunden,
d.h. es gibt kein mod_fastcgi mehr, da dieses Modul durch 'mod_proxy_core' ersetzt wurde.
Über dieses Modul wird auch der AJP13 Worker, der die Verbindung zwischen Lighttpd und dem
Apache Tomcat Connector herstellt, eingebunden.
PHP5-FCGI aus Etch Sourcen mit Support für LDAP und PostgreSQL installieren
apt-get install -y php5-cgi php5-common php5-ldap php5-pgsql
Damit nun PHP5 gespawned werden kann, hab ich ein kurzes Skript entworfen. Damit kann man PHP-FCGI starten und stoppen
cat > /etc/init.d/php5-fcgi << "EOF" #! /bin/sh # /etc/init.d/php5-fcgi # # einfaches start/stop Script fuer spawn-fcgi # Pfade und Usernamen entsprechend der Hostconfig anpassen socket="/tmp/php-fastcgi.sock" phpfile="php5-cgi" uid="www-data" gid="www-data" child="5" pid="/var/run/php5-fcgi.pid" case "$1" in start) echo "Starte PHP5-FastCGI Prozess" spawn-fcgi -s $socket -f $phpfile -u $uid -g $gid -C $child -P $pid ;; stop) echo "Stoppe PHP5-FastCGI Prozess" killall $phpfile rm -f $pid $socket ;; *) echo "Usage: /etc/init.d/php5-fcgi {start|stop}" exit 1 ;; esac exit 0 EOF
Das PHP5-fcgi Initskript machen wir jetzt startfähig und verlinken es in die Runlevel 2+3
chmod 755 /etc/init.d/php5-fcgi && ln -s /etc/init.d/php5-fcgi /etc/rc2.d/S91php5-fcgi && ln -s /etc/init.d/php5-fcgi /etc/rc3.d/S91php5-fcgi
Unter Beibehaltung der originalen logrotate Datei wird der Lighttpd des öfteren bei der Komprimierung der Logfiles nicht
erneut gestartet.
rm -f /etc/logrotate.d/lighttpd
Neues Skript:
cat > /etc/logrotate.d/lighttpd << "EOF" /var/log/lighttpd/*.log { daily missingok copytruncate rotate 7 compress notifempty sharedscripts postrotate if [ -f /var/run/lighttpd.pid ]; then \ if [ -x /usr/sbin/invoke-rc.d ]; then \ invoke-rc.d lighttpd restart > /dev/null; \ else \ /etc/init.d/lighttpd restart > /dev/null; \ fi; \ fi; endscript } EOF
/etc/init.d/php5-fcgi start /etc/init.d/lighttpd restart
spawn-fcgi.c.209: child spawned successfully: PID: 6823 = OK
Restarting lighttpd: mod_proxy_core_address.c.158: (trace) resolving localhost on port 8009
mod_proxy_core_address.c.63: (trace) adding 127.0.0.1:8009 to the address-pool
mod_proxy_core_address.c.63: (trace) adding unix:/tmp/php-fastcgi.sock to the address-pool
lighttpd
Wenn beide Meldungen so oder in ähnlicher Form erscheinen: OK
Wichtiger Hinweis für die Konfiguration des LDAP Servers:
Zum Thema DNS Domainname: lautet der Hostname 'testserver.de', wird dieser als Domainname angegeben.
Dessen Pfad wird im LDAP Syntax immer als 'dc=testserver,dc=de' eingegeben.
Lautet der Hostname zum Bleistift='ks08154711.kimsufi.com' == 'dc=ks08154711,dc=kimsufi,dc=com'.
So und nicht anders dürfen die Einträge in der ldap.conf bzw. slapd.conf aussehen.
Einträge wie 'dc=ks0854711,dc=kimsufi.com' oder 'dc=testserver.de' entsprechen nicht dem Syntax von LDAP.
dpkg-reconfigure slapd
Zuerst bestägt man die Einstellungen nicht überspringen zu wollen. Anschließend wird der lokale Domainname s.o.
und Bezeichnung deiner Organisation/Firmename eingetragen. und anschließend das Passwort vergeben.
Die restlichen Abfragen kann man getrost bestätigen, weil wir anschließend den LDAP manuell konfigurieren.
Anschließend erstellen wir einen User für Tomcat
adduser tomcat --home /usr/local/tomcat --disabled-login \ --no-create-home
cd /usr/ox wget wget http://www.open-xchange.com/fileadmin/community/dowloads/stable/open-xchange-0.8.8-0.tar.gz wget http://typo3.open-xchange.com/fileadmin/community/ox_zenith_iconset-0.1.tar.gz wget http://archive.apache.org/dist/jakarta/tomcat-5/v5.0.28/bin/jakarta-tomcat-5.0.28.tar.gz wget http://jdbc.postgresql.org/download/pg74.216.jdbc3.jar wget http://archive.apache.org/dist/xml/xerces-j/Xerces-J-bin.2.8.1.tar.gz wget http://www.jdom.org/dist/binary/archive/jdom-1.0.tar.gz
2 Pakete können nicht mit wget runtergeladen werden:
1. man kann gut mit dem textbasierten Browser 'lynx' umgehen und manövriert sich durch das Menu
2. man nimmt den Internetbrowser (IE/FF usw) UND Lynx.
Beim 2. Punkt geht man am besten so vor:
Ihr kopiert die URL in den Browser, weiter unten befindet sich ein Button 'Download'. Den klickt ihr an.
Danach öffnet sich ein anderes Fenster, wo Ihr um die Lizenzbestimmungen anerkennen müsst, also auf 'ACCEPT'
klicken. Nachden ihr die Bedingungen akzeptiert habt, statt 'Linksklick' für Download mit der rechten Maustaste
das Kontextmenu aktivieren. Dort wählt ihr 'Linkadresse kopieren'aus.
Zurück zu Putty und der Konsole.
Tipp 'lynx'+ 1xSpacetaste und mit der rechten Maustaste wird der aus dem Internetbrowser kopierte Link eingefügt, danach <ENTER>
Lynx fragt dich ob er die Datei runterladen (D) soll, darauf hämmerst du beherzt auf die Taste 'd'.
Lynx lädt die Datei und fragt dich anschließend ob er die Datei auf der HD speichern soll.
Dann markierst 'Datei auf HD speichern'.
ABER: passe dem zu speichernden Dateinamen unbedingt an. Zum markieren benutzt die Pfeiltasten 'oben' und 'unten'
Sie Dateinamen _müssen_ so lauten:
javamail-1_4.zip
jaf-1_1-fr.zip
Sollte es inzwischen neue Pakete geben, die Versionsnummern anpassen und dem Onkel, der das Howto geschrieben hat,
mitteilen.
Hier sind die URLs:
http://java.sun.com/products/javamail/downloads/index.html
http://java.sun.com/products/javabeans/jaf/downloads/index.html
echo 'CATALINA_HOME=/usr/local/tomcat' >> /etc/profile && echo 'OX_HOME=/usr/local/openxchange' >> /etc/profile && echo 'TOMCAT_HOME=$CATALINA_HOME' >> /etc/profile && echo 'PATH=$PATH:$CATALINA_HOME/bin:$OX_HOME/bin:$OX_HOME/sbin' >> /etc/profile && echo 'export PATH CATALINA_HOME OX_HOME TOMCAT_HOME' >> /etc/profile
Aktivierung der neuen Prifiles
. /etc/profile
Kleiner Test
echo $OX_HOME
Die Antwort muss lauten:
/usr/local/openxchange
cd /usr/ox cp pg74.216.jdbc3.jar /usr/local/lib tar zxf /usr/ox/jakarta-tomcat-5.0.28.tar.gz && mv /usr/ox/jakarta-tomcat-5.0.28 /usr/local/tomcat unzip /usr/ox/javamail-1_4.zip && cp javamail-1.4/mail.jar /usr/local/lib unzip /usr/ox/jaf-1_1-fr.zip && cp jaf-1.1/activation.jar /usr/local/lib tar -zxf /usr/ox/Xerces-J-bin.2.8.1.tar.gz && cp xerces-2_8_1/xercesImpl.jar /usr/local/lib tar -zxf /usr/ox/jdom-1.0.tar.gz && cp jdom-1.0/build/jdom.jar /usr/local/lib tar zxf open-xchange-0.8.8-0.tar.gz && mv open-xchange-0.8.8-0 open-xchange && cd open-xchange
Jetzt installieren wir OpenXchange, die Anpassungen der Pfade und DB Passwort nicht vergessen!
./configure --prefix=/usr/local/openxchange \ --with-mailjar=/usr/local/lib/mail.jar \ --with-activationjar=/usr/local/lib/activation.jar \ --with-jdomjar=/usr/local/lib/jdom.jar \ --with-xercesjar=/usr/local/lib/xercesImpl.jar \ --with-jsdkjar=/usr/local/tomcat/common/lib/servlet-api.jar \ --with-jdbcjar=/usr/local/lib/pg74.216.jdbc3.jar \ --with-htdocsdir=/var/www/ox/htdocs/ \ --with-cgibindir=/var/www/ox/cgi-bin/ \ --with-runuid=www-data \ --with-rungid=www-data \ --with-domain=domain.tld \ --with-organization="$Oranisation" \ --with-basedn="dc=$localdomain,dc=de" \ --with-rootdn="cn=admin,dc=$localdomain,dc=de" \ --with-rootpw=$LDAP-PASSWORT \ --with-tomcatuser=tomcat \ --with-tomcatpasword=$TOMCAT-PASSWORT \ --with-dbname=openexchange \ --with-dbuser=openexchange \ --with-dbpass=$deindbpasswort \ --with-dbhost=127.0.0.1 \ --enable-webdav
Läuft das Configure fehlerfrei durch:
make && make install
Danach kannst testweise mal das Loginfenster aufrufen:
https://www.deinedomain.de/cgi-bin/login.pl
Das Zertifikat bestätigen und danach dürfte das Loginfenster erscheinen.
Troubleshooting
Bricht das Configure mit einer Fehlermeldung ab, zuerst die Pfade auf Tippfehler überprüfen und nachsehen, ob 5
*.jar Dateien im Ordner /usr/local/lib vorhanden sind
ls /usr/local/lib activation.jar jdom.jar mail.jar pg74.216.jdbc3.jar xercesImpl.jar
Unter dem ersten Block, wo auskommentiere Hinweise stehen, trägst folgendes ein:
nano /usr/local/tomcat/bin/catalina.sh JAVA_HOME="/usr/lib/jvm/java-1.5.0-sun-1.5.0.10" JAVA_OPTS="-Dopenexchange.propfile=/usr/local/openxchange/etc/groupware/system.properties" # OS specific support. $var _must_ be set to either true or false.
Du erstellst ein Passwort für Tomcat, Eintragung erfolgt als vorletzte Zeile.
nano /usr/local/tomcat/conf/tomcat-users.xml
<user name="both" password="tomcat" roles="tomcat,role1" /> <user username="admin" password="$deintomcatpasswort" roles="manager"/>
Zu guter letzt kopieren wir nun ein paar Libs und Dateien
mkdir -p /usr/local/tomcat/webapps/servlet/WEB-INF/classes && mkdir -p /usr/local/tomcat/webapps/servlet/WEB-INF/lib && cp /usr/local/openxchange/share/servlets/*.class /usr/local/tomcat/webapps/servlet/WEB-INF/classes/ && cp /usr/ox/open-xchange/system/servlet/web.xml /usr/local/tomcat/webapps/servlet/WEB-INF/ && cp /usr/local/openxchange/lib/*.jar /usr/local/tomcat/webapps/servlet/WEB-INF/lib/ && cp /usr/local/lib/jdom.jar /usr/local/tomcat/webapps/servlet/WEB-INF/lib/ && cp /usr/local/lib/pg74.216.jdbc3.jar /usr/local/tomcat/webapps/servlet/WEB-INF/lib/ && cp /usr/local/lib/activation.jar /usr/local/tomcat/webapps/servlet/WEB-INF/lib/ && cp /usr/local/lib/mail.jar /usr/local/tomcat/webapps/servlet/WEB-INF/lib/ && cp /usr/local/openxchange/lib/umin.war /usr/local/tomcat/webapps/ && ln -s /etc/ldap/ldap.conf /usr/local/openxchange/etc/groupware/ldap.conf && ln -s /etc/ldap/ldap.conf /usr/local/openxchange/etc/webmail/ldap.conf
Natürlich brauchen wir noch ein paar Icons für OpenXchange
cd /usr/ox && tar -zxf ox_zenith_iconset-0.1.tar.gz && cd ox_zenith_iconset/top && cp * /var/www/ox/htdocs/cfintranet/images/top/EN/ && cp * /var/www/ox/htdocs/cfintranet/images/top/DE/
Bei der Durchführung folgender Schritte MUSS sehr sorgfältig vorgegangen werden.
Zuerst stoppen wir PgSQL und verschieben die originale Config
/etc/init.d/postgresql-8.1 stop mv /etc/postgresql/8.1/main/pg_hba.conf /etc/postgresql/8.1/main/pg_hba.OLD
Den folgenden Teil so übernehmen wie er aufgeführt wurde.
cat > /etc/postgresql/8.1/main/pg_hba.conf << "EOF" local all postgres ident sameuser # TYPE DATABASE USER CIDR-ADDRESS METHOD # "local" is for Unix domain socket connections only local all all trust # IPv4 local connections: host all all 127.0.0.1/32 trust # IPv6 local connections: #host all all ::1/128 md5 EOF
Die Dateiberechtigungen nicht vergessen und PgSQL anschließend neu starten:
chown postgres:postgres /etc/postgresql/8.1/main/pg_hba.conf && chmod 640 /etc/postgresql/8.1/main/pg_hba.conf && /etc/init.d/postgresql-8.1 start
su - postgres
Im folgenden Menu muss das Passwort aus das DB Passwort aus dem OpenXchange Configure angegeben werden, wenn der DB User 'openexchange' erstellt wird.
createuser --pwprompt Geben Sie den Namen der neuen Rolle ein: openexchange Geben Sie das Passwort der neuen Rolle ein: $deindbpass_aus_ox_kompilierung Geben Sie es noch einmal ein: $deindbpass_aus_ox_kompilierung_noch_einmal Soll die neue Rolle ein Superuser sein? (j/n) n Soll die neue Rolle Datenbanken erzeugen dürfen? (j/n) j Soll die neue Rolle weitere neue Rollen erzeugen dürfen? (j/n) n CREATE ROLE
Datenbank erstellen
createdb -O openexchange -E UNICODE openexchange
Jetzt werden die DB-Tables von OX in die Datenbank importiert.
psql -U openexchange openexchange < /usr/local/openxchange/share/init_database.sql
Es darf keine Fehlermeldung erscheinen, dass das Passwort für den User falsch ist.
Für das Table 'sys_gen_rights_template' werden ein paar Rules erstellt. Diese so übernehmen wie sie hier im Howto stehen
psql -U openexchange openexchange
Hier sind die Rules
INSERT INTO sys_gen_rights_template values ('now','admin','now','','default_template','y','y','y','y', 'y','y','y','y','y','y','y','y','y','y','y','y','y','y','y', 'y','y','y','y','y','y','y','y','y','y','y','y','y','y','y', 'y','y','y','y','y','y','y','y','y','y','y','y','y');
Danach beenden wir die Datenbank und verabschieden uns als User postgres
\q exit
LDAP Passwort sowie lokale LDAP Pfade eintragen
Zuerst verschieben wir die originale slapd.conf
mv /etc/ldap/slapd.conf /etc/ldap/slapd.OLD
Die Pfade müssen jetzt entsprechend des Hosts angepasst werden, siehe weiter oben bei den Hinweisen für LDAP. LDAP wird sehr zickig wenn man ein SPACE oder TAB zuviel/zuwenig setzt. Das Format ist so okay und muss bei der Anpassung auch so bleiben!!!
cat > /etc/ldap/slapd.conf << "EOF" include /etc/ldap/schema/core.schema include /etc/ldap/schema/cosine.schema include /etc/ldap/schema/nis.schema include /etc/ldap/schema/inetorgperson.schema include /usr/local/openxchange/share/openxchange.schema pidfile /var/run/slapd/slapd.pid argsfile /var/run/slapd/slapd.args loglevel 0 modulepath /usr/lib/ldap moduleload back_bdb sizelimit 500 tool-threads 1 backend bdb checkpoint 512 30 database bdb suffix "dc=$hostname,dc=$de" directory "/var/lib/ldap" dbconfig set_cachesize 0 2097152 0 dbconfig set_lk_max_objects 1500 dbconfig set_lk_max_locks 1500 dbconfig set_lk_max_lockers 1500 index objectClass eq rootdn "cn=admin,dc=$hostname,dc=de" rootpw "$LDAP-PASSWORT" index uid,mailEnabled,cn,sn,givenname,lnetMailAccess,alias,loginDestination eq,sub index memberUid eq access to dn.subtree="ou=Users,ou=OxObjects,dc=$hostname,dc=de" by self write by users write by * read by anonymous auth access to dn.subtree="ou=Groups,ou=OxObjects,dc=$hostname,dc=de" by self write by users write by * read by anonymous auth access to dn.subtree="o=AddressBook,ou=OxObjects,dc=$hostname,dc=de" by group="cn=AddressAdmins,o=AddressBook,ou=OxObjects,dc=$hostname,dc=de" write by users read by self write lastmod on access to dn.base="" by * read access to * by * read EOF
ldap.conf
echo 'BASE dc=$hostname,dc=de' >> /etc/ldap/ldap.conf && echo 'HOST localhost' >> /etc/ldap/ldap.conf
Anschließend die Berechtigung slapd.conf ändern
chmod 600 /etc/ldap/slapd.conf
Erstelle jetzt ein verschlüsseltes Passwort und notiere die Ausgabe im Wordpad
perl -e 'print crypt("$deinpasswort",pack("C2",(int(rand 26)+65),(int(rand 26)+65)))."\n";'
Danach öffnest du folgende Datei und suchst den Eintrag 'userPassword: secret'
nano /usr/local/openxchange/share/init_ldap.ldif
ersetzt dieses durch
userPassword: {CRYPT}Cryptpasswort
Die nächsten Schritte sind absolut einzuhaltenm auch in der Reihenfolge!!!!!!!!!!!!!!!!!!!!!!
/etc/init.d/slapd stop rm /var/lib/ldap/* slapadd -l /usr/local/openxchange/share/init_ldap.ldif chown -R openldap:openldap /var/lib/ldap
Jetzt können wir OpenLDAP erneut starten
/etc/init.d/slapd start
Wir überprüfen nun ob OpenLDAP auf Port 389 lauscht
netstat -tlpen | grep slapd
Port 389 erscheint? –> OK
Wenn ja, gehts weiter und wenn nicht die ganze Sache mit LDAP noch einmal, dann aber den Loglevel höher setzen
addgroup_ox --group=admins
Meldung muss so aussehen:
Added Group admins to LDAP
Ersten Benutzer für OX erstellen
Nachtrag: Bitte erstmal als Maildomain die 'lokale Maildomain' und nicht die e-Mail Webdomain angeben. Es scheint ein Bug in der Software zu sein, schaue mir das in den nächsten 2-3 Tagen erstmal genauer an.
adduser_ox --username="$user" --passwd="$passwort" --name="$Max" \ --sname="Mustermann" --maildomain="lokalemaildomain.de" --ox_timezone="Europe/Berlin" \ --write_global_address=TRUE --lang=DE
Darauf erscheint die Rückmeldung wenn alles OK ist:
LDAP Success SQL Success
Invalid Bind Credential(49) = bedeutet lesen lernen. Passwort in der /etc/ldap/slapd.conf auf 'secret' setzen und Pfade überprüfen.
Mit 'adduser_ox –help' kann man sich alle weiteren Optionen ansehen!
Der User wird einer Gruppe zugewiesen. Es stehen neben 'admins' noch 'user' per default zur Verfügung
addusertogroup_ox --user=$user --group=admins
cp /usr/local/openxchange/etc/init.d/openexchange /etc/init.d/ ln -s /etc/init.d/openexchange /etc/rc2.d/S86openexchange ln -s /etc/init.d/openexchange /etc/rc3.d/S86openexchange
chown -R tomcat:tomcat /usr/local/tomcat
cat > /etc/init.d/tomcat << "EOF" #!/bin/bash # # tomcat # # chkconfig: # description: Start up the Tomcat servlet engine. RETVAL=$? CATALINA_HOME="/usr/local/tomcat" case "$1" in start) if [ -f $CATALINA_HOME/bin/startup.sh ]; then echo $"Starting Tomcat" /bin/su - tomcat -c $CATALINA_HOME/bin/startup.sh fi ;; stop) if [ -f $CATALINA_HOME/bin/shutdown.sh ]; then echo $"Stopping Tomcat" /bin/su - tomcat -c $CATALINA_HOME/bin/shutdown.sh fi ;; *) echo $"Usage: $0 {start|stop}" exit 1 ;; esac exit $RETVAL EOF
Berechtigung und Runlevel für Tomcat
chmod 755 /etc/init.d/tomcat && ln -s /etc/init.d/tomcat /etc/rc2.d/S91tomcat && ln -s /etc/init.d/tomcat /etc/rc3.d/S91tomcat
Lograte mit Tomcat bereichern
echo '/usr/local/tomcat/logs {' >> /etc/logrotate.conf && echo 'weekly' >> /etc/logrotate.conf && echo 'rotate 4' >> /etc/logrotate.conf && echo 'postrotate' >> /etc/logrotate.conf && echo 'endscript' >> /etc/logrotate.conf && echo 'compress' >> /etc/logrotate.conf && echo '}' >> /etc/logrotate.conf
In der Datei
nano /usr/local/openxchange/etc/webmail/webmail.properties
suchen wir nach folgenden Zeilen
user.default.folder.sent=INBOX/Sent user.default.folder.trash=INBOX/Trash user.default.folder.drafts=INBOX/Drafts user.default.folder.spam=INBOX/Spam user.default.folder.autocreate=false
um es so abzuändern:
user.default.folder.sent=INBOX.Sent
user.default.folder.trash=INBOX.Trash
user.default.folder.drafts=INBOX.Drafts
user.default.folder.spam=INBOX.Spam
user.default.folder.autocreate=true
Änderungen müssen auch hier vorgenommen werden:
nano /usr/local/openxchange/etc/webmail/system.cfg
Ändern die Zeilen
ADD-HEADER_X-Operating-System="true" USER-CAN-SELECT-ENCODING="false"
um in:
ADD-HEADER_X-Operating-System="false" USER-CAN-SELECT-ENCODING="true"
/etc/init.d/tomcat start /etc/init.d/openexchange start
Man kann sich nun erstmalig in OX einloggen
https://www.deinedomain.de/cgi-bin/login.pl
Anmerkung: noch steht keine Mailfunktion zur Verfügung
Vorgehensweise für die Installation einer neueren OX Version
/etc/init.d/tomcat stop /etc/init.d/openexchange stop
Neuere Version installieren
cd /usr/ox wget http://www.open-xchange.com.... tar zxf $neuesOX mv $neuesOX open-xchange1 ./configure --prefix=/usr/local/openxchange \ --with-mailjar=/usr/local/lib/mail.jar \ --with-activationjar=/usr/local/lib/activation.jar \ --with-jdomjar=/usr/local/lib/jdom.jar \ --with-xercesjar=/usr/local/lib/xercesImpl.jar \ --with-jsdkjar=/usr/local/tomcat/common/lib/servlet-api.jar \ --with-jdbcjar=/usr/local/lib/pg74.216.jdbc3.jar \ --with-htdocsdir=/var/www/ox/htdocs/ \ --with-cgibindir=/var/www/ox/cgi-bin/ \ --with-runuid=www-data \ --with-rungid=www-data \ --with-domain=domain.tld \ --with-organization="$Oranisation" \ --with-basedn="dc=$localdomain,dc=de" \ --with-rootdn="cn=admin,dc=$localdomain,dc=de" \ --with-rootpw=$LDAP-PASSWORT \ --with-tomcatuser=tomcat \ --with-tomcatpasword=$TOMCAT-PASSWORT \ --with-dbname=openexchange \ --with-dbuser=openexchange \ --with-dbpass=$deindbpasswort \ --with-dbhost=127.0.0.1 \ --enable-webdav
Neu kompilieren:
make && make install
Ein paar Dateien kopieren wir wieder
cp /usr/local/openxchange/share/servlets/*.class /usr/local/tomcat/webapps/servlet/WEB-INF/classes/ cp /usr/ox/open-xchange/system/servlet/web.xml /usr/local/tomcat/webapps/servlet/WEB-INF/ cp /usr/local/openxchange/lib/*.jar /usr/local/tomcat/webapps/servlet/WEB-INF/lib/
Anschließend die Punkte 3.2, 5.2.1 und 5.3 erneut durchführen
Es können alle abgefragten Optionen quittiert werden, Postfix wird anschließend manuell konfiguriert. Beachtet auch bitte, falls ihr wollt das Mails auch korrekt den Empfänger erreichen sollen, den Eintrag des Reverse DNS Eintrags nicht zu vergessen. Dieser sollte dem FQDN angepasst werden, heisst dieser 'horst-testermann.de', sollte der RDNS Eintrag so eingetragen werden.
apt-get install -y postfix postfix-tls postfix-ldap sharutils libsasl2 libsasl2-dev libsasl2-modules \ sasl2-bin telnet
Zuerst sichern wir wieder die originale Datei
mv /etc/postfix/main.cf /etc/postfix/main.ORG
Die Einträge werden dem eigenen Host angepasst und können so übernommen werden.
cat > /etc/postfix/main.cf << "EOF" smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU) biff = no inet_interface = all myhostname=$meinhostname mydestination = mynetworks_style = host mynetworks = 127.0.0.0/8, localhost mynetworks_style = host mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = all local_recipient_maps = ldap:/etc/postfix/ldap_mbox.cf home_mailbox = /Maildir virtual_transport=virtual local_transport = virtual virtual_recipient_maps = ldap:/etc/postfix/ldap_mbox.cf virtual_alias_maps = ldap:/etc/postfix/ldap_alias.cf virtual_mailbox_maps = ldap:/etc/postfix/ldap_dir.cf virtual_uid_maps = ldap:/etc/postfix/ldap_uid.cf virtual_gid_maps = ldap:/etc/postfix/ldap_gid.cf virtual_mailbox_domains= ldap:/etc/postfix/ldap_domain.cf virtual_mailbox_base = / virtual_minimum_uid = 500 virtual_mailbox_limit = 0 smtpd_sasl_auth_enable = yes smtpd_sasl_security_options = noanonymous broken_sasl_auth_clients = yes smtpd_recipient_restrictions = permit_mynetworks, reject_unknown_recipient_domain, permit_sasl_authenticated, reject_unauth_destination smtpd_use_tls = yes smtpd_tls_key_file = /etc/postfix/server.key smtpd_tls_cert_file = /etc/postfix/server.crt smtpd_tls_loglevel = 3 smtpd_tls_received_header = yes smtpd_tls_session_cache_timeout = 3600s tls_random_source = dev:/dev/urandom EOF
Wir erstellen die folgenden Dateien. Achtet bitte darauf, den Pfad zum LDAP Server anzupassen, exakt so wie oben beim OpenXchange und OpenLDAP Teil.
cat > /etc/postfix/ldap_alias.cf << "EOF" server_host = localhost server_port = 389 bind = yes version = 3 bind_dn = cn=admin,dc=$HOSTNAME,dc=de bind_pw = $LDAP-Passwort search_base = ou=Users,ou=OxObjects,dc=$HOSTNAME,dc=de query_filter = (alias=%s) result_attribute = mail EOF
cat > /etc/postfix/ldap_common.cf << "EOF" server_host = localhost server_port = 389 bind = yes version = 3 bind_dn = cn=admin,dc=$HOSTNAME,dc=de bind_pw = $LDAP-Passwort search_base = ou=Users,ou=OxObjects,dc=$HOSTNAME,dc=de EOF
cat > /etc/postfix/ldap_dir.cf << "EOF" server_host = localhost server_port = 389 bind = yes version = 3 bind_dn = cn=admin,dc=$HOSTNAME,dc=de bind_pw = $LDAP-Passwort search_base = ou=Users,ou=OxObjects,dc=$HOSTNAME,dc=de query_filter = (&(uid=%u)(mailEnabled=OK)) result_attribute = homeDirectory result_filter = %s/Maildir/ EOF
cat > /etc/postfix/ldap_domain.cf << "EOF" server_host = localhost server_port = 389 bind = yes version = 3 bind_dn = cn=admin,dc=$HOSTNAME,dc=de bind_pw = $LDAP-Passwort search_base = ou=Users,ou=OxObjects,dc=$HOSTNAME,dc=de query_filter = (mailDomain=%s) result_attribute = mailDomain EOF
cat > /etc/postfix/ldap_gid.cf << "EOF" server_host = localhost server_port = 389 bind = yes version = 3 bind_dn = cn=admin,dc=$HOSTNAME,dc=de bind_pw = $LDAP-Passwort search_base = ou=Users,ou=OxObjects,dc=$HOSTNAME,dc=de query_filter = (&(uid=%u)(mailEnabled=OK)) result_attribute = gidNumber EOF
cat > /etc/postfix/ldap_mbox.cf << "EOF" server_host = localhost server_port = 389 bind = yes version = 3 bind_dn = cn=admin,dc=$HOSTNAME,dc=de bind_pw = $LDAP-Passwort search_base = ou=Users,ou=OxObjects,dc=$HOSTNAME,dc=de query_filter = (&(uid=%u)(mailEnabled=OK)) result_attribute = mail EOF
cat > /etc/postfix/ldap_uid.cf << "EOF" server_host = localhost server_port = 389 bind = yes version = 3 bind_dn = cn=admin,dc=$HOSTNAME,dc=de bind_pw = $LDAP-Passwort search_base = ou=Users,ou=OxObjects,dc=$HOSTNAME,dc=de query_filter = (&(uid=%u)(mailEnabled=OK)) result_attribute = uidNumber EOF
cat > /etc/postfix/sasl/smtpd.conf << "EOF" loglevel: 3 mech_list: plain login sasl_pwcheck_method: saslauthd pwcheck_method: saslauthd EOF
Kleine Änderung der Dateirechte durchführen:
chmod 640 /etc/postfix/ldap* chmod 640 /etc/postfix/sasl/smtpd.conf chgrp postfix /etc/postfix/ldap* chgrp postfix /etc/postfix/sasl/smtpd.conf
In der master.cf
nano /etc/postfix/master.cf
tragen wir die beiden folgenden Zeilen sinngemäß ein
smtps inet n - n - - smtpd -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes 587 inet n - n - - smtpd -o smtpd_enforce_tls=yes -o smtpd_sasl_auth_enable=yes
In der saslauthd.conf
nano /etc/default/saslauthd
diese Zeilen wie folgt beschrieben asnpassen
START=yes MECHANISMS="ldap" MECH_OPTIONS="" THREADS=5 OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"
SASL wird in Postfix 'bekannt' gemacht. Hier wieder den Pfad zum LDAP Server anpassen.
cat > /etc/saslauthd.conf << "EOF" ldap_servers: ldap://127.0.0.1:389/ ldap_search_base: ou=Users,ou=OxObjects,dc=$HOSTNAME,dc=de ldap_auth_method: userPassword ldap_filter: uid=%u ldap_bind_dn: cn=admin,dc=$HOSTNAME,dc=de ldap_bind_pw: $LDAP-Passwort EOF
Weil OX seine Mails in '/home' speichert, sowie bei der Installation von SASL/Postfix nicht alle Dateien angelegt werden, müssen ein paar Änderungen vorgenommen werden
chgrp 500 /home chmod 775 /home mkdir -p /var/spool/postfix/var/run/saslauthd chmod 710 /var/spool/postfix/var/run/saslauthd chown -R postfix:postfix /var/spool/postfix/var/run/saslauthd ln -s /var/spool/postfix/var/run/saslauthd /var/run/saslauthd chmod 600 /etc/saslauthd.conf
Achtung, erscheint beim symbolischen Link ein Fehler, dass /var/run/saslauthd existiert, dieses bitte löschen
rm -r /var/run/saslauthd
Er werden Zertifikate erstellt
openssl genrsa -des3 -rand /etc/hosts -out /usr/ox/server.key 2048 openssl req -new -key /usr/ox/server.key -out /usr/ox/server.csr openssl x509 -req -days 3650 -in /usr/ox/server.csr -signkey /usr/ox/server.key -out /etc/postfix/server.crt openssl rsa -in /usr/ox/server.key -out /etc/postfix/server.key
Wir starten erstmal SASL und Postfix neu
/etc/init.d/saslauthd start /etc/init.d/postfix restart
Mit einem OX User testet du SASL
/usr/sbin/testsaslauthd -u $OXUSER -p $OXUSERPASS
War dieser Test erfolgreich, schreiten wir zum nächsten Test
Der Username und das Passwort es OX Users werden kodiert und anschließend in das Wordpad kopiert
printf '$OXUSER'|uuencode -m - printf '$OXUSERPASS'|uuencode -m -
Telnet
telnet localhost 25
Per Telnet simulieren wir einen Login des OX Users. Du gibst beides im UUE crypted Format ein:
AUTH LOGIN UUE-Username UUE-Passwort
Ist die Anmeldung erfolgreich verlaufen, kann man Telnet verlassen und mit dem IMAP fortfahren.
Scheitert die Anmeldung, die Konfigurationsdateien nach Fehlern durchsuchen. Achtet vor allem auf LDAP
cd /usr/ox && apt-get install -y courier-authdaemon courier-imap courier-imap-ssl courier-pop \ courier-pop-ssl courier-ldap
Die Dienste werden erstmal gestoppt
/etc/init.d/courier-authdaemon stop /etc/init.d/courier-imap stop /etc/init.d/courier-imap-ssl stop /etc/init.d/courier-pop stop /etc/init.d/courier-pop-ssl stop
openssl req -new -newkey rsa:1024 -days 3650 -nodes -x509 -keyout server.pem -out server.pem mv /etc/courier/pop3d.pem /etc/courier/pop3d.pem.ORG mv /etc/courier/imapd.pem /etc/courier/imapd.pem.ORG cp server.pem /etc/courier/pop3d.pem cp server.pem /etc/courier/imapd.pem chown daemon:daemon /etc/courier/pop3d.pem chown daemon:daemon /etc/courier/imapd.pem.ORG chmod 600 /etc/courier/pop3d.pem chmod 600 /etc/courier/imapd.pem
Originaldatei verschieben
mv /etc/courier/authldaprc /etc/courier/authldaprc.ORG
Neue, auch hier wieder den Pfad anpassen
cat >> /etc/courier/authldaprc << "EOF" LDAP_URI ldap://$deinvollerhostname.de LDAP_PROTOCOL_VERSION 3 LDAP_BASEDN ou=Users,ou=OxObjects,dc=$HOSTNAME,dc=de LDAP_BINDDN cn=admin,dc=$HOSTNAME,dc=de LDAP_BINDPW $LDAP-Passwort LDAP_TIMEOUT 5 LDAP_AUTHBIND 1 LDAP_MAIL mail LDAP_DOMAIN $deinvollerhostname.de LDAP_HOMEDIR homeDirectory LDAP_MAILDIR mailbox LDAP_DEFAULTDELIVERY defaultDelivery LDAP_FULLNAME cn LDAP_CRYPTPW userPassword LDAP_UID uidNumber LDAP_GID gidNumber LDAP_DEREF never LDAP_TLS 0 EOF
Berechtigungen setzen
chown daemon:daemon /etc/courier/authldaprc chmod 660 /etc/courier/authldaprc
Original verschieben
mv /etc/courier/authdaemonrc /etc/courier/authdaemonrc.ORG
wird ersetzt durch
cat > /etc/courier/authdaemonrc << "EOF" authmodulelist="authldap" authmodulelistorig="authcustom authcram authuserdb authldap authpgsql authmysql authpam" daemons=5 DEBUG_LOGIN=0 version="" authdaemonvar=/var/run/courier/authdaemon EOF
Auch hier wieder die Berechtigungen setzen
chown daemon:daemon /etc/courier/authdaemonrc chmod 660 /etc/courier/authdaemonrc
/etc/init.d/saslauthd start /etc/init.d/courier-authdaemon start /etc/init.d/courier-imap start /etc/init.d/courier-imap-ssl start /etc/init.d/courier-pop start /etc/init.d/courier-pop-ssl start
Damit das Mailkonto des OX Users angelegt wird, schicken wir diesem eine Mail
echo create mailfolder|sendmail oxuser@deinemaildomain.de
Damit steht für OpenXchange die Mailfunktion zur Verfügung