Mailmanagement mit osTicket

Seit langem nervt es mich, dass ich keine klare Trennung zwischen der Bearbeitung von E-Mails und sonstigen Aufgaben  hinbekomme. Mir schreiben viele Menschen E-Mails: Meine Kolleginnen und Kollegen bei Problemen mit unserer Schulserverlösung, Menschen, mit denen ich im Rahmen der Medienberatung zu tun habe. Oft geht es dabei um Terminvereinbarungen, technische Probleme, Erstellung von Ausstattungsvorschlägen, also klassische Themen, die man dem „Supportbereich“ zuordnen kann. Da geht viel durcheinander, sodass ich das eine oder andere auch schon einmal vergesse. Zum Glück gibt es ein Stück Technik, welches genau für diese Anforderung erschaffen wurde, denn Firmen haben im Support genau die gleichen Herausforderungen: Das Ticketsystem. Ich setze dafür das kostenlose Opensource-System  osTicket ein (hier gibt es eine Demo – Login: demo / Passwort: anmelden ).

logo

osTicket sollte auf fast jedem Webspace problemlos laufen, der folgende Bedingungen erfüllt:

  • MySQL-Unterstützung
  • PHP ab Version 5.3
  • PHP IMAP – Modul
  • imap-fähiger E-Mailaccount mit der Berechtigung, eigene Ordner anzulegen

Was ändert sich?

osTicket macht eigentlich technisch genau das, was ein beliebiges E-Mailprogramm wie Outlook oder Thunderbird tut: Es holt die Mails eines Kontos per imap ab, schreibt diese jedoch in eine Datenbank. Jede neue Mail erhält eine Ticket-ID, die automatisch mit in die Subject-Zeile geschrieben wird, wenn ich jemandem antworte. Antwortet mir mein Gegenüber auf diese Mail, erkennt osTicket anhand der Ticket-ID, zu welchem Kommunikationsvorgang die Antwort gehört und weist diesen automatisch zu. Ein Kommunikationsvorgang heißt „Ticket“. Das ist erstmal alles.

Hä? Und wo ist da jetzt der Unterschied zu vorher?

Bleibt ein Ticket zu lange liegen (bei mir sind es drei Tage), schreibt osTicket Jammermails und priorisiert das jeweilige Ticket, indem es den Kommunikationsprozess in einer Liste nach oben schiebt. Erst wenn ich antworte, ist wieder für drei Tage Ruhe – ich brauche das.

Wenn ein Prozess abgeschlossen ist, kann ich das Ticket „schließen“. Natürlich wird eine Statistik erstellt (mein Dienstherr mag Statistiken als „Arbeitsnachweis“ und ich habe keinen Bock, die selbst zu erstellen) und ich kann geschlossene Tickets ganz einfach finden, z.B. mit einer Suche nach einem Namen oder einer E-Mailadresse. Damit weiß ich, was ich wie oft mit welcher Person verhackstückt habe.

Und sonst?

Ich kann vordefinierte Antworten anlegen – wenn eine Schule z.B. über unsere Medienzentrum eine Homepage hosten und betreuen lassen möchte, ähneln sich die Prozesse doch sehr. Die Antworten klicke ich einfach in die Mail hinein.

Auch für telefonische oder mündliche Anfragen kann ich selbst Tickets eröffnen. Da alle Prozesse in osTicket mehrbenutzerfähig sind, wüssten z.B. auch Kolleginnen und Kollegen von mir, wo ich gerade stehe.

Wer es mag, kann osTicket auch mit Android und Co. über eine App managen. Das ist für mich und meinen Workflow aber eher ein Nachteil. Ich setze mich lieber gezielt 1-2x am Tag an einen Rechner und arbeite den Kram dann konzentriert ab.

Außerhalb meiner Arbeitszeit gibt es eine höfliche, aber bestimmte Mail, die den Empfang bestätigt, aber dann auf z.B. Montag vertröstet.

Und nicht zuletzt: Das Backup einer MySQL-Datenbank ist auch viel performanter als dasjenige tausender Fitzeldateien auf der Festplatte.

Und der E-Mailclient zu Hause?

osTicket löscht normalerweise empfangende Mails auf dem Server, kann aber diese auch in einen imap-Unterordner verschieben. Wenn sich eine wirklich private Mail auf einen Dienstaccount verirrt, kann ich sie immer noch aus dem Archivordner heraus ganz normal ohne Ticket-ID persönlich mit der privaten Mailadresse beantworten.

 

Owncloud an bestehende Authentifizierungsysteme anbinden

Owncloud bietet ab der Version 6 neben den üblichen interessanten Features eine kollaborative Textverarbeitung an, d.h. mehrere Benutzer können genau wie bei Etherpad oder Etherpad lite gleichzeitig an einem Dokument arbeiten. Die Formatierungsmöglichkeiten sind dabei umfangreicher als bei der Etherpadderivaten, jedoch gegenüber Lösungen wir GoogleDocs noch recht rudimentär. Für viele Anwendungsfälle reicht es jedoch vollauf. Wer möchte, darf das hier nach Eingabe eines Spitznamens gerne einmal ausprobieren. Owncloud nutzt ODT als natives Format.

Viele Schulen möchten gerne Owncloud nutzen und verfügen oft schon über eine Schulserverlösung. Idealerweise bietet diese bereits E-Mailadressen für alle Schulangehörigen über das IMAP-Protokoll an. Das ist z.B. bei IServ der Fall – einer in Niedersachsen sehr verbreiteten Lösung. Durch zwei kleine Änderungen muss keine separate Nutzerverwaltung in Owncloud mehr betrieben werden, wenn bereits ein IMAP-Server im Schulnetz vorhanden ist.

Es kann eine Grundinstallation von Owncloud als Basis genommen werden. Bei den Apps muss „External user support“ zuvor aktiviert werden. Eine Datei ist danach zu ändern, eine hinzuzufügen.

Zu ändernde Datei

Name: config/config.php

Quellcode:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
require_once(dirname(__FILE__).'/../apps/user_external/lib/imap_new.php');
 
$CONFIG = array (
  'instanceid' => '<hier_steht_schon_etwas>',
  'passwordsalt' => '<hier_steht_schon_etwas>',
  'datadirectory' => '<hier_steht_schon_etwas>',
  'dbtype' => 'mysql',
  'version' => '6.0.0.14',
  'dbname' => '<hier_steht_schon_etwas>',
  'dbhost' => 'localhost',
  'dbtableprefix' => 'oc_',
  'dbuser' => '<hier_steht_schon_etwas>',
  'dbpassword' => '<hier_steht_schon_etwas>',
  'installed' => true,
  'forcessl' => true,
  'user_backends'=>array(
   array(
      'class'=>'OC_User_IMAP',
      'arguments'=>array('{<server>:<port>/imap/ssl/novalidate-cert}')
   )
  ),
);

Kommentar:
In Zeile 2 wird der neu zu erstellende Code (s.u.) eingebunden, ab Zeile 17 wird es interessant, vor allem in der Zeile, die mit „arguments“ beginnt. Die Angaben für Server und Port sind mit den eigenen Angaben zu füllen. Ich brauche für den IServ die Angabe „novalidate-cert“, da es sich um ein selbstsigniertes Cert handelt – daher zicken auch Applegeräte gerne mit dem IServ, weil sie sich in der Fehlermeldung nicht klar ausdrücken. Nutzt man eine unverschlüsselte Verbindung, was allenfalls zu Testzwecken dienlich ist, sieht das z.B. so aus:

      'arguments'=>array('{meinserver.xy:143/imap}')

Hinzuzufügende Datei:

Name: apps/user_external/lib/imap_new.php

Quellcode:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<?php
/**
 * Copyright (c) 2012 Robin Appelman <icewind@owncloud.com>
 * This file is licensed under the Affero General Public License version 3 or
 * later.
 * See the COPYING-README file.
 */
 
class OC_User_IMAP extends OC_User_Backend{
        private $mailbox;
 
        public function __construct($mailbox) {
                $this->mailbox=$mailbox;
        }
 
        /**
         * @brief Check if the password is correct
         * @param $uid The username
         * @param $password The password
         * @returns true/false
         *
         * Check if the password is correct without logging in the user
         */
        public function checkPassword($uid, $password) {
 
                $mbox = @imap_open($this->mailbox, $uid, $password);
                imap_errors();
                imap_alerts();
 
 
                if($mbox) {
                        imap_close($mbox);
 
                        if(OC_User::userExists($uid)) {
                                  OC_User::setPassword($uid, $password);
                        } else {
                                  OC_User::createUser($uid, $password);
                                  $uida=explode('@',$uid,2);
                                  if(($uida[1] || '') !== '') {
                                        OC_Group::createGroup($uida[1]);
                                        OC_Group::addToGroup($uid, $uida[1]);
                       }
 
                }
                        return $uid;
                } else {
                        return false;
                }
        }
 
}

Kommentar:
Dieses Codestück sorgt dafür, dass beim ersten Login eines Benutzers ein Eintrag in die User-Datenbank von Owncloud erfolgt. Dabei wird auch das Passwort verschlüsselt gespeichert, da ansonsten keine Nutzung über die Apps von Owncloud möglich ist. Der Nutzer muss sich mit den gleichen Daten wie am E-Mailserver anmelden. Ändert der Nutzer sein Passwort im IServ oder auf dem E-Mailserver, wird diese Änderung bei bestehendem Login in Owncloud übernommen.

Update:
Mit dem Hack funktioniert auch die Nutzung mit der Owncloud-App problemlos.

Das macht Facebook nicht

Bei Facebook hat man ja die Möglichkeit, sich Freunde vorschlagen zu lassen, indem man Zugangsdaten zu seinem E-Mailaccount dort angibt. Damit hat Facebook genau die Möglichkeiten des Zugriffs auf meine Mails, die ich hier skizziere, wenn ich einen IMAP-Account verwende. IMAP ist  eine Technologie zur Verwaltung von Mails auf einem Server. Wenn Ihr von verschiedenen Orten auf verschiedenen Endgeräten Zugriff auf eure Mails habt und dazu keinen Browser verwendet, nutzt ihr zu 98% IMAP.

Was die meisten Menschen kennen, sind Klickibunti E-Clients („IPhone-Apps“, Outlook, Thunderbird…),  die  man einmal einrichtet und die dann alles für einen tun (z.B. Ordner anlegen usw.). Man kann mit seinem Mailserver aber auch ganz „freakig“ über die Kommandozeile via telnet reden, verschlüsselt geht das auch, etwa über openssl. Dazu braucht es lediglich ein Login und ein Passwort für den E-Mailaccount (den hat Facebook ja dann). Dabei wandern die Daten ruckizucki. Ich habe einmal Daten markiert, die etwas über meine Person aussagen. Fett sind die notwendigen Kommandos in der Bash gedruckt.

Ich habe einmal meinen Server (riecken.de) genommen – erstmal sagen wir „Hallo!“:

telnet riecken.de 143

Trying 217.79.182.34…                                                                                                                                                                                                                                                                                    Connected to riecken.de.

Escape character is ‚^]‘.
* OK [server string]

Mittels GeoIP kann ich herausbekommen, wo mein Mailserver steht, genau bei welchem Provider in in welchem Rechenzentrum. Mit den Zugangsdaten können wir uns einloggen – lt. Protokoll braucht es dafür einen Identifier, hier A00001 –  und dann nachschauen, welche Ordner es gibt:

Weiterlesen