Horde
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
- http://www.horde.org/apps/webmail/docs/INSTALL
- Das Installationsverzeichnis wird interaktiv abgefragt.
- Beispiel:
# 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"]
Einstallungen:
conf.php conf.xml
Weblinks:
Workaround:
- Default IPv6 Route deaktivieren, sonst hängen TCP/FTP Verbindungen und PHP-FPM bekommt Probleme.
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
- CalDAV-Sync und CardDAV-Sync zur Synchronisation, Tasks für Aufgaben
- Siehe http://dmfs.org, Wiki
- Hinweis: Wenn unter Android die Erinnerung auf "0 Minuten" eingestellt wird, dann löscht Horde die Erinnerung.
- Siehe Bug mit BDAY Feld: http://bugs.horde.org/ticket/12782 , https://github.com/horde/horde/commit/4840a591ea959d2775640a7e16ee113209aac50c
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
- bugs.horde.org
- Mailing Lists
- http://dokuwiki.nausch.org/doku.php/centos:mail_c6:horde_2
- http://www.linux-magazin.de/NEWS/Groupware-Horde-in-Version-5.0.0-verfuegbar/%28language%29/ger-DE
- http://www.linux-magazin.de/Ausgaben/2012/08/Web-Groupware/%28offset%29/4