{{tag> webapp horde}}
====== Installation von Horde 5 auf linuxmuster.net 6.0 ======
**hier verwendete Version:** Horde 5.1.4 auf Linuxmuster.net 6.0.44.
Dokumentation: http://www.horde.org/apps/webmail/docs/INSTALL
Installation läuft über PEAR: "PHP Extension and Application Repository". PEAR funktioniert wie ein Paketmanagement, bei dem sich Abhängigkeiten automatisch auflösen sollten, wenn man die passenden Quellen - heißen hier Channel - aufgenommen hat. Ein "PEAR upgrade-all" führt dann einen Upgrade aller installierten Pakete durch.
Die html/php-Seiten werden in der nachfolgenden Installation in **''/var/www/horde''** abgelegt. Zusätzlich werden noch an weiteren Stellen Dateien installiert, z.B. in **''/usr/share/php/Horde''** und **'' /usr/share/php/PEAR''**.
Zeilen mit '#' sind auf der Konsole als root auszuführen.
Die Punkte 1 bis 3 können mit dem -> [[anwenderwiki:webapps:horde:horde-preinstall|horde-preinstall.sh]] Script abgearbeitet werden:
* Datenbank installieren (Kennwort anpassen!
* Deb-Pakte installieren
* Channels installieren
* Pear-Pakete installieren
* Pecl-Pakete installieren
Danach weiter mit Punkt 4.
===== 0. Altes Horde deinstallieren=====
Zu Beginn sollte man ggf. ein altes horde3 deinstallieren mit:
# apt-get remove horde3
Eine automatische Übernahme von Daten aus Horde 3 (z.B. Adressbuch/Kalender) nach Horde 5 habe ich nicht getestet, mit der Export/Import-Funktion geht es problemlos.\\
//Empfehlung: Jeder User sollte dies mit der Import/Export-Funktion selbst tun - ggf. beide Horde-Versionen zunächst parallel anbieten.//
===== 1. Benötigte zusätzliche .deb - Pakete installieren =====
# aptitude install php5-geoip imagemagick php5-imagick php5-tidy php5-memcache memcached php5-auth-pam php5-intl php5-sasl
# aptitude install libssh2-php libssh2-1-dev libidn11 libidn11-dev
Manche dieser Pakete sind zwar nicht zwingend notwendig, doch gibt Horde5 bei seinem Selbsttest ein "Warning" aus, wenn diese fehlen.\\
Je nach Vorgeschichte des Systems sind diese auch schon vorhanden.
===== 2. Datenbank anlegen =====
# mysql
mysql> CREATE database horde5;
mysql> CREATE USER h5admin@localhost IDENTIFIED BY '12345678';
mysql> GRANT ALL ON horde5.* TO h5admin@localhost;
mysql> quit
Das Passwort "12345678" für den Zugriff von Horde auf die DB muss man natürlich durch ein anderes, sicheres ersetzen, ebenso dann unten bei den Eingaben.\\
//Hinweis: Die Datenbank wird unabhängig zu einer existierenden horde3-Datenbank angelegt.
//
===== 3. Pear-Installation vorbereiten =====
# pear install HTTP_WebDAV_Server-1.0.0RC8
# pear install --alldeps XML_Serializer-0.20.2
# pear channel-discover pear.horde.org
# pear channel-discover pear.phpunit.de
# pear channel-discover pear.nrk.io
# pear channel-discover pear.symfony.com
# pear upgrade-all
fixme-Hinweis: pear.phpunit.de ist nicht mehr erreichbar, siehe diese [[https://github.com/sebastianbergmann/phpunit/wiki/End-of-Life-for-PEAR-Installation-Method|Info]].
**Weitere Pakete installieren/vorbereiten:**\\
Bei der nachfolgenden Horde-Installation werden manche Pakete nicht installiert, da diese nicht in der geforderten Version "stable" vorliegen. Bei diesen Paketen kann man "versuchen" sie einzeln vorab als beta-Version zu installieren (ging nicht immer).
pear install --alldeps Numbers_Words-0.16.4
pear install Image_Text-0.7.0
pear install --alldeps Text_CAPTCHA-0.5.0
pear install --alldeps Date_Holidays-0.21.8
pear install --alldeps Text_LanguageDetect-0.3.0
pecl install sasl-0.1.0
pecl install idn-0.2.0
pecl install ssh2-0.12
pecl install msgpack-0.5.5
pear install horde/horde_lz4
pear install Console_GetoptPlus-beta
pear install Console_Color2-0.1.2
pear install net_dns2
pear install file_fstab
===== 4. Horde Basissystem installieren =====
# pear install horde/horde_role
# pear run-scripts horde/Horde_Role
Als Pfad (filesystem location) dabei **''/var/www/horde''** eingegeben.
# mkdir /var/www/horde
# pear install -a -B horde/webmail
Um alle Abhängigkeiten aufzulösen musste ich die Installation mehrfach anstoßen? Problem unklar!\\ **Verdacht:** Netzwerk-Verbindungsprobleme mit dem Paketserver von horde.org.
# pear install horde/horde
# pear install -a horde/horde
# pear install horde/webmail
# pear install -a horde/webmail
Falls die Installation mehrfach nicht erfolgreich durchläuft kann man folgende Befehle und Optionen verwenden:\\
# rm -R /tmp/pear
# pear install -a --ignore-errors horde/horde
# pear install -a --ignore-errors horde/horde
# pear install -a --ignore-errors horde/horde
# pear install -a --ignore-errors horde/horde
# pear install -a -B --ignore-errors horde/webmail
# pear install -a -B --ignore-errors horde/webmail
Die Installation ist dann erst erfolgreich, wenn ein weiterer Aufruf die Meldung ergibt:\\
''**"horde/webmail is already installed and is the same as the released version 5.1.2 install failed"**''\\
//Hinweis: Bei einer Installation waren 6! Installations-Befehle nötig, bis die Installation fehlerfrei abgeschlossen war.//
Jetzt Installation abschließen:
# webmail-install
Eingaben für webmail-install:
Datenbank: mysql
Username to connect: h5admin
Password: 12345678
Socket: unix
Location:
Databasename: horde5
charset: utf-8
ssl: [0]-no
CA:
split: false
mail-user: wwwadmin
----
Alle folgenden Konfigurationsschritte (Nr. 5 bis 9) können durch das Script -> [[anwenderwiki:webapps:horde:postinstall|horde-postinstall.sh]] durchgeführt werden:
* Konfiguration von Apache und php
* Rechte setzen
* Konfigurationsdateien nach /etc auslagern
* LDAP Authentifizierung setzen
* LDAP-Groups setzen
* Dateimanager Gollem einrichten
* Log-Datei konfigurieren
* Neues sicheres Kennwort für mysql setzen (statt '12345678')
Auf die Fehlermeldungen achten, ggf. muss man bei Apache eine alte Konfigurationsdatei von horde 3 noch löschen.
===== 5. Zugriffsrechte, Apache anpassen =====
**Rechte anpassen:**
# chown root:www-data /var/www/horde/static
# chmod 775 /var/www/horde/static
**Apache Konfiguration anpassen:**\\
Neue Datei **''/etc/apache2/conf.d/horde5.conf''** anlegen:
Alias /horde /var/www/horde
Options Indexes FollowSymLinks MultiViews
AllowOverride All
AcceptPathInfo On
Order allow,deny
allow from all
Ggf. muss man eine alte Konfigurationsdatei von horde 3 löschen. Danach Apache neustarten:
# service apache2 restart
Nun kann man Horde im Browser aufrufen: http://server.linuxmuster-net.lokal/horde.\\
===== 6. Statt IMP: LDAP-Authentifizierung einrichten =====
Nach Installation benutzt Horde zur Authentifizierung IMP, d.h. das Mailsystem des Servers. Dies kann man auf LDAP umstellen, dann kann man auch Gruppenzugehörigkeiten in Horde verwenden.\\
Zuerst die Config-Dateien editierbar machen, Sicherungskopie erstellen:
# cd /var/www/horde/config
# touch conf.php conf.bak.php && chown root:www-data conf.* && chmod 664 conf.*
# cp conf.php conf.php.orig
# pear install -a horde/horde_ldap
Wenn das horde_ldap-Modul schon installiert wurde, gibt es beim letzten Punkt eine Fehlermeldung, die man ignorieren kann.
Nun im Browser als wwwadmin bei Horde anmelden und unter **''Administration -> Konfiguration -> Horde -> LDAP''**
$conf[ldap][useldap] yes
$conf[ldap][hostspec] localhost
$conf[ldap][bindas] Bind anonymously
dann unter **''Administration -> Konfiguration -> Horde -> Authentication''**
$conf[auth][driver] LDAP Authentication
$conf[auth][params][basedn] dc=linuxmuster-net,dc=lokal !!! An eigene Daten anpassen, siehe /etc/ldap/ldap.conf!!!
$conf[auth][params][uid] uid
$conf[auth][params][filter] (objectclass=posixAccount)
optional: die Gruppenzugehörigkeit aus LDAP auslesen **''Administration -> Konfiguration -> Horde -> Groups''**:
$conf[group][driver] LDAP
$conf[group][params][basedn] dc=linuxmuster-net,dc=lokal !!! An eigene Daten anpassen!!!
$conf[group][params][gid] cn
$conf[group][params][memberuid] memberUid
Erst am Ende dem Button betätigen: **"Horde Konfiguration Erzeugen"**
**Abschluss:** Wenn Horde mit LDAP-Authentifizierung konfiguriert ist, muss man für die Automatische Anmeldung am Postfach zusätzlich eine Datei "''**/var/www/horde/imp/config/backends.local.php**''" anlegen mit Inhalt:
Falls danach Nichts mehr geht (weil man sich z.B. vertippt hat) kann man die Sicherungskopie der Conf-Datei zurückpielen und von vorne beginnen:
# cp /var/www/horde/config/conf.php.orig /var/www/horde/config/conf.php
Ggf. muss man das LDAP-Paket nochmals installieren:
# pear install -a horde/horde_ldap
===== 7. Dateimanager gollem einrichten =====
Eine neue Datei anlegen unter **''/var/www/horde/gollem/config/backends.d/samba.php''** :
false,
'name' => 'linuxmuster.net',
'driver' => 'smb',
'hordeauth' => true,
'params' => array(
'hostspec' => 'localhost',
'port' => 139,
'share' => 'homes',
'smbclient' => '/usr/bin/smbclient',
'ipaddress' => '127.0.0.1',
),
'loginparams' => array(
),
'attributes' => array(
'type',
'name',
'edit',
'download',
'modified',
'size'
)
);
Vorinstalliertes Backend löschen:
# rm /var/www/horde/gollem/config/backends.d/10-webmail.php
**Problem:** Alle Schüler haben keinen Zugriff auf ihr home, Fehlermeldung: Unable to create VFS-Folder "" \\
**Ursache:** Zugriffrechte auf /home/students waren falsch - warum unklar?\\
**Lösung:** Zugriffsrechte auf 751 setzen. (oder 775?)
===== 8. Log-Datei einrichten =====
Standardmäßig wird alles in der Syslog geloggt. Man kann dies umstellen:
# mkdir /var/log/horde
# chown www-data:www-data /var/log/horde
Nun als wwwadmin an Horde anmelden und unter **''Administration → Konfiguration → Horde → Logging''** zwei Optionen umstellen und neue "Horde Konfiguration erzeugen".
$conf[log][type] file
$conf[log][name] /var/log/horde/horde5.log
===== 9. Config-Dateien nach /etc auslagern =====
Mit folgendem Script werden die Config-Dateien nach /etc/horde5 ausgelagert und dann per SymLink von Horde angesprochen:
#! /bin/bash
#
# Script verschiebt alle Conf-Dateien von Horde nach /etc/horde5
# Pfade ggf. anpassen
wwwdir="/var/www/horde"
etcdir="/etc/horde5"
###########################################################################
if [ ! -d "$wwwdir" ]; then
echo "WARNING: Verzeichnis $wwwdir existiert nicht, Script wird beendet."
exit 1
fi
if [ -d "$etcdir" ]; then
echo "WARNING: Verzeichnis $etcdir existiert schon, Script wird beendet."
exit 1
fi
mkdir "$etcdir"
chown root:www-data -R "$etcdir"
chmod 755 "$etcdir"
echo "Starte Conf-Verzeichnisse zu verschieben und verlinken ..."
verzliste="/horde /gollem /imp /ingo /kronolith /mnemo /nag /turba /trean"
for verz in $verzliste ; do
if [ $verz == "/horde" ] ; then
wverz="$wwwdir/config"
else
wverz="$wwwdir$verz/config"
fi
everz="$etcdir$verz"
echo " Verschieben von $wverz --> $everz"
mv $wverz $everz
ln -s $everz $wverz
chown root:www-data -R $everz
chmod 755 $everz
done
exit 0
===== 10. Fehlerbehebungen und Optimierungen =====
Um die Installation von horde zu überprüfen kann man eine Test-Seite abrufen. Die muss man aber zuerst in der Config-Datei **''/var/www/horde/config/conf.php''** freischalten:
$conf['testdisable'] = false;
und dann im Browser:
http://server.linuxmuster-net.lokal/horde/test
**Problem:** lzf ist nicht installiert:
# pecl install lzf
Dann noch eine Datei **''/etc/php5/apache2/conf.d/lzf.ini''** erzeugen um das lzf-Modul zu aktivieren:
# echo "extension=lzf.so" > /etc/php5/apache2/conf.d/lzf.ini
# service apache2 restart
**Problem:** lzf ist weiterhin unvollständig installiert:
# aptitude install make
# pecl uninstall lzf
# pecl install lzf
**Problem:** lz4 ist unvollständig installiert:
# pear install horde/horde_lz4
# echo "extension=horde_lz4.so" > /etc/php5/apache2/conf.d/lz4.ini
# echo "extension=msgpack.so" > /etc/php5/apache2/conf.d/msgpack.ini
# service apache2 restart
**Problem bei Miscellaneous PHP Settings**: Die Datei **''/etc/php5/apache2/php.ini''** editieren, Divisor-Wert ändern von 100 auf 10000 und Apache neustarten.
# sed -i 's|session\.gc_divisor.*|session\.gc_divisor = 10000|' /etc/php5/apache2/php.ini
# service apache2 restart
----
PEAR Upgrade:
# pear upgrade-all
----
**Problem:** mysql als root starten:
U.U muss man mysql mit folgendem Befehl starten:
# mysql -u debian-sys-maint -p****
Das Passwort für debian-sys-maint findet man unter **''/etc/mysql/debian.cnf''**.
----
**Problem:** Falls bei **''webmail-install''** der Fehler "Class ... not found" auftritt, kann man diese nachinstallieren, z.B. mit:\\
# pear install -a -f /horde/Horde_Auth
----
**Problem:** SASL wird nicht richtig installiert
pecl install channel://pecl.php.net/sasl-0.1.0
tar -xvf ./sasl-0.1.0.tgz
cd ./sasl-0.1.0
phpize sasl
./configure
make
cd ./modules
cp ./sasl.so /usr/lib/php5/20090626+lfs/
cd ../..
rm -R ./*
==== Logging ====
**Horde-Logging** einschalten in der Datei **''/var/www/horde/config/config.php''**, umstellen von 'INFO' auf 'DEBUG'. Die Meldungen sind dann in der syslog oder in der Log-Datei von Punkt 8 (siehe oben):
$conf['log']['priority'] = 'DEBUG';
**PHP-Logging** einschalten in der Datei **''/etc/php5/apache2/php.ini''**. Folgende Optionen anpassen:
error_reporting = E_ALL
display_startup_errors = On
log_errors = On
error_log = "/var/log/horde/php.log"
Danach Apache neu starten:
# service apache2 restart
==== Fehlermeldungen bei NAG ====
Ggf. muss direkt die Apache-Konfiguration angepasst werden:
RewriteEngine on
RewriteBase /horde
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ rampage.php [QSA,L]
===== 11. Einstellungen zu Mail =====
Um eine feste Maildomain für alle festzulegen ergänzt man in der Datei ''**/var/www/horde/imp/config/backends.local.php**''
# cd /var/www/horde/whups/config
# touch conf.php conf.bak.php && chown root:www-data conf.* && chmod 664 conf.*
===== 13. Änderung mit INGO 3.2.x =====
**Filterregeln**\\
Durch eine Änderung im Bereich von imapflags / imap4flags ist eine Anpassung notwendig, da sonst die Filterregeln nicht mehr komplett funktionieren (-> als XY markieren). Das neue imap4flags kann nicht verarbeitet werden und manuell muss die Verwendung der 'alten' imapflags konfiguriert werden:
# touch /etc/horde5/ingo/backends.local.php && chown root:www-data back* && chmod 664 back*
\\
Zur Sicherheit //alle// notwendigen Parameter in die backends.local.php, teilweise doppelt (todo...):
$backends['sieve']['script'][Ingo::RULE_ALL]['params']['imapflags'] = true;
//$backends['sieve']['script'][Ingo::RULE_ALL]['params']['imap4flags'] = false;
$backends['imap']['disabled'] = true;
// $backends['sieve']['disabled'] = false;
$backends['sieve'] = array(
// Disabled by default
'disabled' => false,
'transport' => array(
Ingo::RULE_ALL => array(
'driver' => 'timsieved',
'params' => array(
// Hostname of the timsieved server
'hostspec' => 'localhost',
// Login type of the server
'logintype' => 'PLAIN',
// Enable/disable TLS encryption
'usetls' => true,
// Port number of the timsieved server
'port' => 4190,
// Name of the sieve script
'scriptname' => 'ingo',
// imap(4)flags
'imapflags' => 'true',
// Enable debugging. The sieve protocol communication is logged
// with the DEBUG level.
'debug' => false,
),
),
),
'script' => array(
Ingo::RULE_ALL => array(
'driver' => 'sieve',
'params' => array(
// If using Dovecot or any other Sieve implementation that
// requires folder names to be UTF-8 encoded, set this
// parameter to true.
'utf8' => true,
'imapflags' => 'true',
),
),
),
'shares' => false
);