Horde

aus www.kruedewagen.de, Homepage von Ralf und Judith Krüdewagen (Kruedewagen)
Zur Navigation springen Zur Suche springen

Horde ist eine PHP-basierte Groupware-Software unten Open Source Lizenz. Ich benutze Horde als selbst-gehostete Groupware-Lösung für E-Mail, Kalender und Kontakte sowohl für Webclients, PC-Clients und mobile Clients.

Einleitung

Vor allem die Integration von PGP und S/MIME unterscheidet Horde von anderen Lösungen. Im Gegensatz zu meiner bisher eingesetzten Groupware EGroupware fallen die sehr aktive Entwicklung und Community auf. Horde ist modular aufgebaut, wobei die Webmail Edition die wohl einfachste und beste Integration der Basis-Komponenten bietet - vor allem für den Einsatz auf dem Heimserver oder in Arbeitsgruppen.

Meine Erfahrungen

Was mir an Horde am besten gefällt:

  • LAMP-System reicht aus. Keine zusätzlichen laufende Prozesse, so dass Systemressourcen nur bei Nutzung benötigt werden.
  • Recht einfache Installation ohne arge Klimmzüge.
  • Integration und Authentifizierung zum IMAP-Server Dovecot funktioniert.
  • Document-Root der Webinstanz lässt sich einfach verändern, läuft unter / oder in einem /unterverzeichnis.
  • Webmail mit PGP-Unterstützung (jedoch nur ein Schlüsselpaar pro Benutzer möglich).
  • Sehr ansprechende und in weiten Teilen intuitive Web GUI mit vielen Funktionen.
  • Viele sinnvolle Einstellmöglichkeiten (für Benutzer und den Admin) in der Web GUI.
  • Tastaturkürzel in der Web GUI.
  • CalDAV und CardDAV zum Abgleich von Kalender und Kontakten funktionieren tadellos.
  • Viele Ex- und Importmöglichkeiten.

Nachteile und Fehler aus meiner Erfahrung:

  • Verwaltung eines eigenen S/MIME Zertifikats (bzw. des privaten Schlüssels) funktioniert nicht.
  • Nachträgliche Änderung des Installationsverzeichnisses hat ggf. Auswirkungen auf Upgrade-Prozedur (wie in PEAR ändern?).
  • Nur eine E-Mail Adresse pro Kontakt möglich. Für jede weitere nutzbare E-Mail Adresse muss ein weiterer Kontakt hinzugefügt werden. Das ist auf Dauer mühsam.
  • Externe Kalender lassen sich zwar in die Kalender-Ansicht importieren, aber es wird anscheinend nicht gecacht. Bei jedem Aufruf des Kalenders werden externe Daten neu geladen, was unpraktikabel ist.
  • Beim Eintragen von Terminen per CalDAV in KDE kontact gibt es ein Problem mit der Zeitzone.

Offizielle Webseiten

Dokumentation

Betrieb

Installation

# pear channel-discover pear.horde.org

# pear install horde/horde_role
downloading Horde_Role-1.0.1.tgz ...
Starting to download Horde_Role-1.0.1.tgz (10,977 bytes)
.....done: 10,977 bytes
install ok: channel://pear.horde.org/Horde_Role-1.0.1
horde/Horde_Role has post-install scripts:
/usr/share/php5/PEAR/PEAR/Installer/Role/Horde/Role.php
Horde_Role: Use "pear run-scripts horde/Horde_Role" to finish setup.
DO NOT RUN SCRIPTS FROM UNTRUSTED SOURCES

# pear run-scripts horde/Horde_Role
Including external post-installation script "/usr/share/php5/PEAR/PEAR/Installer/Role/Horde/Role.php" - any errors are in this script
Inclusion succeeded
running post-install script "Horde_Role_postinstall->init()"
init succeeded
Filesystem location for the base Horde application : /srv/www/vhosts/myserver.de
Configuration successfully saved to PEAR config.
Install scripts complete

# pear install -a -B horde/webmail

# webmail-install

Permissions:

chown wwwrun:www static
chgrp -R www config
chmod 770 config

Upgrade

su
cd /srv/www/vhosts
DIR=<myDocumentRoot>
rm -rf $DIR.old
cp -rp $DIR $DIR.old
chmod 700 $DIR.old
pear upgrade -a -B horde/webmail
  • Dann in der GUI zu "Administration -> Konfiguration" gehen und auf "Die Konfiguration muss aktualisiert werden." gehen.
  • Wenn nur eine Komponente, z.B. IMP, aktualisiert werden soll:
pear upgrade -a -B horde/imp

Achtung:

  • Nach Update von IMP sollte Pfad in /usr/bin/horde-alarms angepasst werden (s.u.).
  • Ebenfalls muss die .htaccess Datei wieder angepasst werden (s.u.).
  • Für DB-Updates muss open_basedir temporär deaktiviert werden.

Force

Webmail (z.B. bei PHP 7 nötig):

pear upgrade -f -a -B horde/webmail

Alle Horde-Pakete:

pear upgrade -f -a -B $(pear list -c horde | tail -n +4 | awk '{ print "horde/"$1 }')

Nur ein Paket:

pear upgrade -f -a -B horde/Horde_Core

Horde Webmail 5.2.0

  • Sobald man ein persönliches S/MIME Zertifikat hinterlegt hat, kann die IMP Komponente nicht mehr geladen werden. Löschen der drei smime Datensätze in Tabelle horde_prefs nötig. S/MIME Zertifikat wird zudem nach Upload nicht mehr angezeigt.
  • Authentifizierung per "imp" gibt Fehler bei Sync über CalDAV -> Wechsel zu "gollem" hilft (warum auch immer).

PHP Fehler Weather

pear uninstall horde/Horde_Service_Weather
pear uninstall Services_Weather

data_dir

Als User wwwrun:

pear config-set horde_dir /srv/www/vhosts/<DIR>

Konfiguration

  • config/conf.php:
  • alle config/conf.php
  • .htaccess
  • imp/config/backends.local.php:
$servers['imap'] = array(
    'disabled' => false,
    'name' => 'IMAP Server',
    'hostspec' => 'localhost',
    'hordeauth' => 'full',
    'protocol' => 'imap',
    'port' => 143,
    'secure' => 'tls',
);
Hinweis: "'secure' => 'ssl'" funktioniert ebenfalls auf Port 993.
  • imp/config/mime_drivers.local.php

Apache 2.4

Beim Betrieb von Apache 2.4 muss die .htaccess Datei angepasst werden ("allow from all" nicht mehr gültig):

Require all granted

bzw. so etwas wie:

Require all denied

AuthType Basic
AuthName "Horde Pre-Login"
AuthUserFile /pass/to/htpasswd

<RequireAny>
  # Home
  Require ip 127
  Require ip 192.168.0.0/16
  Require ip 10.1.0.0/16
</RequireAny>

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    RewriteRule .* - [env=REDIRECT_HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    RewriteCond   %{REQUEST_FILENAME}  !-d
    RewriteCond   %{REQUEST_FILENAME}  !-f
    RewriteRule ^(.*)$ rampage.php [QSA,L]
</IfModule>

Test

https://example.com/test.php

Pear

Ein paar Komamndos und Hinweise:

pear channel-info horde
pear info horde/webmail
pear list-files horde/webmail
pear config-show
/root/.pearrc

Alle Pear Module listen:

pear list -c horde | tail -n +4 | awk '{ print "horde/"$1 }'

Cache löschen:

pear clear-cache

Alarme

E-Mail Alarme für Kalender-Einträge werden standardmäßig nur getriggert und verschickt, wenn aktuell auf die Web-GUI des Kalenders zugegriffen wird. Daher muss ein Cronjob eingerichtet werden, der periodisch das mitgelieferte Script horde-alarms ausführt.

Eintrag in /etc/crontab:

# Horde Alarming, http://www.horde.org/apps/webmail/docs/INSTALL
*/5 * * * *     wwwrun /usr/bin/horde-alarms

Testen:

su -s /bin/bash - wwwrun
php /usr/bin/horde-alarms

oder

sudo -u wwwrun php /usr/bin/horde-alarms

Hinweise (teils veraltet und obsolete):

  • Das Script horde-alarms verursacht Fehlermeldungen im IMAP-Log, da versucht wird, sich mit dem Admin-Account zu authentifizieren.
dovecot: imap-login: Disconnected (auth failed, 4 attempts in 20 secs): user=<...>
Das ist anscheinend vom Design her so nötig, jedenfalls wird die Funktionalität dadurch nicht beeinträchtigt. Allerdings benötigt das Script ca. 20 Sekunden für die erfolglosen Login-Versuche. Siehe auch Ticket 11387 - horde_alarms tries always to login as first admin user but with an empty password
  • Damit die Alarm-E-Mails in Deutsch sind, muss man im Profil des Admin-Users die Sprache explizit auf "Deutsch" stellen. Bei "Standard" werden Alarm-E-Mails in Englisch verfasst.
  • Nach Update von PHP 5.4 auf PHP 5.5 gibt horde-alarms folgende Fehlermeldung (wobei das Alarming immer noch funktioniert):
HORDE: [imp] Horde_Prefs_Scope::serialize() must return a string or NULL [pid 19586 on line 417 of "/usr/share/php5/PEAR/Horde/Session.php"]

Problem

Das Script /usr/bin/horde-alarms erzeugt Fehlermeldungen, da der Pfad zum $baseFile nicht gefunden wird und auch horde_dir nicht korrekt erkannt wird. Abhilfe durch direktes Setzen von $baseFile auf den richtigen Pfad:

//$baseFile = __DIR__ . '/../lib/Application.php';
$baseFile = '/pfad_zum_horde_rootdir/lib/Application.php';

Probleme

Authentifizierung

Login in Horde nicht möglich trotz erfolgreicher Authentifizierung gegen IMAP-Server. Syslog:

HORDE: [horde] Login success for xxx [1.2.3.4] to horde. [pid 12096 on line 161 of ".../login.php"]
HORDE: User is not authorized for horde [pid 12096 on line 274 of "/usr/share/php5/PEAR/Horde/Registry.php"]

Abhilfe: Setzen des "Cookie-Path" auf das Unterverzeichnis der Installation

$conf['cookie']['path'] = '/horde5';

Siehe auch:

PGP und S/MIME

Wenn man erstmalig PGP oder S/MIME aktiviert, muss man in den Einstellungen für zu erstellende Mails eine Standard-Verschlüsselungsmethode angeben. Sonst bleibt das Editor-Fenster leer.

Die Anhänge sollten beim Versenden gespeichert werden ("Anhänge mit gesendeten Nachrichten speichern?"), da sonst keine kompletten Daten zur Verfügung stehen, um versendete Mails zu entschlüsseln oder die Signatur zu prüfen.

Fix für gpg >= v2 (Zeile 78 in Datei: /usr/share/php5/PEAR/Horde/Crypt/Pgp/Backend/Binary.php bzw. /usr/share/php7/PEAR/Horde/Crypt/Pgp/Backend/Binary.php):

        $this->_gnupg = array(
            $gnupg,
            '--emit-version',
            '--no-tty',
            '--no-secmem-warning',
            '--no-options',
            '--no-default-keyring',
            '--yes',
            '--pinentry-mode loopback',
            '--homedir ' . $this->_tempdir
        );

PGP

Pro Account ist leider nur ein PGP-Schlüsselpaar möglich. Daher sollte man in PGP mehrere Identität dem PGP-Schlüsselpaar zuweisen. Dadurch ändern sich der Private und der Public Key.

PGP scheint mit GnuPG 2.1 nicht zu funktionieren [1].

S/MIME

Derzeit kein Import von eigenen Zertifikaten möglich.

*http://horde.690.n7.nabble.com/Importing-S-MIME-certificate-fails-td113456.html

  • Tabelle für PGP und S/MIME keys: horde_prefs
  • Nach Update auf openSUSE 13.1 ist das Benutzen von eigenen S/MIME-Zertifikaten problemlos möglich. Wahrscheinlich ist das neue update-ca-certificates Paket mit p11-kit als Backend für die korrekte Funktion verantwortlich [2].


Timezone

Probleme bei IPv6 konfiguriert aber keine Verbindung ins Internet.

[kronolith] Unable to locate the tz database. [pid 22351 on line 729 of "/srv/www/vhosts/mail.kruedewagen.de/kronolith/lib/Event.php"]

Weblinks:

Workaround:

  • Default IPv6 Route deaktivieren.

Migration

Migration von EGroupware

Eine Migration des Adressbuchs von EGroupware nach Horde 5 ist am besten mit einem CSV-Export und Import des kompletten Adressbuchs zu bewerkstelligen. Nach dem einfachen CSV-Export in EGroupware ist in Horde dazu in Schritt 1 die CSV-Datei zu wählen und anschließend sind in Schritt 2 ein paar Parameter anzugeben, die man aus dem Bild entnehmen kann.

Die Zuordnung der einzelnen Felder muss im nächsten Schritt manuell vorgenommen werden, was ein wenig Zeit und Konzentration erfordert. Dazu sollten man die CSV-Datei in einem Spreadsheet Programm wie LibreOffice öffnen, um zu sehen, welche Felder in EGroupware in welcher Weise benutzt wurden. Ein Import von mehr als 500 Adressen hat bei mir anstandslos geklappt.

Wichtig: Horde 5 unterstützt leider nur eine E-Mail Adresse pro Kontakt. Daher muss man bei der Migration entscheiden, ob man die private oder geschäftliche E-Mail Adresse aus EGroupware auf das E-Mail Feld in Horde importieren will. Die zweite E-Mail Adresse aus EGroupware kann man dann z.B. in eines der "Instant Messenger" Felder importieren. Kontakte mit mehreren E-Mail Adressen, die man als solche auch im Webmailer oder per CardDAV nutzen will, muss man anschließend mehrfach anlegen, wobei man ab der zweiten Instanz nur noch die gewünschte E-Mail Adresse eintragen muss (die man dann z.B. aus dem "Instant Messenger" Feld entnimmt).

Clients

Android

Tipps und Tricks

CalDAV

Einbinden der CalDAV Abonnements:

  • In KDE kann man die allgemeine Konto-Adresse verwenden, aus der sich der Client die entsprechenden serverseitigen URLs entnimmt.
  • In CalDAV-Sync für Android kann die allgemeine Konto-Adresse verwendet werden.
https://mydomain.de/rpc.php/calendars/myuser/
  • Oberste Adresse für CalDav und CardDav:
https://mydomain.de/rpc.php
  • In Thunderbird müssen Kalender und Aufgaben jeweils über die separate Adresse eingebunden werden.

Umgang mit Kalendern:

  • In Thunderbird scheint das Löschen von Benachrichtigungen nur zu klappen, wenn man die Benachrichtigungszeit auf "0 Minuten2 setzt.

Weblinks

Siehe auch