Benutzer-Werkzeuge

Webseiten-Werkzeuge


 [[anwenderwiki:webapps:horde:installhorde5ubuntu]] 

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 → 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 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 → 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:

horde5.conf
Alias /horde /var/www/horde
<Directory /var/www/horde>
  Options Indexes FollowSymLinks MultiViews
  AllowOverride All
  AcceptPathInfo On
  Order allow,deny
  allow from all
</Directory>

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:

backends.local.php
<?php
$servers['imap']['hordeauth'] = true;
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 :

samba.php
<?php
$backends['ftp']['disabled'] = true;
$backends['smb'] = array(
    'disabled' => 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:

horde-linken.sh
#! /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:

<Location /horde>
   RewriteEngine on
   RewriteBase /horde
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteRule ^(.*)$ rampage.php [QSA,L]
</Location>  

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

<?php
...
$servers['imap']['maildomain'] = 'nowhere.de';

Um Weiterleitungen zu ermöglichen ergänzt man die Datei /var/www/horde/ingo/config/backends.local.php um die nötigen Driver zu aktivieren:

<?php
$backends['imap']['script'][Ingo::RULE_ALL]['driver'] = 'sieve';

(siehe auch bei Punkt 13)

12. Weitere Module installieren

Ticket-System Whups

# pear install -a horde/whups

oder

# pear install -a --ignore-errors horde/whups

und dann:

# 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
);
 [[anwenderwiki:webapps:horde:installhorde5ubuntu]] anwenderwiki/webapps/horde/installhorde5ubuntu.txt · Zuletzt geändert: 2015/11/22 11:28 von 127.0.0.1