17887
Kommentar: Funktion zum Entfernen der IP aus dem Header der Mails
|
23597
php-fpm-konfigdatei
|
Gelöschter Text ist auf diese Art markiert. | Hinzugefügter Text ist auf diese Art markiert. |
Zeile 1: | Zeile 1: |
Diese Seite beschreibt die Installation und Einrichtung der [[http://horde.org|Horde]] Groupware unter [[https://debian.org|Debian]] wheezy. | Diese Seite beschreibt die Installation und Einrichtung der [[http://horde.org|Horde]] Groupware unter [[https://debian.org|Debian]] Jessie. |
Zeile 22: | Zeile 22: |
Horde ist erst ab in Debian jessie verfügbar. Insofern müssen in einem wheezy-System testing-Pakete installiert werden. Das geht am Besten mit apt-pinning. Die Anleitung dazu befindet sich im [[https://wiki.debian.org/Horde|Debian-Wiki]]. | Infos zur Horde-Installation sind im [[https://wiki.debian.org/Horde|Debian-Wiki]] zu finden. |
Zeile 87: | Zeile 87: |
Horde bietet einen eigenen Modus für Smartphones und Tablets. Dieser funktioniert aufgrund einer veralteten libjs-jquery-mobile nicht korrekt - das Layout scheint völlig css-los. Eine Aktualisierung der Bibliothek durch die Upstream-Version hilft hier weiter. Dazu einfach [[http://jquerymobile.com/| die aktuelle Version]] herunter laden und nach {{{/data/jquery-mobile}}} entpacken. Die Dateien tragen üblicherweise ihre Versionsnummer im Namen, bspw. {{{jquery.mobile-1.4.5.css}}}, diese muss bei jeder Datei aus dem Dateinamen entfernt werden. Nun noch einen Symlink setzen:{{{ mv /usr/share/javascript/jquery-mobile /usr/share/javascript/jquery-mobile.orig ln -s /data/jquery-mobile . }}} Das die Dateien von Speicherort des Debianpaketes aus verlinkt sind ({{{/usr/share/javascript}}}, ist wichtig, damit das Horde-interne Caching von .css- und .js-Dateien korrekt funktioniert. Wird Caching nicht benutzt, kann die Umleitung auf die neuen Dateien auf per Apache erfolgen<<FootNote(Horde holt sich bei aktiviertem Caching die Daten über das Dateisystem und beachtet den Alias dabei nicht)>>. Dazu müssen folgende Zeilen am Anfang von {{{/etc/apache/conf.d/php-horde.conf}}} eingefügt werden: |
Horde bietet einen eigenen Modus für Smartphones und Tablets. Dieser funktioniert aufgrund einer veralteten libjs-jquery-mobile nicht korrekt - das Layout scheint völlig css-los. Eine Aktualisierung der Dateien durch die Horde-Upstream-Version hilft hier weiter. Dazu einfach das komplette Verzeichnis {{{horde/framework/Core/js/jquery.mobile}}} aus dem [[https://github.com/horde/horde|Horde Github Repository]] in eine beliegibes Verzeichnis herunter laden (bspw. nach {{{/data/horde/js/jquery.mobile}}}). Nun das Verzeichnis der Debian-Version sichern und einen Symlink zum neuen Verzeichnis erstellen.:{{{ mv /usr/share/horde/js/jquery.mobile /usr/share/horde/js/jquery.mobile.orig ln -s /data/horde/js/jquery.mobile /usr/share/horde/js/ }}} Das die Dateien von Speicherort des Debianpaketes aus verlinkt sind, ist wichtig, damit das Horde-interne Caching von .css- und .js-Dateien korrekt funktioniert. Anschließend den Cache löschen:{{{ rm /var/cache/horde/static/* }}} Wird Caching nicht benutzt, kann die Umleitung auf die neuen Dateien auch per Apache erfolgen<<FootNote(Horde holt sich bei aktiviertem Caching die Daten über das Dateisystem und beachtet den Alias dabei nicht)>>. Dazu müssen folgende Zeilen am Anfang von {{{/etc/apache/conf.d/php-horde.conf}}} eingefügt werden: |
Zeile 100: | Zeile 104: |
Alias /horde/js/jquery.mobile/jquery.mobile.js /data/jquery-mobile/jquery.mobile.js Alias /horde/js/jquery.mobile/jquery.mobile.min.css /data/jquery-mobile/jquery.mobile.min.css Alias /horde/js/jquery.mobile/jquery.mobile.min.js /data/jquery-mobile/jquery.mobile.min.js Alias /horde/js/jquery.mobile/images/ /data/jquery-mobile/images/ |
Alias /horde/js/jquery.mobile/jquery.mobile.js /data/horde/js/jquery.mobile/jquery.mobile.js Alias /horde/js/jquery.mobile/jquery.mobile.min.css /data/horde/js/jquery.mobile/jquery.mobile.min.css Alias /horde/js/jquery.mobile/jquery.mobile.min.js /data/horde/js/jquery.mobile/jquery.mobile.min.js Alias /horde/js/jquery.mobile/images/ /data/horde/js/jquery.mobile/images/ |
Zeile 107: | Zeile 111: |
Eine weitere Einstellung, damit es beim Upload von großen Mailattachments nicht zu einem session-timeout kommt: Anpassen von {{{/etc/php5/conf.d/php.ini}}}: | Eine weitere Einstellung, damit es beim Upload von großen Mailattachments nicht zu einem session-timeout kommt: Anpassen von {{{/etc/php5/apache/php.ini}}} bzw. in {{{//etc/php5/fpm/php.ini}}} bei Verwendung von [[#phpfpm|PHP-FPM]]: |
Zeile 114: | Zeile 118: |
Außerdem sollte die Standard-Zeitzone für php festgelegt werden, da Horde sich den Wert holt. Ansonsten kann es bspw. zu unterschiedlichen Darstellungen der Zeit im Kalender kommen, wenn Events mit einem externen Programm angelegt werden. Dazu wieder {{{/etc/php5/conf.d/php.ini}}} bearbeiten und folgende Zeile hinzufügen: | Außerdem sollte die Standard-Zeitzone für php festgelegt werden, da Horde sich den Wert holt. Ansonsten kann es bspw. zu unterschiedlichen Darstellungen der Zeit im Kalender kommen, wenn Events mit einem externen Programm angelegt werden. Dazu wieder {{{/etc/php5/apache/php.ini}}} bearbeiten und folgende Zeile hinzufügen: |
Zeile 120: | Zeile 124: |
<<Anchor(phpfpm)>> == PHP-FPM == [[http://php-fpm.org/|PHP-FPM]] ist ein weiterer PHP-Interpreter, der Horde möglicherweise beschleunigt. Die Installation und Einrichtung sind hier ganz gut beschrieben: [[http://www.queryadmin.com/506/apache2-php5-fpm-fastcgi-apc-debian-wheezy/|Link 1]] und [[http://www.sysadminslife.com/linux/howto-apache-mit-php-fpm-und-mod-fastcgi-unter-debian-wheezy/|Link 2]]. Zuerst die notwendigen Pakete installieren:{{{ apt-get install apache2-mpm-worker libapache2-mod-fastcgi php5-fpm php-apc}}} Anschließend die entsprechenden Apache-Module aktivieren:{{{ a2enmod actions alias fastcgi rewrite}}} Die Konfiguration von PHP-FPM liegt unter {{{/etc/php5/fpm/pool.d/www.conf}}} unf ist nach der Installation schon ganz brauchbar. In die Horde-Apache-Konfiguration muss nun noch folgendes eingefügt werden:{{{ # Configure all that stuff needed for using PHP-FPM as FastCGI # Set handlers for PHP files. # application/x-httpd-php phtml pht php # application/x-httpd-php3 php3 # application/x-httpd-php4 php4 # application/x-httpd-php5 php <FilesMatch ".+\.ph(p[345]?|t|tml)$"> SetHandler application/x-httpd-php </FilesMatch> # application/x-httpd-php-source phps <FilesMatch ".+\.phps$"> SetHandler application/x-httpd-php-source # Deny access to raw php sources by default # To re-enable it's recommended to enable access to the files # only in specific virtual host or directory Require all denied </FilesMatch> # Deny access to files without filename (e.g. '.php') <FilesMatch "^\.ph(p[345]?|t|tml|ps)$"> Require all denied </FilesMatch> # Define Action and Alias needed for FastCGI external server. Action application/x-httpd-php /fcgi-bin/php5-fpm virtual Alias /fcgi-bin/php5-fpm /fcgi-bin-php5-fpm <Location /fcgi-bin/php5-fpm> # here we prevent direct access to this Location url, # env=REDIRECT_STATUS will let us use this fcgi-bin url # only after an internal redirect (by Action upper) Require all denied Require env REDIRECT_STATUS </Location> }}} Außerhalb des Apache-VirtualHost-Abschnittes muss noch folgende Zeile eingefügt werden:{{{ FastCgiExternalServer /fcgi-bin-php5-fpm -socket /var/run/php5-fpm.sock -pass-header Authorization }}} |
|
Zeile 144: | Zeile 201: |
$ldapServer = 'ldap.sao'; | $ldapServer = 'Adresse_deines_LDAP_Servers'; $ldapPort = '389'; |
Zeile 204: | Zeile 262: |
$this->applications['sao-password'] = | $this->applications['mein_link'] = |
Zeile 223: | Zeile 281: |
<<Anchor(ckeditor)>> == Grafischen Editor einrichten == Horde benötigt ckeditor3, eine ältere Version, welche in Debian nicht enthalten ist. Deshalb können keine html-Mails erstellt werden. Zudem funktioniert die [[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=782537|Adressvervollständigung]] nicht. Letzteres kann durch das Setzen eines Symlinks behoben werden:{{{ ln -s /usr/share/javascript/ckeditor/core /usr/share/horde/imp/core }}} |
|
Zeile 231: | Zeile 295: |
=== memcached einrichten === [[http://memcached.org|Memcached]] Cache-Server zum Hinterlegen und Abholen von Daten aus dem Arbeitsspeicher. Die Nutzung von Horde kann dadurch beschleunigt werden. Zur Installation sind folgende Pakete notwendig:{{{ apt-get install memcached php5-memcache php-horde-memcache }}} Der memcached-Server wird per {{{/etc/memcached.conf}}} eingerichtet. Die Standardeinstellungen können erstmal verwendet werden. Anschließend muss Horde in der Admin-Oberfläche unter ''Administration --> Konfiguration --> Horde --> Distributed Hash Table '' eingerichtet werden. Dort kann unter ''$conf[hashtable][driver]'' der ''Memcache Server'' ausgewählt und mit den notwendigen Port-Angaben eingerichtet werden. Die Konfigurationsdatei {{{/etc/horde/horde/conf.php}}} sollte anschließend in etwa so aussehen:{{{ $conf['hashtable']['params']['hostspec'] = array('localhost'); $conf['hashtable']['params']['port'] = array('11211'); $conf['hashtable']['params']['weight'] = array(); $conf['hashtable']['params']['persistent'] = false; $conf['hashtable']['params']['compression'] = false; $conf['hashtable']['params']['large_items'] = true; $conf['hashtable']['driver'] = 'Memcache'; }}} Zu beachten ist noch, dass ''$conf['sessionhandler']['hashtable'] = false'' gesetzt ist - [[http://horde.690.n7.nabble.com/Using-Memcache-with-the-new-Horde-HashTable-tp110699p110700.html|siehe]]. Der Status des Servers lässt sich wie folgt ermitteln:{{{ $ echo stats | nc 127.0.0.1 11211 }}} Was die einzelnen Angaben bedeuten, ist [[http://www.debianroot.de/server/memcached-auf-debian-lennysqueeze-installieren-1265.html|hier]] recht gut beschrieben. |
|
Zeile 237: | Zeile 326: |
$received = 'from 127.0.0.1 ('; $received .= 'localhost [127.0.0.1]) '; |
$received = 'from 127.0.0.1 ' . '(localhost [127.0.0.1]); ' . date('r'); |
Zeile 242: | Zeile 332: |
<<Anchor(ckeditor)>> == Grafischer Editor für HTML-Mails == Zwar sollten E-Mails generell im Text-Modus geschrieben werden, doch bietet Horde auch die Möglichkeit HTML-Mails zu verfassen. Da die dazu notwendige und in Debian enthaltene [[DebianPackage:php-horde-editor|ckeditor]]-Version 4 nicht kompatibel mit Horde ist (benötigt wird Version 3), muss der ckeditor durch die Version aus dem [[https://github.com/horde/horde|Horde-Git-Repository]] ersetzt werden. Das Git-Verzeichnis {{{horde/framework/Editor/js/ckeditor}}} wird dazu an einem beliebigen Ort gespeichert - bspw. {{{/data/horde/js}}}. Anschließend das Verzeichnis der Debian-Installation sichern und einen Symlink zum Verzeichnis der Git-Version erstellen:{{{ mv /usr/share/horde/js/ckeditor /usr/share/horde/js/ckeditor.orig ln -s /data/horde/js/ckeditor /usr/share/horde/js/ckeditor }}} = Verwaltung = == Account löschen == Horde speichert diverse Nutzerdaten in der eigenen (mysql)Datenbank. Wird ein Account entfernt, sollten die Daten aus der Datenbank gelöscht werden{{{ horde-remove-user-data USERNAME }}} |
|
Zeile 243: | Zeile 351: |
Zeile 246: | Zeile 355: |
* Erst durch [[https://github.com/horde/horde/blob/bf2a8aa9b3d2e44bfcd65b64700c334aae7d902e/framework/Crypt/lib/Horde/Crypt/Pgp.php|diesen]] commit zeigt Horde GPG-Fingerprints an. Nach einem Debian-Update von [[https://packages.debian.org/jessie/php-horde-crypt|php-horde-crypt]] sollte die aktualisierte Datei durch die Git-Version ersetzt werden:{{{ mv /usr/share/php/Horde/Crypt/Pgp.php /usr/share/php/Horde/Crypt/Pgp.php.orig cp /data/horde/Pgp.php /usr/share/php/Horde/Crypt/Pgp.php}}} |
* Erst durch [[https://github.com/horde/horde/blob/bf2a8aa9b3d2e44bfcd65b64700c334aae7d902e/framework/Crypt/lib/Horde/Crypt/Pgp.php|diesen]] commit zeigt Horde GPG-Fingerprints an. Nach einem Debian-Update von [[https://packages.debian.org/jessie/php-horde-crypt|php-horde-crypt]] sollte die aktualisierte Datei<<FootNote(/usr/share/php/Horde/Crypt/Pgp.php)>> durch die Git-Version ersetzt werden * {X} Gelegentlich können Kalender aufgund eines sql-Fehlers nicht benuzt werden. Näheres zur Fehlermeldung findet sich im [[https://bugs.horde.org/ticket/13934|Bugreport]]. Der [[https://github.com/horde/horde/commit/0e9a737b83f1742057429e9d5ca438dcb745bec3|Fix]] ist recht trivial und muss auf die Datei {{{/usr/share/php/Horde/Prefs/Storage/Base.php}}} angewandt werden. |
Zeile 252: | Zeile 360: |
= Fussnoten, Links = | = Fussnoten, Hinweise und Links = |
Zeile 256: | Zeile 364: |
* [[http://www.inmotionhosting.com/support/email/horde-webmail/using-horde-mail-templates|Vorlagen erstellt - praktisch für systemausfall.org-Willkommenmails]] | * [[http://www.inmotionhosting.com/support/email/horde-webmail/using-horde-mail-templates|Vorlagen erstellt]] |
Zeile 259: | Zeile 367: |
* [[http://www.queryadmin.com/506/apache2-php5-fpm-fastcgi-apc-debian-wheezy/|php-fpm Anleitung 1]] * [[http://www.mail-archive.com/mod-fcgid-users@lists.sourceforge.net/msg00222.html|mod_cgi vs. mod_fcgid]] * [[http://www.sysadminslife.com/linux/howto-apache-mit-php-fpm-und-mod-fastcgi-unter-debian-wheezy/|php-fpm Anleitung 2]] * [[http://www.df.eu/de/service/df-faq/cloudserver/anleitungen/horde-groupware-webmail-edition-installieren/|Horde memcache]] |
|
Zeile 264: | Zeile 368: |
* Falls es zu sql-Fehlern kommt: Nutzerdaten können aus der Datenbank mit dem Skript {{{horde-remove-user-data}}} gelöscht werden |
Diese Seite beschreibt die Installation und Einrichtung der Horde Groupware unter Debian Jessie.
Inhaltsverzeichnis
- Installation
-
Einrichtung
- Allgemeines
- Webserver
- Mobile-Modus
- PHP-Einstellungen
- PHP-FPM
- Standard-Identität mit ldap-Mailkonto verknüpfen
- Adressbuch erstellen
- Webmail als Start-Applikation
- Verschlüsselungsfunktionen einrichten
- Eigene Menüeinträge
- Login-Namen konvertieren
- Anmeldeaufgaben automatisch ausführen lassen
- Grafischen Editor einrichten
- Weitere Einstellungen im Überblick
- Geschwindigkeit optimieren
- Privatspähre erhöhen
- Grafischer Editor für HTML-Mails
- Verwaltung
- Fehler
- Fussnoten, Hinweise und Links
Installation
Datenbank einrichten
Zuerst muss eine Datenbank angelegt werden - in diesem Beispiel ist es eine Postgres-Datenbank:
zum Postgres-Nuzter wechseln und Postgres-Client aufrufen:
su postgres psql
Nutzer für Horde-Datenbank anlegen
create user horde with password '$PASSWORD';
Datenbank für Horde anlegen
create database horde with owner horde encoding 'utf8';
- Datenbank-Client beenden
Minimal-Installation
Infos zur Horde-Installation sind im Debian-Wiki zu finden.
Da unsere ersten Erfahrungen mit Horde nicht so positiv waren (kaputte Installation nach ersten Minor-Update), sollen erstmal so wenig Horde-Pakete wie möglich installiert werden. Ausgangsbasis für die Installation ist horde-webmail. Das bringt ein paar Pakete mit, die wir nicht benötigen - die werden später einfach deinstalliert.
apt-get install php-horde-webmail --no-install-recommends
Anschließend das Skript webmail-install im Terminal aurufen und alle Schritte durchgehen. Damit es beim Anlegen der Datenbank keine Fehlermeldung gibt1, muss das Paket php5-pgsql vorher installiert werden. Soll eine lokale postgres-Datenbank benutzt werden, muss als Verbindungsart 2 tcp mit 127.0.0.1 ausgewählt werden, da andernfalls ein lokal existierender Nutzer erwartet wird.
Installation bereinigen
Soll Horde nur als Webmailer eingesetzt werden, reicht es imp und turba zu behalten. Alle weiteren Applikationen können entfernt werden - zumindest aber diese:
apt-get remove --purge php-horde-kronolith php-horde-mnemo php-horde-nag php-horde-trean php-horde-gollem
Damit das Portal nur Blöcke von installierten Apllikationen anzeigt, muss es noch entsprechend angepasst werden. Dazu in der Weboberfläche Administration --> Konfiguration --> Portal Blocks und dort die Blöcke unter $conf[portal][fixed_blocks] festlegen.
Installation erweitern
Sofern Horde-Webmail den möglichst vollen Funktionsumfang erhalten soll, sind noch folgende Pakete zu installieren:
apt-get install php-horde-lz4 php5-ssh2 libjs-excanvas libimage-exiftool-perl
Horde-Pakete, die nicht in Debian enthalten sind, können über den entsprechenden Pear-Channel bezogen werden. Da eine Vermischung von Debian- mit Pear-Paketen nicht ratsam ist, kann debpear installiert werden. Dadurch erhalten wir die Möglichkeit, Pear-Pakete herunter zu laden und aus ihnen automatisch ein Debian-Paket erstellen zu lassen.
Rechte festlegen
Die Konfigurationsdateien liegen unter etc/horde. Die Rechte für dieses Verzeichnis und für die Konfigurationsdateien der einzelnen Anwendungen sollten noch angepasst werden:
chmod -R o-rwx /etc/horde chown -R :www-data /etc/horde/ chown www-data:www-data /etc/horde/$APP/conf.php
Installation testen
Horde bringt ein Testscript mit, das zahlreiche Informationen über die Installation liefert. Dazu in /etc/horde/horde/conf.php bearbeiten und $conf[testdisable] auf false setzen3. Nun sind die Informationen unter http://$DOMAIN/horde/test.php erreichbar.
Einrichtung
Damit die Ersteinrichtung über das Webinterface funktioniert, muss ein Admin-Nutzer festgelegt werden. Dazu die folgenden Einträge zu /etc/horde/horde/conf.php4 hinzufügen:
$conf['auth']['admins'] = array('your_admin_user'); $conf['auth']['driver'] = 'auto'; $conf['auth']['params']['username'] = 'your_admin_user'; $conf['auth']['params']['password'] = 'your_password';
Allgemeines
Als Admins berechtigte User können umfangreiche Einstellungen direkt nach Anmeldung in Horde vornehmen. Horde schreibt die Änderungen in die entsprechende Konfigdateien. Diese sollten dann aber nicht im Terminal bearbeitet werden, da durch Änderungen im Webinterface die Dateien überschrieben werden.
Um dennoch Änderungen direkt in den Konfigdateien zu ermöglichen, müssen diese als $Dateiname.local.php gespeichert werden. Die .local.php-Dateien sollten nur die geänderten strings enthalten, mehr nicht.
In den entsprechenden Dateien kann festgelegt werden, dass die entsprechende Option in der Weboberfläche nicht änderbar ist. Bsp: $_prefs['from_addr']['locked'] = true;.
Individuelle Nutzereinstellungen speichert Horde im Backend. Werden neue globale Einstellungen eingeführt, müssen die alten Nutzereinstellungen gelöscht werden. Dies geht mit dem entsprechenden sql-Befehl:
DELETE FROM horde_prefs WHERE pref_scope = '<application_name>' AND pref_name = '<preference_name>'
Webserver
Die Apache-Konfigurationsdatei für Horde kann in der default-Version erstmal genutzt werden. Wenn allerdings einige Horde-Links 404-Fehler erzeugen, bspw. beim Speichern von Tasks The requested URL /horde5/nag/t/save was not found on this server muss "mod rewrite" aktiviert werden:
a2enmod rewrite
Mobile-Modus
Horde bietet einen eigenen Modus für Smartphones und Tablets. Dieser funktioniert aufgrund einer veralteten libjs-jquery-mobile nicht korrekt - das Layout scheint völlig css-los. Eine Aktualisierung der Dateien durch die Horde-Upstream-Version hilft hier weiter. Dazu einfach das komplette Verzeichnis horde/framework/Core/js/jquery.mobile aus dem Horde Github Repository in eine beliegibes Verzeichnis herunter laden (bspw. nach /data/horde/js/jquery.mobile).
Nun das Verzeichnis der Debian-Version sichern und einen Symlink zum neuen Verzeichnis erstellen.:
mv /usr/share/horde/js/jquery.mobile /usr/share/horde/js/jquery.mobile.orig ln -s /data/horde/js/jquery.mobile /usr/share/horde/js/
Das die Dateien von Speicherort des Debianpaketes aus verlinkt sind, ist wichtig, damit das Horde-interne Caching von .css- und .js-Dateien korrekt funktioniert.
Anschließend den Cache löschen:
rm /var/cache/horde/static/*
Wird Caching nicht benutzt, kann die Umleitung auf die neuen Dateien auch per Apache erfolgen5. Dazu müssen folgende Zeilen am Anfang von /etc/apache/conf.d/php-horde.conf eingefügt werden:
# Anfragen an veraltete jquery-mobile-Version umleiten Alias /horde/js/jquery.mobile/jquery.mobile.js /data/horde/js/jquery.mobile/jquery.mobile.js Alias /horde/js/jquery.mobile/jquery.mobile.min.css /data/horde/js/jquery.mobile/jquery.mobile.min.css Alias /horde/js/jquery.mobile/jquery.mobile.min.js /data/horde/js/jquery.mobile/jquery.mobile.min.js Alias /horde/js/jquery.mobile/images/ /data/horde/js/jquery.mobile/images/
PHP-Einstellungen
Eine weitere Einstellung, damit es beim Upload von großen Mailattachments nicht zu einem session-timeout kommt: Anpassen von /etc/php5/apache/php.ini bzw. in //etc/php5/fpm/php.ini bei Verwendung von PHP-FPM:
upload_max_filesize = 30M post_max_size = 30M memory_limit = 192M
Außerdem sollte die Standard-Zeitzone für php festgelegt werden, da Horde sich den Wert holt. Ansonsten kann es bspw. zu unterschiedlichen Darstellungen der Zeit im Kalender kommen, wenn Events mit einem externen Programm angelegt werden. Dazu wieder /etc/php5/apache/php.ini bearbeiten und folgende Zeile hinzufügen:
date.timezone = Europe/Berlin
Die Installationshinweise beschreiben die Konfiguration der php Garbage Collection. Bei Debian läuft das anders - kann also ignoriert werden.
PHP-FPM
PHP-FPM ist ein weiterer PHP-Interpreter, der Horde möglicherweise beschleunigt. Die Installation und Einrichtung sind hier ganz gut beschrieben: Link 1 und Link 2.
Zuerst die notwendigen Pakete installieren:
apt-get install apache2-mpm-worker libapache2-mod-fastcgi php5-fpm php-apc
Anschließend die entsprechenden Apache-Module aktivieren:
a2enmod actions alias fastcgi rewrite
Die Konfiguration von PHP-FPM liegt unter /etc/php5/fpm/pool.d/www.conf unf ist nach der Installation schon ganz brauchbar. In die Horde-Apache-Konfiguration muss nun noch folgendes eingefügt werden:
# Configure all that stuff needed for using PHP-FPM as FastCGI # Set handlers for PHP files. # application/x-httpd-php phtml pht php # application/x-httpd-php3 php3 # application/x-httpd-php4 php4 # application/x-httpd-php5 php <FilesMatch ".+\.ph(p[345]?|t|tml)$"> SetHandler application/x-httpd-php </FilesMatch> # application/x-httpd-php-source phps <FilesMatch ".+\.phps$"> SetHandler application/x-httpd-php-source # Deny access to raw php sources by default # To re-enable it's recommended to enable access to the files # only in specific virtual host or directory Require all denied </FilesMatch> # Deny access to files without filename (e.g. '.php') <FilesMatch "^\.ph(p[345]?|t|tml|ps)$"> Require all denied </FilesMatch> # Define Action and Alias needed for FastCGI external server. Action application/x-httpd-php /fcgi-bin/php5-fpm virtual Alias /fcgi-bin/php5-fpm /fcgi-bin-php5-fpm <Location /fcgi-bin/php5-fpm> # here we prevent direct access to this Location url, # env=REDIRECT_STATUS will let us use this fcgi-bin url # only after an internal redirect (by Action upper) Require all denied Require env REDIRECT_STATUS </Location>
Außerhalb des Apache-VirtualHost-Abschnittes muss noch folgende Zeile eingefügt werden:
FastCgiExternalServer /fcgi-bin-php5-fpm -socket /var/run/php5-fpm.sock -pass-header Authorization
Standard-Identität mit ldap-Mailkonto verknüpfen
Wir wollen, dass die mit den jeweiligen Anmeldedaten verbundene Mailadresse automatisch zur Standardidentität hinzugefügt wird 6. Dazu müssen wir Horde mitteilen, dass es aus der ldap-Datenbank die entsprechende Mailadresse heraus suchen soll.
Dazu /etc/horde/horde/prefs.local.php bearbeiten:
$_prefs['from_addr']['locked'] = false; $_prefs['from_addr']['hook'] = true;
Insbesondere für User mit anderen mehreren Maildomains ist es wichtig, dass $_prefs['from_addr']['locked'] = false; gesetzt ist, andernfalls können sie keine weiteren Mail-Adressen in Horde konfigurieren. $conf['user']['verify_from_addr'] = true; sollte in /etc/horde/horde/conf.local.php oder über das Webinterface aktiviert sein.
Anschließend kommt in /etc/horde/horde/hooks.php der eigentliche Code - die $searchBase ist hier nur beispielhaft aufgeführt und muss entsprechend angepasst werden:
// // PREFERENCES INIT: See above for documentation. public function prefs_init($pref, $value, $username, $scope_ob) { switch ($pref) { case 'from_addr': if (is_null($username)) { return $value; } $ldapServer = 'Adresse_deines_LDAP_Servers'; $ldapPort = '389'; $searchBase = 'sc=mailAccount,ou=People,o=server,dc=example,dc=org'; $ds = @ldap_connect($ldapServer, $ldapPort); // // You will probably need to replace cn= with uid=; this syntax // // is for Netware 5.1 nldap. $searchResult = @ldap_search($ds, $searchBase, 'cn=' . $username); $information = @ldap_get_entries($ds, $searchResult); if (($information === false) || ($information['count'] == 0)) { $user = ''; } else { $user = ($information[0]['mail'][0] != '') ? $information[0]['mail'][0] : $information[0]['cn'][0]; } ldap_close($ds); return empty($user) ? $username : $user;
Adressbuch erstellen
In der Grundkonfiguration gibt es kein persönliches Adressbuch. Ohne Adressbuch lassen sich keine öffentlichen GPG-Schlüssel importieren. Um hier eine Fehlerquelle auszuschließen, legen wir fest, dass ein Standardadressbuch beim ersten Login erstellt wird.
Dazu in der Admin-Weboberfläche unter Administration --> Horde --> Shares die Option $conf[share][auto_create] aktivieren. Um gleichzeitig die Benutzung einzuschränken an selber Stelle $conf[share][no_sharing] aktivieren.
Bei der ersten Einrichtung von Horde kam es vor, dass die GPG-Schlüsselverwaltung nicht verfügbar war, weil in IMP kein Adressbuch als Standard ausgewählt wurde. Um dies automatisch nachzuholen, /etc/horde/imp/prefs.local.php bearbeiten:
$_prefs['add_source']['value'] = 'localsql';
Webmail als Start-Applikation
Normalerweise landet man nach dem Login im Portal. Da wir Horde als reinen Webmailer einsetzen wollen, ist es sinnvoll, direkt in der Mailapplikation zu landen. Einrichtung in /etc/horde/horde/prefs.local.php, den entsprechenden Eintrag suchen und von horde in imp ändern:
$_prefs['initial_application']['value'] = 'imp';
Verschlüsselungsfunktionen einrichten
Die GPG-Schlüssel speichert Horde leider nicht auf Dateiebene, sondern verküpft mit den Adresse in turba in der Datenbank.
Im Webinterface sollte die Schlüssellänge auf 4096 geändert werden. Damit die Schlüsselerstellung nicht ewig dauert, weil auf dem Server nicht genug Zufallsdaten erzeugt werden:
apt-get install haveged
In der Grundkonfiguration erkennt Horde/IMP keine inline-verschlüsselten Mails. Folglich ist auch kein Entschlüsseln möglich. Die früher nutzerbasierte Einstellung kann mittlerweile nur noch zentral vorgenommen werden. Dazu muss /etc/horde/imp/mime_drivers.local.php erstellt und bearbeitet werden:
<?php $mime_drivers['plain']['pgp_inline'] = true;
Eigene Menüeinträge
Man kann das Applikationsmenü um eigene Einträge ergänzen. Dazu am besten eine php-Datei in /etc/horde/horde/registry.d anlegen:
<?php header('Content-Type: text/html; charset=UTF-8'); $this->applications['mein_link'] = array('name' => 'Mein Link', 'status' => 'link', 'url' => 'https://example.com/mein_link', 'menu_parent' => 'others', 'target' => '_new');
Login-Namen konvertieren
Hordes backend ist unterscheidet Loginnamen nach Groß- und Kleinschreibung. Meldet sich jemand mit seinem sao-Account an und schreibt dabei den ersten Buchstaben groß, werden andere Adressbücher, Notizen und Aufgaben angezeigt, als bei einem komplett klein geschriebenen Loginnamen. Das Backend geht in diesem Fall von unterschiedlichen Accounts aus. Um hier keine Verwirrung zu stiften, weisen wir Horde an, die Loginnamen in Kleinbuchstaben zu konvertieren. Dazu muss /etc/horde/horde/hooks.php bearbeitet werden - der entsprechende hooks ist bereits vorhanden. Es müssen nur die Kommentarzeichen entfernt werden:
public function authusername($userId, $toHorde) { return $toHorde ? Horde_String::lower($userId) : $userId; }
Anmeldeaufgaben automatisch ausführen lassen
Es gibt keine zentrale Einstellung für die Anmeldeaufgaben. Damit die Hinweismeldungen nach dem Einloggen nicht mehr erscheinen, muss die jeweilige Aufgabe in der entsprechenden Konfigurationsdatei den Status "locked" erhalten.
Grafischen Editor einrichten
Horde benötigt ckeditor3, eine ältere Version, welche in Debian nicht enthalten ist. Deshalb können keine html-Mails erstellt werden. Zudem funktioniert die Adressvervollständigung nicht. Letzteres kann durch das Setzen eines Symlinks behoben werden:
ln -s /usr/share/javascript/ckeditor/core /usr/share/horde/imp/core
Weitere Einstellungen im Überblick
Einstellung |
Datei |
Code |
Einstellungen zu vergessenen Passworten ausblenden |
/etc/horde/horde/prefs.local.php |
$prefGroups['forgotpass']['suppress'] = true; |
Papierkorb aktivieren und regelmäßig leeren |
/etc/horde/imp/prefs.local.php |
$_prefs['use_trash']['value'] = '1'; |
Geschwindigkeit optimieren
In der Horde-Konfiguration sollten die empfohlenen Caching-Einstellungen aktiviert werden. Wenn javascript- und css-Caching aktiviert wird, muss jquery-mobile in einer aktualisierten Version vorliegen.
memcached einrichten
Memcached Cache-Server zum Hinterlegen und Abholen von Daten aus dem Arbeitsspeicher. Die Nutzung von Horde kann dadurch beschleunigt werden. Zur Installation sind folgende Pakete notwendig:
apt-get install memcached php5-memcache php-horde-memcache
Der memcached-Server wird per /etc/memcached.conf eingerichtet. Die Standardeinstellungen können erstmal verwendet werden.
Anschließend muss Horde in der Admin-Oberfläche unter Administration --> Konfiguration --> Horde --> Distributed Hash Table eingerichtet werden. Dort kann unter $conf[hashtable][driver] der Memcache Server ausgewählt und mit den notwendigen Port-Angaben eingerichtet werden. Die Konfigurationsdatei /etc/horde/horde/conf.php sollte anschließend in etwa so aussehen:
$conf['hashtable']['params']['hostspec'] = array('localhost'); $conf['hashtable']['params']['port'] = array('11211'); $conf['hashtable']['params']['weight'] = array(); $conf['hashtable']['params']['persistent'] = false; $conf['hashtable']['params']['compression'] = false; $conf['hashtable']['params']['large_items'] = true; $conf['hashtable']['driver'] = 'Memcache';
Zu beachten ist noch, dass $conf['sessionhandler']['hashtable'] = false gesetzt ist - siehe.
Der Status des Servers lässt sich wie folgt ermitteln:
$ echo stats | nc 127.0.0.1 11211
Was die einzelnen Angaben bedeuten, ist hier recht gut beschrieben.
Privatspähre erhöhen
Jeder ausgehenden Mail fügt Horde einen Header-Eintrag mit der aktuellen IP-Adresse hinzu, die die Horde-Session gestartet hat. Diese unnötige Funktion lässt sich einfach entfernen. Dazu muss die Datei /usr/share/php/Horde/Mime/Headers.php bearbeitet werden. Dort gibt es eine Funtkion names public function addReceivedHeader(array $opts = array()) - diese wird so geändert, dass sie immer die localhost-Adresse einfügt - am Ende sieht sie dann so aus:
public function addReceivedHeader(array $opts = array()) { $received = 'from 127.0.0.1 ' . '(localhost [127.0.0.1]); ' . date('r'); $this->addHeader('Received', $received); }
Grafischer Editor für HTML-Mails
Zwar sollten E-Mails generell im Text-Modus geschrieben werden, doch bietet Horde auch die Möglichkeit HTML-Mails zu verfassen. Da die dazu notwendige und in Debian enthaltene ckeditor-Version 4 nicht kompatibel mit Horde ist (benötigt wird Version 3), muss der ckeditor durch die Version aus dem Horde-Git-Repository ersetzt werden.
Das Git-Verzeichnis horde/framework/Editor/js/ckeditor wird dazu an einem beliebigen Ort gespeichert - bspw. /data/horde/js. Anschließend das Verzeichnis der Debian-Installation sichern und einen Symlink zum Verzeichnis der Git-Version erstellen:
mv /usr/share/horde/js/ckeditor /usr/share/horde/js/ckeditor.orig ln -s /data/horde/js/ckeditor /usr/share/horde/js/ckeditor
Verwaltung
Account löschen
Horde speichert diverse Nutzerdaten in der eigenen (mysql)Datenbank. Wird ein Account entfernt, sollten die Daten aus der Datenbank gelöscht werden
horde-remove-user-data USERNAME
Fehler
Horde kommt nicht mit Schlüsseldateien klar, die keine Trenner zwischen den einzelnen keys enthalten
- workaround: alle Kontakte aus dem Adressbuch löschen und Schlüssel mit einer grafischen Oberfläche exportieren (bspw. seahorse)
Erst durch diesen commit zeigt Horde GPG-Fingerprints an. Nach einem Debian-Update von php-horde-crypt sollte die aktualisierte Datei7 durch die Git-Version ersetzt werden
Gelegentlich können Kalender aufgund eines sql-Fehlers nicht benuzt werden. Näheres zur Fehlermeldung findet sich im Bugreport. Der Fix ist recht trivial und muss auf die Datei /usr/share/php/Horde/Prefs/Storage/Base.php angewandt werden.
Fussnoten, Hinweise und Links
Falls es zu sql-Fehlern kommt: Nutzerdaten können aus der Datenbank mit dem Skript horde-remove-user-data gelöscht werden
Fehlermeldung: Could not instantiate PDO. PDOException: could not find driver (1)
How should we connect to the database? (2)
Nach dem Testen unbedingt wieder deaktivieren (3)
Normalerweise werden Änderungen in $DATEI.local.php geschrieben - für diese einmalige Änderung ist das direkte Bearbeiten in Ordnung (4)
Horde holt sich bei aktiviertem Caching die Daten über das Dateisystem und beachtet den Alias dabei nicht (5)
andernfalls können die Nutzer*innen in der Grundkonfiguration keine Mails versenden (6)
/usr/share/php/Horde/Crypt/Pgp.php (7)