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.
Danach weiter mit Punkt 4.
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.
# 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.
# 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.
# 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
# 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
# pear install horde/horde # pear install -a horde/horde # pear install horde/webmail # pear install -a horde/webmail
# 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
Auf die Fehlermeldungen achten, ggf. muss man bei Apache eine alte Konfigurationsdatei von horde 3 noch löschen.
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 <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.
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:
<?php $servers['imap']['hordeauth'] = true;
# 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
Eine neue Datei anlegen unter /var/www/horde/gollem/config/backends.d/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?)
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
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
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 ./*
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
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>
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)
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.*
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 );