Im Klinikum St. Marien wird das Ticketsystem seit 2005 in der EDV

Werbung
Praktikumsbericht
Name:
Michael Schrüfer
Matrikel Nr.:
2667118
Unternehmen: Klinikum St. Marien Amberg
Michael Schrüfer
Matnr.: 2667118
Seite 1 von 38
Inhaltsverzeichnis
Abkürzungsverzeichnis .................................................................................................................. 3
1.
2.
3.
4.
5.
Einführung ............................................................................................................................. 4
1.1.
Das Klinikum St. Marien Amberg................................................................................... 4
1.2.
Die IT Abteilung des Klinikums St. Marien .................................................................... 5
Erweiterung OTRS Helpdesksystem ...................................................................................... 7
2.1.
OTRS .............................................................................................................................. 7
2.2.
Aufgabendefinition........................................................................................................ 8
2.3.
Analyse der Lösungsmöglichkeiten ............................................................................... 9
2.4.
Implementierung der Lösung ........................................................................................ 9
2.5.
Test und Übergabe ...................................................................................................... 11
Aktualisierung des Mailhubs zur Spam- und Virenabwehr ................................................. 12
3.1.
Ist-Analyse ................................................................................................................... 12
3.2.
Aufgabendefinition...................................................................................................... 13
3.3.
Implementierung und Konfiguration der Lösung ........................................................ 13
3.4.
Test und Inbetriebnahme ............................................................................................ 21
Erleichterung der Administration des Mailhubs ................................................................. 22
4.1.
Aufgabendefinition...................................................................................................... 22
4.2.
Analyse der am Markt existierende Lösungen ............................................................ 22
4.3.
Implementierung konsolenbasierte Skripte................................................................ 23
4.4.
Implementierung einer php-Administrationsmaske ................................................... 24
Sonstiges ............................................................................................................................. 28
5.1.
Netzwerkmanagement mit Cisco Prime...................................................................... 28
5.2.
Planung eines Oracle Real Applicantion Cluster (RAC) ............................................... 29
6.
Anhang ................................................................................................................................ 30
7.
Literaturverzeichnis ............................................................................................................. 38
Michael Schrüfer
Matnr.: 2667118
Seite 2 von 38
Abkürzungsverzeichnis
OTRS
SSH
LDAP
AD
DB
SOAP
MUA
MTA
MX
DMZ
DNS
NTP
NRPE
AMaViS
APT
SMTP
TCP
RBL
FQDN
POP3
IMAP
RAV
SNMP
RAC
ASM
Michael Schrüfer
Open Ticket Request System
Secure Shell Host
Lightweight Directory Access Protocol
Active Directory
Datenbank
Simple Object Access Protocol
Mail User Agent
Mail Transfer Agent
Mail Exchanger
Demilitarisierte Zone
Domain Name Service
Network Time Protocol
Nagios Remote Plugin Executor
A Mail Virus Scanner
Advanced Packaging Tool
Simple Mail Transfer Protocol
Transmission Control Protocol
Realtime Blackhole Lists
Fully Qualified Domain Name
Post Office Protocol Version 3
Internet Message Access Protocol
Recipient address verification
Simple Network Management Protokoll
Real Applicantion Cluster
Automatic Storage Manager
Matnr.: 2667118
Seite 3 von 38
1. Einführung
1.1. Das Klinikum St. Marien Amberg
Das Klinikum St. Marien Amberg wurde 1850 als „Marienspital zu Amberg“ gegründet. Das zu
Beginn mit 50 Betten ausgestattete Spital entwickelte sich in den vergangenen 162 Jahren zu
einem modernen Klinikum und nimmt eine zentrale Stellung in der Krankenversorgung der
Region ein. Das Haus der Versorgungsstufe 3 (Schwerpunktversorgung) beherbergt folgende
Fachabteilungen und Institute: Klinik für Innere Medizin I und II, Allgemein-, Visceral-, Thoraxund Gefäßchirurgie, Unfallchirurgie und Orthopädie, Neurochirurgie, Gynäkologie und
Geburtshilfe, Pädiatrie, Urologie, Geriatrie und Frührehabilitation ,Neurologie, Anästhesiologie
und operative Intensivmedizin, Strahlentherapie sowie das Institut für diagnostische und
interventionelle Radiologie. Durch verschiedene Zentren und die damit verbundene
interdisziplinäre Zusammenarbeit wird eine ganzheitliche Betreuung der Patienten
gewährleistet. Das Klinikum wird seit 2004 als Kommunalunternehmen (Anstalt des
öffentlichen Rechts der Stadt Amberg) betrieben. 2005 wurde das Gesundheitszentrum St.
Marien GmbH als 100 prozentige Tochtergesellschaft des Klinikums gegründet. Diese
Einrichtung ermöglicht dem Klinikum das Angebot einer ambulanten Versorgungsform in enger
Kooperation mit den bereits verfügbaren Ressourcen des Hauses, sowie mit niedergelassenen
Ärzten. Um eine möglichst hohe Qualität der Pflege sicherstellen zu können, betreibt das
Klinikum eine eigene Krankenpflegeschule, an der sich aktuell knapp 100 junge Menschen in
der Ausbildung befinden. Neben der pflegerischen Ausbildung ist das Klinikum in der Funktion
als akademisches Lehrkrankenhaus der Universität Erlangen-Nürnberg sowie der Universität
Regensburg auch für die ärztliche Ausbildung mitverantwortlich. Weitere Kooperationen, wie
z.B. mit der Hochschule Amberg-Weiden sichern dem Klinikum den Zugang zu neuen
Technologien und sollen dem prognostizierten Fachkräftemangel vorbeugen. Die Einhaltung
der durch den Gesetzgeber geforderten Qualitätssicherungsmaßnahmen bewies das Klinikum
dieses Jahr wiederholt durch die Zertifizierung durch die KTQ (Kooperation für Transparenz
und Qualität im Gesundheitswesen GmbH) mit einem überdurchschnittlich guten Ergebnis. Die
permanenten Veränderungen der vergangenen Jahre im Gesundheitssystem stellen auch für
ein Krankenhaus mittlerer Größe mit 574 Betten eine wirtschaftliche Herausforderung dar.
Eine genaue Planung und die Erfassung und Analyse medizinisch/wirtschaftlicher Kennzahlen
sind für den Erhalt jeder medizinischen Einrichtung unabdingbar. Im vergangenen
Geschäftsjahr wurden 26 000 stationäre und knapp 38 000 ambulante Fälle behandelt. Die
durchschnittliche Verweildauer sank im Vergleich zum Vorjahr um 0,07 Tage auf 6,89. Der
durchschnittliche Schweregrad (CMI) der Fälle lag bei 1,005. Eine im Trend der vergangenen
Jahre liegende Steigerung der Auslastung der Bettenkapazitäten von 83.45 führte zu diversen
zum Teil noch im Bau befindlichen Erweiterungsmaßnahmen. Trotz dieser, zu einem großen
Teil aus Eigenmitteln finanzierten Investitionen gelang es, ein zufriedenstellendes Ergebnis am
Ende des Geschäftsjahres auszuweisen. Dabei galt es auch die gestiegenen Personalkosten
durch eine Fallzahlsteigerung von 1,276 % auszugleichen. Mit knapp 1500 Beschäftigten stellt
das Klinikum den zweitgrößten Arbeitgeber der Region dar. Vertreten wird das Klinikum durch
den Vorstand Herrn Manfred Wendl. Dieser bildet zusammen mit Herrn Prof. Dr. Helmut
Wollschläger als ärztlicher Direktor, Herrn Hubert Graf als Verwaltungsleiter und Frau Kerstin
Wittmann als Pflegedirektorin das Leitungsgremium des Klinikums.
Michael Schrüfer
Matnr.: 2667118
Seite 4 von 38
1.2. Die IT Abteilung des Klinikums St. Marien
Die IT Abteilung als eine noch verhältnismäßig junge Abteilung des Klinikums stellt die gesamte
IT Infrastruktur als interner Dienstleister für das Klinikum zur Verfügung. Dabei ist eine immer
engere Verschmelzung der reinen IT-Systeme mit den medizinisch-technischen Geräten zu
beobachten. Dies führt zu einer engen Kooperation der IT mit anderen Abteilungen, wie z.B.
der Medizin- oder Elektrotechnik.
Als vor 25 Jahren das EDV Zeitalter im Klinikum begann, betreute der spätere EDV Leiter 2
Computer in der Verwaltung. Aus dieser Ein-Mann Abteilung ist zwischenzeitlich eine 15 Mann
starke Gruppe geworden, die über 700 Client-, 150 Server- und 100 verschiedenste
Softwaresysteme betreut. Die Aufgaben innerhalb der Abteilung gliedern sich in das Tagesund das Projektgeschäft. Das Tagesgeschäft umfasst die Client- und Anwenderbetreuung
sowie die Behebung von Problemen und die Wartungen an zentralen Systemen. Der
Arbeitsablauf für das Tagesgeschäft wird primär über ein Helpdesk System organisiert, in dem
Störmeldungen erfasst, verwaltet, abgearbeitet und ausgewertet werden. Im Projektgeschäft
werden zeitlich oder durch den Umfang begrenzte Aufgaben, z.B. die Einführung neuer
Softwaresysteme durchgeführt. Mitarbeiter werden davon für hierfür vom Tagesgeschäft
entsprechend freigestellt.
Wo aufgrund der Vielzahl verschiedener sehr spezialisierter Anwendungen kein entsprechend
tiefes Verständnis der Software bei den eigenen Mitarbeitern erreicht werden kann, wird der
Second-Level Support direkt an die Herstellerfirma outgesourced.
Neben der engen Zusammenarbeit mit den Herstellerfirmen verschiedenster SoftwareProdukte ist eine zunehmende Kooperation der EDV Abteilungen verschiedener medizinischer
Einrichtungen zu beobachten. Wird in der Presse über eine Zusammenarbeit zwischen
Krankenhäuser oder niedergelassenen Ärzten berichtet, so bildet die EDV Vernetzung in den
meisten Fällen die Grundlage und Basis des Daten- und Informationsaustausches. Während
sich Anforderungen früher auf die Übertragung von Bilddaten über Dicom o.ä. beschränkten,
haben sich heute bereits Einweiserportale oder Videokonferenzsysteme zur interdisziplinären
Zusammenarbeit etabliert.
Die im klinischen Umfeld eingesetzte Software muss hohe Anforderungen an Verfügbarkeit,
Sicherheit und Datenschutz erfüllen. Außerdem ist eine überdurchschnittlich hohe Flexibilität
bei der Einführung neuer Software notwendig. Neue Systeme müssen kostengünstig, zeitnah,
hochverfügbar bereit gestellt werden können. Um diese Anforderungen erfüllen zu können,
hat man sich vor 6 Jahren zur Virtualisierung der Bereiche Server, Netzwerk und
Speichersysteme entschieden. Kern der Netzwerkinfrastruktur und damit Basis des gesamten
Datenverkehrs bilden 2 redundante Catalyst 6500, die in einem Virtual Switch System (VSS)
1440-Verbund der Firma Cisco arbeiten. Im Storage Bereich stehen 2 redundante Storage
Server zur Verfügung. Als Hardware dahinter dienen je Storage Server 4 SX100 der Firma
Fujitsu als permanente Datenablage. Die einzelnen Shelfs wurden mit verschiedenen
Festplatten abhängig vom Anwendungszweck ausgestattet. Die Virtualisierungsschicht auf den
2 Storage Servern wurde mit der Software SANMelody der Firma DataCore realisiert. Diese
präsentiert die logischen Volumes über eine FibreChannel SAN Infrastruktur den Servern. In
Michael Schrüfer
Matnr.: 2667118
Seite 5 von 38
dem in der Öffentlichkeit wohl bekanntesten Virtualisierungsbereich - der Servervirtualiserung
- wird im Klinikum das Produkt der Firma VMWare eingesetzt. Die Version 5 der Software läuft
sowohl auf den ESX-Hosts, als auch am Virtual Center, welches für die Verwaltung der
verschiedenen Komponenten verantwortlich ist. Bei dem Umstieg auf die nächste
Hardwaregeneration der ESX Server sollen die bisher einzelnen Server (Fujitsu RX 600) aus
Kosten- und Verwaltungsgründen durch Blade Server ersetzt werden. Die Komponenten
wurden in allen Bereichen redundant ausgelegt, und physikalisch in 2 verschiedenen
Serverräumen in unterschiedlichen Brandabschnitten untergebracht. Um selbst im
Katastrophenfall Datenverlust zu vermeiden, werden Sicherungen in einem weiteren, dritten
Raum abgelegt. Vor 2 Jahren wurde im Klinikum ein flächendeckendes WLAN installiert. Neben
Datendiensten wird das WLAN hauptsächlich für die Telefonie genutzt. In Zukunft soll das
System außerdem zur Ortung von Patienten und Geräten dienen. Alle Bereiche des Netzwerks
wurden mit Komponenten der Firma Cisco ausgestattet.
Die im Klinikum eingesetzten Softwareprodukte lassen sich grob in Medizinische Software,
Verwaltungssoftware und Infrastruktursoftware einteilen. Eines der wichtigsten Systeme stellt
das Klinikum Information System (KIS), Micom Medicare der Firma Nexus da. In ihm wird der
gesamte Behandlungsworkflow, von der Aufnahme des Patienten, bis zur Leistungsabrechnung
abgebildet. Als nummernführendes System kann es als zentrale Patientendatenbank
verstanden werden. Alle medizinischen Subsysteme müssen relevante Daten über definierte
Schnittstellen (HL7) erhalten. Die Kommunikation zwischen dem KIS und den verschiedensten
Sub- und Spezialsystemen wird von hochverfügbar ausgelegten Schnittstellenservern
abgewickelt. Eines der umfangreichsten Subsysteme wird der Radiologie zur Verfügung
gestellt. Sowohl als Verwaltungssoftware (RIS) als auch als Bildspeicher kommen Produkte der
Firma Siemens (Syngo) zum Einsatz. Da in der Radiologie keine Bilder mehr „ausgedruckt“
werden, muss die Organisation und Ablage der Daten hohe Anforderungen an die
Datensicherheit erfüllen. Weitere spezialisierte Subsysteme finden sich in so gut wie jeder
Fachabteilung. Probleme mit denen sich aktuell wohl jede Klinik-IT befasst, sind einerseits die
fachabteilungsübergreifende Darstellung des Datenmaterials, andererseits die sichere
Archivierung der Daten. Im Verwaltungsbereich wird neben Medicare hauptsächlich SAP für
die Finanzbuchhaltung und Lagerverwaltung eingesetzt. Im medizinisch-administrativen
Bereich hat man sich anstelle des vom Funktionsumfang sehr breit aufgestellten SAP, für das
ausschließlich für den medizinischen Bereich entwickelte Nexus Medicare entschieden. Basis
des Infrastrukturbereichs bildet das Microsoft Active Directory. Alle Benutzer werden in dieser
zentralen Instanz gepflegt. Um Anwendern einen möglichst großen Komfort bei der
Anmeldung bieten zu können, wird bei der Einführung neuer Software auf die
Integrationsfähigkeit z.B. durch LDAP oder Kerberos geachtet. Sofern möglich, wird dabei auf
OpenSource Software zurückgegriffen. Diese bietet neben dem Kostenvorteil eine hohe
Flexibilität durch eigene Anpassungen.
Michael Schrüfer
Matnr.: 2667118
Seite 6 von 38
2. Erweiterung OTRS Helpdesksystem
2.1. OTRS
OTRS (Open Ticket Request System) ist ein webbasiertes Ticketsystem. Es beruht auf den
Programmiersprachen Perl sowie JavaScript und ist als Open Source Software frei verfügbar.
Die Unterstützung verschiedenster Servertechnologien macht OTRS in vielen Umgebungen
einsetzbar. So werden neben dem freien Datenbanksystem MySQL auch die Produkte der
kommerziellen Hersteller wie Oracle oder Microsoft als persistente Datenablage unterstützt.
Ebenso spielt es für OTRS keine Rolle, ob der Webserver unter Windows, Unix, Linux oder Mac
OS läuft.
Das System bietet je nach Aufgabenrolle (Problemmelder oder –bearbeiter) verschiedene
Bereiche an. Neben einem Modul für den Ticket-Bearbeiter (in OTRS als Agent bezeichnet),
existiert ein Kundenbereich über den der Anwender selbst Probleme melden und gemeldete
Probleme verwalten kann. Jede Problemmeldung wird von OTRS als ein Ticket mit eindeutiger
Identifikationsnummer gespeichert. Die verschiedenen Arbeits- und Aufgabenbereiche können
in OTRS mit sogenannten Queues abgebildet bzw. gegliedert werden. Jedes Ticket muss zu
jedem Zeitpunkt einer Queue zugewiesen sein. Einer Queue ist wiederum mindestens ein, in
der Regel jedoch mehrere Agents zugewiesen, die die für sie jeweils relevanten Tickets durch
Sperren aus der öffentlichen Queue entfernen und somit für die eigene Bearbeitung
markieren. Dadurch kann verhindert werden, dass sich 2 Bearbeiter um das gleiche Problem
kümmern. Weitere Funktionen, wie das Verschieben zwischen Queues und Bearbeitern oder
das Zusammenführen von Tickets, sorgen für eine flexible aber auch saubere Ticketverwaltung.
Wichtige Features zur Kommunikation mit dem Problemmelder sind Notizen und Antworten.
Notizen können sowohl für die interne Dokumentation zwischen den Bearbeitern als auch für
die externe Kommunikation mit dem Kunden genutzt werden. Über Antworten lässt sich ein
Dialog zwischen Bearbeiter und Problemmelder realisieren. Diese können vom Kunden über
die identischen Wege, wie die eigentliche Problemmeldung, an das Ticket angefügt, und dem
Bearbeiter zugestellt werden. Neben dem bereits erwähnten Customer Bereich existiert die
sehr unkomplizierte und schnelle Möglichkeit, Nachrichten per Mail an das Ticketsystem zu
senden. Da OTRS keine direkte SMTP Schnittstelle für den E-Mail Empfang bereit stellt, werden
eingehende Mails auf einem POP3 Server gesammelt, und von dort aus via Cron Job abgeholt.
Für die abgeholten Mails wird automatisch ein Ticket in der davor statisch oder dynamisch
konfigurierten Queue angelegt. Dies ermöglicht eine vollständige Aufzeichnung der gesamten
Agent-Kunden-Kommunikation. Wichtige Informationen sind so nicht mehr in persönlichen, für
andere nicht zugänglichen Outlook Postfächern, sondern zentral für alle einsehbar.
Insbesondere im Krankheits- oder Vertretungsfall können sich Kollegen so einen schnellen
Überblick über den bisherigen Ticketverlauf verschaffen. Um auch den Kunden über den Stand
seiner Problemmeldung auf dem Laufenden zu halten, werden z.B. beim Öffnen, Verschieben
und Schließen aktionsgetriggert „automatische Antworten“ an den Kunden per Mail versendet,
die ihn über den aktuellen Bearbeitungsstand informieren.
OTRS bietet eine Vielzahl vorimplementierter Möglichkeiten, um das System an die jeweilige
Umgebung anzupassen. Als eine der wichtigsten ist das Dynamic Field Feature zu nennen, mit
dessen Hilfe sich neue Felder, und somit weitere Informationen dem Ticket hinzufügen lassen.
Ebenso lassen sich Kundeninformationen erweitern, um für etwaige Rückfragen alle Daten
Michael Schrüfer
Matnr.: 2667118
Seite 7 von 38
direkt parat zu haben. Insgesamt bietet OTRS über 1400 Konfigurationsparameter, die für den
Regelbetrieb eine ausreichende Flexibilität zur Anpassung bereitstellen. Bei tiefergreifenden
Änderungen oder Erweiterungen kann der Quellcode direkt geändert werden, oder interne
Funktionen durch das Generic Interface von außen durch Eigenentwicklungen genutzt werden.
Im Klinikum St. Marien wird das Ticketsystem seit 2005 in der EDV Abteilung und in Teilen der
Öffentlichkeitsarbeit eingesetzt. Nach diversen Updates und Erweiterungen wird es aktuell in
der Version 3.1.8 betrieben. Die Basis des Systems bildet eine virtuelle Maschine mit dem
Betriebssystem Linux Debian 6.0.6. Sowohl der Apache Webserver zur Anzeige der Webseiten
als auch der MySQL Server zur Datenspeicherung wurden in den aktuellsten, vom
Betriebssystem-Repository bereitgestellten, Versionen installiert. Ebenso wurde ein SSH Server
für den komfortablen Zugriff auf das Betriebssystem eingerichtet. Alternativ dazu kann zur
Administration die direkte Konsole über den VCenter Client genutzt werden. Die OTRS
Installation sowie die nachfolgenden Updates wurden direkt aus den Quelldateien installiert,
um ein möglichst aktuelles System mit maximalem Funktionsumfang sowie bereits behobenen
Bugs zu erhalten.
Bei der Einführung des OTRS Systems hat man sich dazu entschlossen, eine zentrale Stelle zur
Annahme aller IT Probleme zu schaffen. 2 Mitarbeiter sind seither damit betraut, Anrufe und
Probleme der Anwender entgegenzunehmen, diese als Ticket im System zu erfassen, und
anschließend dem richtigen Bearbeiterkreis zuzustellen. Vorteil dieser Variante ist die hohe
Qualität der Problembeschreibung. Bei der Ticketannahme können Rückfragen gestellt
werden. Durch diesen Dialog entsteht eine sehr detaillierte Fehlerbeschreibung. In vielen
Fällen kann das Problem sogar direkt dadurch gelöst werden (Abbildung 2.1.a). Dazu wurden
sowohl das Kunden Interface als auch die E-Mail Kommunikation mit in die Lösung eingebaut.
Der Kunde wird über alle relevanten Schritte, vom Öffnen, über das Zuweisen und Bearbeiten
bis hin zum Schließen per Mail auf dem Laufenden gehalten. Genauso kann er im Webinterface
den aktuellen Status prüfen und eine Rückfrage zum Ticket stellen. Diese wird automatisch an
das Ticket angefügt, und so dem Bearbeiter zur Verfügung gestellt. Hierdurch wird ohne
zusätzlichen Aufwand ein komplettes Bearbeitungs- und Kommunikationsprotokoll zum Ticket
erstellt. Dies wird z.B. für spätere, ähnliche Fehler als FAQ genutzt. Die Authentifizierung am
System erfolgt sowohl für die Agents als auch für die Kunden über eine LDAP Schnittstelle
gegen das Active Directory des Klinikums.
2.2. Aufgabendefinition
Die vorhandene OTRS Infrastruktur soll für Störungen der Betriebstechnik mitbenutzt werden.
Dadurch erweitert sich nicht nur der Kreis der Bearbeiter, sondern auch das Klientel der
Problemmelder. Es kann nun nicht mehr davon ausgegangen werden, dass jeder
Problemmelder eine E-Mail Adresse und einen Active Directory Account besitzt. Dadurch
stehen die Schnittstellen zur Problemmeldung per Mail und dem im OTRS vorhandenem
Webinterface für diesen Zweck nicht zur Verfügung. Die Störannahme per Telefon, die in der
EDV Abteilung üblich ist, schied aus organisatorischen Gründen ebenfalls aus. Es musste eine
Möglichkeit geschaffen werden, möglichst einfach und schnell für jeden ohne
Authentifizierung Meldungen aufzugeben. Die Erweiterung soll auf den vorhandenen Mitteln
aufbauen, und Klinikums weit ohne Installationsaufwand auf jedem PC zur Verfügung stehen.
Michael Schrüfer
Matnr.: 2667118
Seite 8 von 38
2.3. Analyse der Lösungsmöglichkeiten
Um eine möglichst einheitliche Struktur zu erreichen und die bestmögliche Integration
umzusetzen, war der erste Gedanke, die vorhandenen Formulare und Dateien aus OTRS als
Basis zu verwenden und entsprechend anzupassen. Leider stellte sich relativ schnell heraus,
dass die im Quellcode enthaltenen konzeptionellen Vorgaben des Systems nicht unseren
Anforderungen entsprechen, und eine Anpassung mit einem unverhältnismäßig hohen
Aufwand verbunden gewesen wäre. Zudem ließen sich die Änderungen nicht transparent für
zukünftige Updates in das OTRS System integrieren.
Aufgrund dieser Erkenntnisse hat man sich dazu entschlossen, ein separates Interface zur
Eingabe der Störmeldungen zu entwickeln und über definierte Schnittstellen mit OTRS zu
verknüpfen. Zur Implementierung bot sich die Skriptsprache PHP, zum einen aufgrund der
vorhandenen Infrastruktur, zum anderen aufgrund der schnellen und flexiblen
Verbreitungsmöglichkeit an. Als die am einfachsten anzusprechende Schnittstelle bot sich
zunächst MySQL an. Die in das Formular eingegeben Daten sollten also direkt in die DB
gespeichert werden. Vorteil dieser Variante ist die wäre die weite Verbreitung und gute
Dokumentation der Lösung. Der Ansatz ist in diversen Büchern und Fachartikeln ausführlich
und gut beschrieben. Bereits bei den ersten Implementierungsversuchen wurde jedoch
festgestellt, dass die OTRS Datenbankarchitektur weitaus komplexer war als anfangs gedacht.
Dazu kam, dass Daten z.B. die Identifikationsnummer eines Tickets von einer OTRS-internen
Funktion generiert wird, und nicht „einfach nur hochgezählt wird“. Aufgrund dieser
Erfahrungen musste dieser Versuch abgebrochen werden, und ein anderer
Kommunikationsweg zum OTRS gesucht werden. Bei der Recherche im Internet stellte sich das
OTRS Generic Interface als geeignet dar. Es wird vom System selbst angeboten, um externen
Systemen Dritter Zugriff auf OTRS-interne Funktionen zu geben. Aufgrund der offenen und
standardisierten Schnittstellen entschloss man sich die PHP Anwendung kompatibel zum
Generic Interface aufzubauen.
2.4. Implementierung der Lösung
Da die Voraussetzungen an die Infrastruktur durch die vorhandene OTRS Installation bereits
erfüllt waren, beschränkten sich die Vorbereitungen auf die Einrichtung einer
Entwicklungsumgebung. Auf Grund der Größe des Projekts und der überschaubaren Anzahl an
Dateien wurde der Unix Editor VI(M) und Subversion zur Versionskontrolle ausgewählt. Vorteil
dieser schlanken Entwicklungsumgebung war die geringe Anpassungsarbeit auf dem Server. Es
war weder eine Grafische Oberfläche noch ein Samba Server zur Bereitstellung einer Windows
Freigabe notwendig.
Zur Eingabe der Daten zur Störmeldung wurde ein HTML Formular programmiert, welches die
relevanten Informationen vom Anwender abfragt. Die Datenvalidierung und Eingabe von
Pflichtfeldern konnten via Java Script realisiert werden. Sind alle benötigten Felder gefüllt, und
das Formular abgeschickt, werden die erfassten Daten an ein PHP Skript übergeben. Dieses
Skript übernimmt die eigentliche Arbeit. Es baut via HTTP/SOAP eine Verbindung zum OTRS
System auf, und legt ein neues Ticket mit den übergebenen Daten an. Die OTRS Schnittstelle
bietet 2 Betriebsmodi und setzt sich aus 4 Modulen zusammen. Das OTRS Generic Interface
kann als sogenannter Requester oder Provider betrieben werden. Als Reqester geht die
Kommunikation vom OTRS aus. Beim Provider agiert OTRS als Annahmestelle für Daten. Diese
Michael Schrüfer
Matnr.: 2667118
Seite 9 von 38
letztgenannte Schnittstelle wird vom PHP Skript angesprochen, um das Ticket anzulegen. Das
erste Modul, Network Transport, übernimmt die Kommunikation mit dem entfernten System.
Im Provider Modi erfolgt dies über das Skript nph-genericinterface.pl. Um dieses nutzen zu
können, muss ein „WebService Handler“ im OTRS angelegt werden (Abbildung 2.4.a). In
diesem werden die Einstellungen zur Kommunikation zwischen dem externen Service und
OTRS festgelegt. Als „Transport –Methode“ steht im „Provider-Modus“ lediglich HTTP::SOAP
zur Wahl. Die OTRS-Interne Funktion wird über einen sogenannten Controller definiert. Dieser
wird im erzeugten Webservice definiert und kann in der externen Applikation angesprochen
werden. In den weiteren Modulen wie z.B. dem Data Mapping zur Anpassung der
Datenstruktur waren keine Änderungen notwendig, da die Applikation nach den OTRS
Vorgaben entwickelt werden konnte. Damit war die Konfiguration des OTRS´s abgeschlossen.
Die Übergabe an das OTRS und die Rückmeldung an den Anwender umfasst 3 Schritte, die je in
einer Datei abgebildet werden. Das erste File stellt das HTML Formular zur Eingabe der Daten
bereit. Der Problemmelder muss in fest definierten Feldern Angaben zu seiner Person sowie
dem Problem hinterlegen. Dabei sind bestimmte Felder als Pflichtfelder auszufüllen. Da ohne
diese zwingend benötigten Daten die Verarbeitung nicht fortgesetzt, und kein Ticket in OTRS
angelegt werden darf, wird die Datenerfassung direkt auf der Eingabeseite durch eine
JavaSkript Funktion geprüft. Hierdurch werden fehlerhafte Daten erst gar nicht an ein
verarbeitendes Skript weitergegeben, sondern schon im ersten Schritt bei der Eingabe
abgefangen. Sind alle geforderten Daten eingegeben, erfolgt die Weiterleitung zur nächsten
Seite. In diesem Schritt findet als erstes eine primitive Datenvalidierung statt, die
gewährleistet, dass alle benötigten Daten erfolgreich übergeben wurden. Um den Zugriff auf
die Daten während der gesamten Laufzeit einer Sitzung sicherstellen zu können, werden diese
zunächst in entsprechenden Session Variablen abgelegt. Anschließend wird eine Instanz der
SOAP Client Klasse erzeugt. Diese ermöglicht den Zugriff auf den OTRS Webservice und damit
die Nutzung der internen Funktionen. Wichtigster Parameter im Konstruktor der SOAP Client
Klasse ist die URL zum Webservice im OTRS-Webverzeichnis. Diese setzt sich aus dem Pfad zum
Generic Interface und dem Namen des Webservices zusammen
('http://<servername>/otrs/nph-genericinterface.pl/Webservice/NewTicket'). Zurückgegeben
wird das Client Objekt, über das mit der Funktion __soapCall Funktionen des Webservices
genutzt werden können.
$soapClientObject = new SoapClient(null, array('location' => $url,
...
$ticketId = $soapClientObject->__soapCall(CreateMyTicket, TICKETDATEN
...
Wie im Code-Snipped zu sehen, wird der „__soapCall Funktion“ der Name der Operation sowie
die dazugehörigen Daten übergeben. Hierfür wurde im OTRS Webservice „NewTicket“ die
Operation „CreateMyTicket“ definiert, hinter der sich der OTRS Controller
„Ticket::TicketCreate“ verbirgt. Als zweiten Parameter werden der Funktion direkt die
Ticketdaten aus den Session-Variablen übergeben. Bei Erfolg gibt die Funktion die ID des neu
erstellten Tickets zurück. Diese wird ebenfalls in einer Session-Variable abgelegt. Im Fehlerfall
wird eine Exception „geworfen“ und die Verarbeitung abgebrochen. Um dem Problemmelder
die Ticketdaten sowie die ID seiner neu erstellten Meldung mitzuteilen, sollen alle erfassten
Daten gesammelt ausgegeben und auf Wunsch gedruckt werden können. Um ein doppeltes
Erstellen des Tickets bei bewusster oder unbewusster Aktualisierung (F5) der Seite zu
vermeiden, wird man nach dem erfolgreichen Erstellen des OTRS Tickets umgehend auf eine
Michael Schrüfer
Matnr.: 2667118
Seite 10 von 38
separate Ausgabeseite weitergeleitet. Hier werden die Daten wie gefordert inkl. Ticket-ID
ausgegeben. Der Ausdruck der Seite wird über die JavaScript Funktion
onClick="javascript:window.print()" realisiert. Der Problembearbeiter erhält keine
Kenntniss vom Vorgang der externen Ticketerstellung (Abbildung 2.4.b). Für ihn wird das Ticket
in der entsprechenden Queue wie jedes andere direkt im OTRS erstellte Telefon- oder E-Mail
Ticket angezeigt. Die OTRS Queue wird vom Problemmelder durch die Angabe eines
Problembereichs automatisch zugeordnet.
2.5. Test und Übergabe
Die funktionalen Tests wurden parallel zur Programmierung der einzelnen Methoden
durchgeführt. Abschließende Tests über den gesamten Workflow inkl. der Ticket-Bearbeitung
im OTRS erfolgten durch Mitarbeiter der EDV Abteilung. Da diese bereits mit dem OTRS
vertraut waren, konnten sie die korrekte Ticketerstellung prüfen, und den kompletten Prozess
beurteilen. Die Übergabe und Übernahme in den Produktivbetrieb erfolgte nach einer
Schulung des Bearbeiter-Personals der Betriebstechnik. Um den Workflow und die
Ticketbearbeitung zu optimieren, soll in naher Zukunft ein Test mit der Ticketverwaltung via
Smartphone erfolgen. Über eine existierende Android App kann von überall im Klinikum eine
Verbindung zum OTRS Datenbestand aufgebaut werden. Das Haus weit verfügbare WLAN soll
dabei die Grundlage der Datenkommunikation bilden.
Michael Schrüfer
Matnr.: 2667118
Seite 11 von 38
3. Aktualisierung des Mailhubs zur Spam- und Virenabwehr
Die Kommunikation via E-Mail wird heutzutage als selbstverständlich gesehen. Selbst
„Computer-Laien“ können kurzer Zeit und ohne Vorkenntnisse E-Mails senden und
empfangen. Ermöglicht wird dies insbesondere durch sehr einfach und bequem zu bedienende
Client Software (Mail User Agent - MUA). Leider bringt diese Bequemlichkeit auch einen
Nachteil mit sich. Den Anwendern fehlt oft das Hintergrundwissen zur E-Mail Kommunikation
und den zugrundeliegenden Protokollen. So wird das rein für Textnachrichten konzeptionierte
SMTP (Simple Mail Transfer Protokoll) heute oft als Protokoll zur Übertragung großer
Multimediadateien, zur Echtzeitkommunikation (Instand Messaging) oder zum Versand
formatierter HTML Dokumente missverstanden. Aussagen wie „der Empfang meiner E-Mail
muss garantiert werden und darf unter keinen Umständen verzögert oder von Dritten gelesen
werden“ belegen dieses mangelnde Wissen um die Funktionsweise und die Hintergründe der
E-Mail Kommunikation. So werden z.B. insbesondere Techniken zur Verzögerung von E-Mails
bewusst zur SPAM Bekämpfung eingesetzt. Vielen Anwendern, die sich von ein bis zwei „SPAM
Mails“ gestört fühlen, ist nicht bekannt, dass diese Mails über 95 % des weltweiten E-MailVerkehrs verursachen. Um diese Flut vom E-Mail Nutzer einzudämmen wurden diverse
Techniken entwickelt, auf die im weiteren Verlauf noch genauer eingegangen wird. In der
Praxis hat sich eine logische, sowie in vielen Fällen auch eine physikalische Trennung der
Aufgaben auf verschiedene Software- und Hardwarekomponenten etabliert. Während die
Benutzerpostfächer samt Zugriffsstruktur meist auf innerhalb des Firmen-Netzwerks liegenden
Groupware-/Mailservern zu finden sind, übernehmen sogenannte Mailhubs oder Mailrelays
die Kommunikation mit entfernten Mailservern (Abbildung 3.1.a). Da diese von der
„Außenwelt“ erreichbar sein müssen, findet man sie in der Regel in speziell gesicherten und
abgeschotteten Netzwerken, den demilitarisierten Zonen (DMZ). Dort sind sie sowohl für die
Annahme und Weiterleitung an den Postfachspeicher erwünschter, als auch im Besonderen für
die Zurückweisung unerwünschter E-Mails zuständig. Neben dem Empfang übernimmt ein
Mailhub auch die Weiterleitung der intern generierten E-Mails an die Mailserver der
Kommunikationspartner. Hierbei spielt das DNS (Domain Name Service) Protokoll eine
entscheidende Rolle. Über die in der DNS Zone definierten Mail Exchange Resource Records
wird der Transportweg einer Mail für eine bestimmte Domain festgelegt. Außerdem ist eine
korrekte DNS Konfiguration notwendig, um nicht selbst als SPAMer klassifiziert zu werden. Um
Entscheidungen zum Mailrouting schnell und zuverlässig treffen zu können, findet man in
vielen Setups direkt neben dem Mailhub einen DNS-Forwarder, der selbst keine Zonen
verwaltet, sondern Anfragen nur zwischenspeichert oder ggf. an externe DNS Server delegiert.
3.1. Ist-Analyse
Im Klinikum St. Marien ist die oben beschriebene Struktur weitgehend umgesetzt. Die Daten
und E-Mails der Benutzer werden innerhalb des Netzwerks auf einem Microsoft Exchange
Server vorgehalten und verwaltet. Für die Archivierung älterer, selten benötigter E-Mails steht
ein nachgelagertes Archiv bereit. Für den Zugriff auf die Postfächer steht den Anwendern
Microsoft Outlook als vollwertiger, sowie Outlook Webaccess als eingeschränkter Client intern
zur Verfügung. Ein Zugriff von Extern auf das Benutzerkonto ist aus Datenschutzgründen nicht
möglich.
Michael Schrüfer
Matnr.: 2667118
Seite 12 von 38
Zur Spambekämpfung wird ein Mailrelay in der DMZ betrieben, welches im Mailfluss logisch
vor dem Exchange Server angeordnet ist. Als Mailserversoftware kommt die aktuelle SendmailVersion, welche um zahlreiche Milter und Zusatzprogramme erweitert wurde, zum Einsatz. Als
Basis dient ein gehärtetes Linux Grundsystem. Um einen größtmöglichen Schutz vor Viren und
sonstiger Schadsoftware garantieren zu können, wurden sowohl auf dem Mailrelay, als auch
auf dem Exchange Server spezielle Virenscanner unterschiedlicher Hersteller installiert und
konfiguriert. Beide Dienste werden hochverfügbar über die hausweite, virtualisierte
Infrastruktur bereitgestellt.
3.2. Aufgabendefinition
Auch wenn Sendmail als Software für Mailsysteme immer noch sehr weit verbreitet ist, nimmt
dessen Bedeutung stetig ab. Dies liegt zum einen an der äußerst komplexen Konfiguration und
zum anderen an den regelmäßig bekannt werdenden Sicherheitslücken, die aufwendig
gepached werden müssen. Funktionen, die heute Mail Transfer Agents (MTA) von Haus aus
mitbringen, müssen bei Sendmail als Milter eingebunden werden. Dieses Konzept macht
Sendmail auf der einen Seite sehr flexibel, auf der anderen Seite aber auch sehr schwer zu
verwalten. Besonders schwierig gestaltet sich die Absicherung des Systems durch die
zahlreichen Verbindungen zu den externen Modulen und Programmen.
Um diese Nachteile zu beseitigen, soll das vorhandene System von einem modernen,
modularen System zur Spam- und Virenabwehr abgelöst werden. Das Nachfolgesystem soll
einfacher zu administrieren und zu konfigurieren sein. Dabei soll bei gleichbleibender SPAMund Virenerkennungsrate die Gesamtsicherheit des Systems erhöht werden. Auf Grund der
hohen Qualität und Verbreitung quelloffener Software in diesem Bereich soll auf
kommerzielle, kostenpflichtige Lösungen verzichtet werden. Um Ausfallzeiten zu vermeiden,
soll das neue System parallel zum bestehenden aufgebaut werden und dessen Infrastruktur
nutzen.
3.3. Implementierung und Konfiguration der Lösung
Durch die bereits bestehende virtualisierte Infrastruktur gestaltete sich die Einrichtung der
neuen „Hardware“ sehr einfach, schnell und kostengünstig. Logisch direkt neben dem aktiven
Mailhub wurde eine neue virtuelle Maschine angelegt und konfiguriert. Bei der Auswahl des
Betriebssystems fiel die Entscheidung auf die Linux Distribution Ubuntu 12.04 LTS.
Ausschlaggebend hierfür war zum einen das auf Linux Debian basierende Grundsystem, mit
dem die Administratoren vor Ort vertraut waren, zum anderen der lange Support-Zeitraum
von 5 Jahren, indem Updates und neue Pakete bereit gestellt werden. Die Installation des
Betriebssystems erfolgte zum Großteil nach Standardvorgaben. Dabei wurde die
Partitionierung so gewählt, dass eine volle Partition nicht zum Stillstand des Gesamtsystems
führen kann. Als Paketquelle erwiesen sich die Ubuntu-Quellen als ausreichend. Um ein
möglichst schlankes, stabiles und sicheres Grundsystem bereitzustellen, wurde als
Installationstyp ein Minimalsystem ohne grafische Benutzeroberfläche gewählt. Zur
Administration des Systems steht zum Zeitpunkt der Installation nur die VMWare Konsole und
nach Abschluss dieser ein SSH Server zum Remotezugriff zur Verfügung. Da ein direkter Zugriff
vom Internet aus auf diesen Server möglich ist, mussten spezielle Maßnahmen zur
Absicherung des Systems ergriffen werden. So wurde das Betriebssystem mit seinem Kernel
nach internen Vorgaben und Vorlagen gehärtet und unnötige Dienste deinstalliert. Des
Michael Schrüfer
Matnr.: 2667118
Seite 13 von 38
Weiteren wurde eine lokale Firewall zur Paketfilterung installiert und konfiguriert. Dabei
wurde auf das im Linux Kernel enthaltene IPTables Modul mit Stateful Packet Inspection
zurückgegriffen. Um Einbruchsversuche, Systemereignisse oder Logmeldungen der
Mailserversoftware zeitlich richtig ein- und zuordnen zu können, ist eine korrekte Systemzeit
insbesondere für sicherheitskritische Komponenten zwingend erforderlich. Zum Erreichen der
der Zeitsynchronisation wurde der Ubuntu NTP Client installiert und konfiguriert. Um optimal
mit der zugrundeliegenden VMWare Infrastruktur zusammenarbeiten zu können, war die
Installation der „VMWare Tools“ auf dem Gast-System notwendig. Da es im alltäglichen
Betrieb unmöglich ist, alle Systeme sowie deren Auslastung und Ereignisse im Blick zu haben,
wird im Klinikum die Monitoring Software Nagios eingesetzt. Diese prüft je nach Konfiguration
eines Hosts oder Services die Verfügbarkeit und Auslastung in regelmäßigen Zeitabständen.
Wie auch der alte Mailhub soll auch die Nachfolgeinstallation via Nagios überwacht werden.
Um die relevanten Informationen vom zu überwachenden Hosts abrufen zu können, muss der
Nagios-Server eine Verbindung zum entfernten System aufbauen, dort je nach Check ein
Programm ausführen, und dessen Rückgabewert interpretieren. Für diesen Zweck steht in den
Paketquellen das Programm NRPE (Nagios Remote Plugin Executor) zur Verfügung. Es öffnet
auf dem Zielsystem einen definierten Port, mit dem sich das Nagios-Serversystem verbinden
kann, und über das es Checks zur CPU Auslastung, RAM Belegung, Belegung der Partitionen
oder Verfügbarkeit einzelner Dienste und Anwendungen ausführen kann. Nach der Installation
der Mailserverdienste sollen diese Checks noch einmal überarbeitet und angepasst werden.
Dieser sehr detaillierte Systemstatus kann über ein Nagios Webinterface an zentraler Stelle
eingesehen und geprüft werden. Meldungen über Warnungen oder Fehler auf den
überwachten Systemen werden per Mail aktiv an den Administrator gesendet. Nach Abschluss
der Grundinstallation wurden die Firewall Systeme sowohl zum internen Netzwerk, als auch
zum Internet speziell nach den Anforderungen des E-Mail Systems angepasst. Grundbedingung
für die Funktionalität des neuen Systems ist die Erreichbarkeit des E-Mail-Dienstes in beide
Richtungen. Für den Versand muss der interne Exchange Server Mails an den Mailhub in der
DMZ zustellen können. Die Gegenrichtung wird primär für den Empfang von E-Mails benötigt.
Außerdem wurden weitere Freigaben zur Administration und Überwachung des Servers gemäß
bestehender Richtlinien eingerichtet. Die Regeln auf der Firewall Instanz zwischen Internet und
DMZ wurden vorbereitet, jedoch während der Test- und Installationsphase noch nicht
aktiviert. Lediglich der Zugriff auf Updates, Paketquellen, Zeitsynchronisation und entfernte
Testserver wurde ermöglicht. Um den Grundzustand des neuen Systems zu sichern, und im
Fehlerfall wiederherstellen zu können, wurde ein Snapshot der virtuellen Maschine angelegt.
Nach der Installation und Konfiguration dieser Basiskomponenten musste die Entscheidung
über die einzusetzende Mailserversoftware getroffen werden. Nach Recherchen in
einschlägiger Fachliteratur stellte sich der Mailserver Postfix als das auf die Anforderungen
passende Produkt heraus. Er bietet eine ähnliche, modulare Struktur wie der veraltete
Sendmail MTA, ermöglicht jedoch eine einfachere und komfortablere Konfiguration und
Administration. Außerdem konnten Protokolle und Features, die in Sendmail über die Jahre
aus Kompatibilitätsgründen mitgeschleift wurden, heutzutage allerdings keine Rolle mehr
spielen, bei Postfix von Entwicklungsbeginn an außen vor gelassen werden. Dies führt zu einer
kompakteren, kleineren und sichereren Installation, ohne die Flexibilität und Möglichkeiten
des Postfix-Systems einzugeschränken. Im Grundpaket nicht enthaltene Features können über
die modulare Struktur jederzeit eingebunden werden. Als eine für das neue Konzept besonders
Michael Schrüfer
Matnr.: 2667118
Seite 14 von 38
hervorzuhebende Partner-Komponente ist AMaViS zu nennen. Sie übernimmt einerseits die
Prüfung auf Viren und potentiell schädlicher Dateianhänge, sowie andererseits die
contentbasierte Spamprüfung. Dabei greift AMaViS auf bestehende Softwarepakete wie
Spamassassin oder ClamAV zurück. Neben ClamAV, der sich als freier Virenscanner auch im
professionellen Umfeld etabliert hat, bietet AMaViS Schnittstellen zu allen gängigen
Virenscannern. Auf die übrigen für die SPAM Bekämpfung relevanten Bestandteile der Lösung
wird im weiteren Verlauf genauer eingegangen.
Da die in den Paketquellen zur Verfügung gestellte Version alle benötigten Features enthielt,
konnte auf eine manuelle Übersetzung und Installation des Quellcodes verzichtet werden.
Durch die Verwendung des Paketverwaltungssystems „Advanced Packaging Tool“ (APT)
gestaltete sich die Installation neuer Bestehender sowie die Instandhaltung bestehender
Pakete einfacher. Neben der automatischen Auflösung von Paketabhängigkeiten während der
Installation erleichtert es insbesondere das Einspielen von Updates und neuen Versionen und
somit die Wartung der Softwareinstanz. Die Installation des Basis-Mailserverpakets „Postfix“
konnte zeitnah abgeschlossen werden, da die im Paket hinterlegten Standardangaben wie
Pfadangaben ohne manuelle Anpassung übernommen werden konnten. Die von der
Distribution vorgeschlagene Konfiguration wurde hingegen komplett verworfen und durch
eine eigene ersetzt, um ein perfekt an die Anforderungen angepasstes System zu aufzubauen.
Die Postfix Grundkonfiguration ist auf 2 Dateien aufgeteilt. Das Verhalten des Systems wird
durch entsprechende Variablenzuweisungen in der Datei „main.cf“ verwaltet. Zu Beginn sind
hier lediglich Angaben zum Mailsystem selber, wie z.B. der Hostname, das vertrauenswürdige
Netzwerk oder die eigene Domain enthalten. Im weiteren Verlauf werden insbesondere
Parameter zur Spambekämpfung diese Datei erweitern. Das zweite File dient zur
Konfiguration des Postfix-Masterprogramms (master). Es ist für die Überwachung, Steuerung
und Koordination der einzelnen Postfix-Komponenten zuständig und nimmt somit eine
zentrale Stellung im Postfix-System ein. Nach jedem Konfigurationsschritt wurde die korrekte
Funktionalität des Systems getestet. Bereits in diesem frühen Stadium erfolgten Tests zur
Erreichbarkeit des SMTP-Dienstes (TCP / 25) und zur Zustellung von Mails an zu Testzwecken
eingerichtete lokale Postfächer. Besonderes Augenmerk wurde dabei auf das zuverlässige
Blocken von E-Mails, die nicht an eigene Domains adressiert sind, gelegt. Auch wenn Postfix
selber Schutzmechanismen bereitstellt, um das Verhalten als sogenanntes Open Relay zu
verhindern, müssen insbesondere Parameter zur Freigabe bestimmter Funktionen genau
geprüft und anschließend getestet werden. Das Mailrouting, also die Weiterleitung und
Zustellung von E-Mails, wird im Internet grundsätzlich durch die Einrichtung von MX-Records in
den DNS Zonen definiert. Dieses Prinzip funktioniert bei einem Mailrelay nicht, da es nach
außen selbst als MX für die Zone konfiguriert ist. Es müssen demnach zusätzliche
Informationen auf dem Relay hinterlegt werden, anhand derer es entscheiden kann, wohin die
Mail endgültig zuzustellen ist. Um diese Entscheidungen treffen zu können, kennt Postfix das
Konzept der Lookup Tables. In diesen einfach aufgebauten, in Tabellenform gehaltenen
Textdateien wird in der linken „Spalte“ ein Wert definiert, für den die in der rechten „Spalte“
definierte Aktion ausgeführt wird. Um nun den Weg einer E-Mail festlegen zu können, muss
zunächst die Empfangsdomain als „relay_domain(s)“ dem Postfix System bekannt gemacht
werden. Andernfalls würde der SMTP-Daemon die Annahme der Mail verweigern. Im zweiten
Schritt ist der eigentliche Transportweg via „transport_maps“ festzulegen. Da beide
Michael Schrüfer
Matnr.: 2667118
Seite 15 von 38
Konfigurationsparameter dasselbe Textformat erwarten, können beide auf die gleiche, einzige
Datei zeigen, was die Wartung und Pflege vereinfacht.
transport_maps = hash:/etc/postfix/lookup/transport,
hash:/etc/postfix/lookup/relay_domains
relay_domains = hash:/etc/postfix/lookup/relay_domains
$ cat /etc/postfix/lookup/relay_domains
# Domain
Eigentliches Ziel (Groupware System)
mydomain.de
:[192.168.0.25]
mydomainXY.de
:[192.168.0.25]
mydomain2.de
:[192.168.0.111]
…
Die grundlegende Funktionalität des Mailhubs ist damit bereits sichergestellt. Mails werden
über das SMTP Protokoll entgegengenommen und anhand der Zieldomain an das im internen
Netzwerk befindliche Groupware System weitergeleitet. Die weiteren Konfigurationsarbeiten
dienen insbesondere zur SPAM- und Virenabwehr sowie zur Absicherung des Systems und der
E-Mail Kommunikation. Auch in diesen Bereichen bringt Postfix schon von Haus aus eine Fülle
an nützlicher Funktionen mit. Die Reihenfolge der nachfolgenden Prüfungen entspricht der
Abarbeitung dieser im Verlauf des SMTP Dialogs bei der Einlieferung einer E-Mail (Abbildung
3.3.a) . Dabei ist das Ziel, CPU-Intensive Prüfvorgänge wie Content Filtering so spät, und damit
so selten wie möglich, ausführen zu müssen. Durch sehr einfache und schnelle Tests soll der
größte Teil der SPAM Mails bereits beim Eintreffen abgelehnt oder verworfen werden. Die
erste, noch relativ junge - da erst mit der Postfix Version 2.8 eingeführte - Sammlung von
Checks greift diesen Ansatz auf, und versucht als eine Art Türsteher für Postfix einliefernde
Mailserver als Zombie oder Spambot zu enttarnen, bevor knappe Rechenressourcen
verschwendet werden. Ausschlaggebend für die Entwicklung dieser Werkzeuge war die
Erkenntnis, dass über 95 % des SPAM-Aufkommens durch Botnetze verursacht wird. Diese
bestehen aus gehackten Rechnern, die ohne Wissen des Anwenders zum SPAM Versand
missbraucht werden. Die auf den „Opfer-PCs“ installierte Schadsoftware ist darauf ausgelegt,
möglichst viele Mails in möglichst kurzer Zeit zu versenden. Da das SMTP Protokoll diesem
Ansatz nicht entspricht, haben sich Methoden etabliert, die das Verhalten des sendenden
Mailservers analysieren und danach ihre Entscheidung treffen. Als besonders effektiv hat sich
das Verzögern der Begrüßungsnachricht herausgestellt. Während ein richtig konfigurierter
einliefernder Mailserver auf die „Begrüßung“ durch den Mailserver wartet, nimmt ein
Spambot darauf keine Rücksicht, sondern versucht, die Nachricht sofort zuzustellen. Erkennt
Postfix diesen übereifrigen Zustellungsversuch, bricht es die Übertragung umgehend ab.
postfix/postscreen[12032]: PREGREET 16 after 0.88 from [x.x.x.x]:53687: helo wwwSrv004
postfix/postscreen[12032]: DISCONNECT [x.x.x.x]:53687
Gleich verhält sich Postfix, wenn durch Postscreen Verstöße gegen das SMTP Protokoll erkannt
werden. Als Verstoß wird dabei das Absenden unbekannter, nicht im Protokoll definierter
Befehle gewertet. Aus Sicht des zustellenden Mailservers bzw. des Bots wird die Verbindung
hart und permanent mit einem 5xx Fehlercode abgebrochen. Sobald jedoch die PostscreenMechanismen einmal erfolgreich und ohne Beanstandung durchlaufen wurden, wird das
Ergebnis zwischengespeichert, sodass bei nachfolgenden Verbindungsaufbauten die Prüfungen
kein zweites Mal durchlaufen werden müssen. Um Postscreen als Türsteher vor dem Postfix
SMTP Modul zu betreiben, müssen eingehende Anfragen auf Port 25 an Postscreen
weitergeleitet werden. Dazu wird lediglich das Modul smtpd durch postscreen in der master.cf
ersetzt. Nach einem Neustart des Postfix-Dienstes ist Postscreen nun die erste Anlaufstelle für
Michael Schrüfer
Matnr.: 2667118
Seite 16 von 38
eingehende SMTP Verbindungen. Da Postscreen die Postfix-Standard-Tests nur erweitert und
nicht ersetzt, mussten im nächsten Schritt die Postfix Mechanismen zur Abwehr
unerwünschter Mails konfiguriert werden. Zentrales Instrument dafür stellen die
smptd_restrictions dar. Für jeden Schritt im SMTP Dialog existiert eine entsprechende
Restriction, die die zum jeweiligen Zeitpunkt zur Verfügung stehenden Daten auswertet, und
definierte Aktionen ausführen kann. Direkt nach dem Connect auf Port 25 werden die
smtpd_client_restrictions durchlaufen. Da zu diesem Zeitpunkt lediglich die IP Adresse des
entfernten Systems zur Verfügung steht, kann diese als einziges Prüfkriterium verwendet
werden. smtpd_halo_restrictions und smtpd_sender_restrictions sind den
smtpd_client_restrictions nachgelagert, und bieten auf Grund dem Mehr an Informationen
erweiterte Filtermöglichkeiten. Da der Rechen- und Zeitaufwand zwischen den einzelnen
Schritten des SMTP Dialogs zu vernachlässigt werden kann, bot sich an, alle restrictions unter
den smtpd_receipient_restrictions zusammenzufassen. Diese werden nach Absetzen des „rcpt
to:<…>“ Kommandos durchlaufen. Neben der IP Adresse kann nun auch der HELO Namen des
Clients, die Absender- sowie Empfängeradresse zur Prüfung herangezogen werden. Die Checks
innerhalb des Abschnitts werden so lange durchlaufen, bis einer eindeutig OK oder REJECT als
Ergebnis liefert. Da die Reihenfolge der Regeln also eine Rolle spielt, wurden diese bewusst
den Anforderungen an Sicherheit, Flexibilität und Rechenzeit angepasst gewählt. Dabei sind
die grundlegenden Regelkonzepte permit_* und reject_* zu nennen. Eine permit_* - Regel
kann nur ein OK liefern und so z.B. zum Whitelisten angewendet werden. Das Blacklisten oder
manuelle Blocken von Clients wird über die reject_* Prüfungen realisiert. Diese liefern stets ein
REJECT bei Erfüllen der Prüfbedingung. Daraufhin wird die Kommunikation permanent mit
einem 5xx Fehler abgebrochen. Generell sind die permit_*- Checks bzw. das Whitelisting mit
größerer Sorgfalt und Abwägung einzusetzen, da sie unter Umständen Absendern
unerwünschter Massenmails Türen öffnen. So sollte z.B. eine Prüfung auf die Empfangsadresse
nie ein endgültiges OK liefern. Wohingegen die Freigabe einer einzelner, vertrauenswürdiger IP
Adresse durchaus Sinn macht und die Verarbeitung beschleunigt. Das im LAN stehende
Groupware-System erfüllt diese Vorgabe. Da die hausintern erstellten Mails als
vertrauenswürdig eingestuft werden können, kann auf eine tiefergehende, detaillierte und
damit auch zeitaufwendige Prüfung verzichtet werden. Allerdings sollen die Mails auch nicht
ganz ohne Prüfung „blind“ weitergleitet werden. Denn auch für interne Mail-Verfasser gibt es
keinen Grund, eine E-Mail an eine nicht existierende Empfangs-Domain zu senden. Neben
diesen eher statischen REJCT-/PERMIT-Checks haben sich in den vergangenen Jahren auch
dynamische, von externen Daten abhängige Prüfmechanismen etabliert. Dazu zählen
insbesondere die Realtime Blackhole Lists (RBL), die ihre Entscheidungen zur Filterung auf
Grund im DNS hinterlegten Informationen treffen. Der Anbieter einer Blackhole List pflegt
dafür eine spezielle Reverse Lookup Zone, die alle als SPAMer enttarnten Mailserver inklusive
Hostnamen enthält. Damit der prüfende Mailserver die Entscheidung „blocken oder nicht
blocken“ treffen kann, muss er selbst zunächst eine DNS Abfrage stellen. Liefert diese Abfrage
einen Hostnamen, so ist der Mailserver gelistet und als Ausgangspunkt für SPAM-Mails
eingestuft worden. Ist dies nicht der Fall, gibt der DNS Server ein <unknown> zurück. Die
Integration erfolgt direkt in den Abschnitt der smtp_receipient_restrictions durch das
Schlüsselwort reject_rbl_client und der Angabe des DNS Servers. Für den als vertrauenswürdig
eingestuften Mail-Verkehr werden diese Regeln bereits nicht mehr durchlaufen, da der Fall,
dass unser Groupware System mit priv. IP Adresse und internem FQDN (Fully Qualified Domain
Name) auf einer Blacklist steht, nicht eintreten wird, sodass man sich die Zeit zur Prüfung
Michael Schrüfer
Matnr.: 2667118
Seite 17 von 38
sparen kann. Da Postfix als Mailhub keine Informationen über existierende Postfächer besitzt,
muss er alle Mails an die Relay Domain annehmen. Erst bei der Weiterleitung an das
Groupware System wird festgestellt, ob das Postfach überhaupt existiert und die Mail einem
Anwender zugestellt werden kann. Dies bereitet kein Problem, so lange das Postfach auf dem
Groupware System existiert, da Postfix die Weiterleitung der Mail an das GroupwareSystem
erfolgreich quittiert bekommt. Existiert jedoch das Postfach nicht, wird die Weiterleitung mit
einem permanenten Fehler 5xx (user unknown) abgelehnt. Da Postfix die Zustellung
gegenüber dem einliefernden Mailserver bereits mit 2xx (erfolgreich) bestätigt hat, muss eine
Bounce Mail an den Absender gesendet werden, um Ihn über die fehlgeschlagene Zustellung
zu informieren. Dies ist allerdings äußerst problematisch, da so gut wie alle Absenderadressen
von SPAM gefälscht sind. Im besten Fall existiert die Absender-Adresse nicht, und die E-Mail
wird verworfen. Ist die Absenderadresse jedoch einem existierenden, fremden System
zugeordnet, wird dieses durch die Bounce Nachrichten unnötig belastet (Backscatter Problem).
Die selbstlernende Empfängerverifizierung behebt dieses Problem, indem es vor der
erfolgreichen Bestätigung an den einliefernden Mailserver die Existenz des Postfachs am
nachgelagerten Postfachspeicher prüft. Dies erfolgt durch eine einfache SMTP Abfrage an den
eigentlichen Zielserver. Bestätigt dieser die rctp to: <ADRESSE> Anfrage mit 2xx, ist
sichergestellt, dass das Postfach existiert und der Zielserver die Mail auch annehmen wird.
Wird die Abfrage mit einem Fehler zurückgewiesen, ist auch die eigentliche E-Mail nicht
zuzustellen und wird deswegen noch während des SMTP-Dialogs mit dem einliefernden
Mailserver abgelehnt. Neben der Empfängerverifizierung stellt Postfix auch eine
Absenderverifizierung zur Verfügung. Hier wird nicht die rcpt to:<>, sondern die mail from:<>
Adresse geprüft. Auf diese Verifizierung wurde jedoch bewusst verzichtet, da sie im Gegensatz
zur Empfängerverifizierung nicht immer zuverlässig funktioniert z.B. wenn die Abfrage durch
Greylisting am entfernten MTA zurückgehalten wird, und daher mehr Probleme verursacht, als
sie Vorteile bringt.
Übersteht die Kommunikation diesen Test, werden die bisher übermittelten Daten (Envelope),
wie IP Adresse oder Hostname des einliefernden MTA, sowie Absender- und Empfangsadresse
an 2 externe Dienste übergeben, deren Rückgabeergebnisse von Postfix ausgewertet und zur
Entscheidungsfindung herangezogen werden. Beide Dienste wurden daher lokal auf
demselben Server installiert. Als erstes wird dadurch der SMTP Dialog auf Plausibilität geprüft.
Einzelne Checks wie z.B. die korrekte Rückwärtsauflösung der IP Adresse und die
Übereinstimmung mit Host- und HALO-Namen werden gewichtet und zu einem
Gesamtresultat aufsummiert. Übersteigt der Wert eine definierte Grenze, wird die E-Mail als
SPAM bewertet und durch Postfix abgewiesen. Diese Funktionalität stellt der Daemon
„policyd-weight“ für Postfix zur Verfügung. Sowohl dieser, als auch der Greylisting Daemon
lauschen auf TCP Ports, die fest an die eigene Loopbackadresse gebunden und via
check_policy_service in Postfix integriert sind. Auch Greylisting ist ein sehr effektives
Werkzeug zur SPAM-Abwehr. Dieses Verfahren setzt ganz bewusst auf die zeitliche
Verzögerung einer E-Mail. Beim Eintreffen einer E-Mail wird das Triple aus Absender-IP,
Absender- sowie Empfangsadresse mit vorhandenen Einträgen einer kleinen Datenbank
abgeglichen. Ist der Eintrag noch nicht vorhanden, wird die Mail mit einem temporären 4xx
Fehler abgewiesen, und die 3 Angaben in der Datenbank hinterlegt. Jeder korrekt konfigurierte
einliefernde Mailserver besetzt eine Queue, in der die aktuell nicht zustellbaren Nachrichten
zwischengespeichert werden. Diese wird in regelmäßigen Abständen geprüft, und für die darin
Michael Schrüfer
Matnr.: 2667118
Seite 18 von 38
enthaltenen Mails ein erneuter Zustellungsversuch gestartet. Trifft die E-Mail nun ein zweites
Mal auf den Greylisting-Daemon, ist das Tripel in der Datenbank bekannt, und wird ohne
Beanstandung an die nächste Prüfinstanz weitergeleitet. Dieses Verfahren sortierte in den
vergangenen Jahren einen Großteil der unerwünschten Botschaften aus, da SPAMer keinen
Wert auf die zuverlässige Übermittlung einer Nachricht legen, und keine Queue pflegen.
Realisiert wird das Greylisting unter Postfix durch den aus MTA-Sicht ebenfalls externen Dienst
postgrey. Hervorzuheben ist, dass all diese Prüfungen noch vor der Übermittlung des
eigentlichen Inhalts der E-Mail stattfinden. Auf Grund der geringen zu analysierenden
Datenmenge können diese Schutzmechanismen sehr schnell und ohne lange Rechenzeit
durchgeführt werden. Dennoch sind sie so effektiv, dass ein Großteil unerwünschten Mails
ausgesondert wird. Erst nach positivem Durchlauf all dieser Checks kann vom Client das SMTP
DATA Kommando abgesetzt werden. Darauf folgt der eigentliche Inhalt der E-Mail. Dieser setzt
sich aus einem Header- und Bodyteil zusammen. Während die Daten im Header-Teil Angaben
zum Weg der E-Mail, zum Absender sowie zum Empfänger enthalten, ist im Body-Teil der vom
Sender verfasste Text inkl. angehängter Dateien zu finden. Insbesondere die Anhänge bergen
ein weiteres Problem. Da eine große Anzahl von E-Mails in kurzer Zeit an sehr viele Empfänger
versendet werden kann, wird das Kommunikationsmedium E-Mail immer wieder zur
Verbreitung von Viren und sonstiger Schadsoftware missbraucht. Damit diese Programme erst
gar nicht das interne Netzwerk erreichen, sollen sie schon an der ersten Kontaktstelle, dem
Mailhub in der DMZ eliminiert werden. Für diese Aufgabe bietet sich gerade im Postfix-Umfeld
die Software AMaViS (A Mail Virus Scanner) an, die neben einem Virenscanner auch den
mächtigen Spam-Filter SpamAssassin integriert. Wie auch die 2 bereits vorgestellten „Helfer“
policyd-weight und postgrey läuft AMaViS als Daemon und bindet sich per Default an TCP Port
10024. Die Integration in Postfix kann auf 2 Arten erfolgen. Zunächst die etwas veraltete
Möglichkeit „Post-Queue“ über die Postfix-Option „content_filter“, bei der Postfix die E-Mail
entgegennimmt, dem einliefernden MTA dies erfolgreich quittiert, zwischenspeichert, und
anschließend an AMaViS übergibt. Ein Problem entsteht bei dieser Variante dann, wenn der
Mail Scanner die E-Mail als „zu Blocken“ klassifiziert. Da die Kommunikation zwischen Postfix
und AMaViS über SMTP erfolgt, bricht AMaViS die Kommunikation in einem solchen Fall mit
einem permanenten 5xx-Fehler ab. Nun entsteht das gleiche Problem, wie bei der EmpfängerVerifizierung. Postfix befindet sich in einer Zwickmühle, denn einerseits hat es die Annahme
der E-Mail gegenüber dem entfernten, einliefernden Mailserver erfolgreich quittiert, und ihm
gegenüber die Nachricht akzeptiert, andererseits soll es die E-Mail laut Prüfung des Mail
Scanners verwerfen. Das daraufhin notwendige Senden der Bounce-Nachricht soll auf Grund
der bereits erwähnten Probleme vermieden werden. Auf Grund dieses Mangels wurde die
Integration nicht mit dem „Store and Forward“ Prinzip, sondern mit der Weitergabe der Mail
an AMaViS in „Echtzeit“, umgesetzt. Hierbei bleibt die SMTP Verbindung zwischen Postfix und
dem einliefernden MTA so lange offen, bis Postfix das Filter-Ergebnis von AMaViS
zurückbekommen hat. Dieses als Pre-Queue bezeichnetes Verfahren wird in Postfix über die
Option „smtpd_proxy_filter“ (smtpd_proxy_filter=localhost:10024) realisiert. Da die
gesamte Kommunikation zwischen Postfix und AMaViS über SMTP abgewickelt wird, benötigt
AMaViS einen Rückweg, um die Mail zurück an Postfix zu liefern. Würde AMaViS die Nachricht
wieder an den Standard Postfix SMTP-Port TCP 25 zustellen, würde sich eine Endlosschleife
ergeben. Deswegen muss Postfix noch einen 2ten SMTP Port öffnen, über die AMaViS die EMail wieder zurückliefern kann. Meist wird hier der TCP Port 10025 (localhost:10025 inet
… smtpd) verwendet, der nur vom Mailserver (bzw. AMaViS) aus angesprochen und nur für
Michael Schrüfer
Matnr.: 2667118
Seite 19 von 38
diesen einzigen Zweck bereitgestellt wird. Dabei wird sichergestellt, dass die oben erwähnten,
zu diesem Zeitpunkt bereits durchlaufenen smtp_receipient_restrictions-Checks kein 2tes Mal
abgearbeitet werden müssen. Wie auch bei den bisher vorgestellten Diensten, konnte die
AMaViS Installation durch die von der Distribution bereitgestellten Debian-Paketen erfolgen.
Dadurch konnten die benötigten Pakete und deren Abhängigkeiten automatisch aufgelöst und
mitinstalliert werden. Dazu zählt insbesondere SpamAssassin als Content-Scanner, ein
Virenscanner sowie Programme zum Entpacken der zu prüfenden Anhänge. Die eigentliche
Konfiguration des in Perl geschriebenen AMaViS Dienstes erfolgt durch Variablenzuweisung
innerhalb der AMaViS Konfigurationsdateien. Zunächst mussten die AMaViS
Grundfunktionalitäten Inhalt- und Virenfilterung aktiviert werden, bevor der installierte
Virenscanner in AMaViS bekannt gemacht und eingestellt werden konnte. Um den
konfigurierten Scanner ansprechen zu können, stellt AMaViS bereits vordefinierte
Schnittstellen zu den am weitesten verbreiteten Scannern bereit. Zur Prüfung des Inhalts einer
E-Mail greift AMaViS auf den bekannten Content-Filter SpamAssassin zurück. Dieser analysiert
die E-Mail durch verschiedenste Tests. Dabei wird das gleiche Konzept, wie bereits bei policydweight vorgestellt, angewendet. Jeder separat gewichtete Einzeltest wird auf den Inhalt
angewendet und ausgewertet. Die Summe der Werte der zutreffenden Tests wird als Score an
AMaViS zurückgeliefert. In AMaViS wird festgelegt, was mit der Mail bei entsprechendem
Score passieren soll. Neben dem unveränderten Weiterleiten, Verwerfen, Blocken oder
Zurückweisen mit Benachrichtigung (bouncen) einer Mail kann die Nachricht „getagged“
werden. In diesem Fall fügt AMaVis vor dem ursprünglichen Betreff einen zu definierenden
String ein. Aus dem Betreff „Termin kommende Woche“ wird so z.B. „ ***SPAM*** Termin
kommende Woche“. In diesem Setup hat man sich allerdings bewusst gegen das Markieren
von Mails entschieden. Sobald eine E-Mail als SPAM eingestuft wird, soll sie sauber abgelehnt
werden. Liegt der von Spamassassin ermittelte Score unter der definierten Grenze, wird sie
anstandslos zugestellt. Ein „dazwischen oder vielleicht“ verunsichert den Anwender mehr, als
es hilft. Auch die Funktion, den Absender über die Ablehnung zu informieren (bounce) sollte
wegen gefälschter Absenderadressen und der erwähnten Backscatter-Problematik nicht
verwendet werden. Neben der Inhalts- und Virenprüfung unterstützt AMaViS das Blocken
potentiell gefährlicher Dateianhänge wie .exe oder .msi Dateien. Der Dateityp wird dabei nicht
durch die Dateiendung, sondern durch das Tool „file“ ermittelt. Im Gegensatz zu den anderen
2 Prüfungen traf man die Entscheidung, die Empfänger der E-Mail über das Blocken zu
informieren. Die Option zur Benachrichtigung des Absenders bleibt jedoch auch bei geblockten
Anhängen deaktiviert. Wird ein Virus oder ein definierter Dateianhang erkannt, so wird immer
die gesamte Mail verworfen. Das Entfernen des u.U. schädlichen Anhangs wird nicht
unterstützt. Schlägt einer der genannten Prüfungen an, bricht AMaViS die SMTP
Kommunikation mit dem Postfix Prozess permanent mit 5xx-Fehlercode ab. Daraufhin beendet
Postfix den noch offen gehaltenen Dialog mit dem einliefernden MTA. So wird auch diese
Verbindung sauber getrennt, und das Senden einer problembehafteten Bounce Nachricht
entfällt. Wird hingegen keine Beanstandung gefunden, gibt AMaViS die Mail an den
Postfixservice auf dem separat eingerichteten Port zurück. Das Ergebnis der Tests hinterlegt
AMaViS im Header der E-Mail. Eingehende Mails auf diesem „Rückgabeport“ sind von der
SPAM- und Virenprüfung ausgeschlossen, und werden direkt weitergeleitet bzw. zugestellt.
Dies erfolgt an Hand der manuell konfigurierten Transport Map, in der die IP des Groupware
Systems für die entsprechende Ziel-Domain hinterlegt ist. Dort wird die Mail im
entsprechenden Benutzerpostfach abgelegt. Der Anwender kann nun über die verschiedenen
Michael Schrüfer
Matnr.: 2667118
Seite 20 von 38
Protokolle, wie POP3 oder IMAP auf die in der Datenbank abgelegten Nachrichten und
Informationen zugreifen. Für den Mailversand, ausgehend vom Groupware System wurde auf
diesem ebenfalls eine Transportregel eingerichtet, die alle Mails an den Mailhub zustellt.
3.4. Test und Inbetriebnahme
Als abschließende Prüfung wurde der gesamte Mailfluss getestet. Dabei wurde sowohl das
Weiterleiten, als auch das korrekte Blocken in verschiedenen Konstellationen überprüft.
Speziell präparierte E-Mails (EICAR Testvirus) wurden von AMaViS korrekt erkannt und
verworfen. Parallel dazu erfolgte die Überwachung und Analyse des Logfiles auf Fehler oder
Anomalien. Um die Aufgabe der Loganalyse und -auswertung komfortabel erledigen zu
können, wird die Datei einmal pro Tag von dem Tool pflogsumm durchsucht. Es sammelt u.a.
Informationen über die Anzahl der empfangenen sowie zugestellten E-Mails, sowie über Fehler
des Systems und stellt diese in einem übersichtlichen Bericht dem Administrator per Mail zur
Verfügung. Die Inbetriebnahme des Systems steht derzeit noch aus. In einer Übergangsphase
soll das neue System parallel zum alten betrieben werden. Dabei wird der Hostname des
neuen Systems mit einer Priorität von 20 als MX den entsprechenden DNS Zonen hinzugefügt.
Die alte Installation bleibt als MX mit einer Priorität von 10 am DNS Server bestehen. Nach
weiteren Tests soll die Sendmail-Instanz abgeschaltet werden. Für die einliefernden Systeme
erscheint danach die aktuelle Postfix-Installation als präferierter Mailserver, dem die Mails zur
endgültigen Zustellung übergeben werden.
Michael Schrüfer
Matnr.: 2667118
Seite 21 von 38
4. Erleichterung der Administration des Mailhubs
Ein Grund für die Ablösung des Sendmail-Mailhubs war die komplizierte Konfiguration und
aufwendige Wartung der veralteten Software. Die Situation konnte durch die Umstellung auf
Postfix/AMaViS bereits deutlich verbessert werden. Die Konfiguration des MTA (Mail Transfer
Agent) beschränkt sich auf 2 sehr gut dokumentierte Dateien. Das Verhalten zur Weiterleitung,
Umschreibung, Black- sowie Whitelisting kann durch sehr einfach strukturierte Lookup Tables
angepasst werden.
4.1. Aufgabendefinition
Trotz der Erleichterungen, die durch die Umstellung der Software erreicht wurden, stellt die
Verwaltung des Systems einige Administratoren vor Probleme. Insbesondere wenn die
Wartung nicht zum Alltagsgeschäft, sondern z.B. nur im Vertretungsfall übernommen werden
muss, erscheint die Konstellation und das Zusammenspiel der verschiedenen Komponenten
äußerst komplex. Dazu kommt die Vielzahl der, von Postfix zur Verfügung gestellten Tools,
insbesondere zur Verwaltung der Mail-Queues. Das richtige Programm für die jeweilige
Aufgabe zu finden und anzuwenden, gestaltet sich trotz Bedienungsanleitung oft schwierig.
Aus diesen Gründen sollen einfach strukturierte, dialogbasierte Skripte geschaffen werden,
über die man die wichtigsten Aufgaben, auch ohne tiefes Verständnis der Software erledigen
kann. Hauptaugenmerk soll dabei auf die Implementierung von Funktionen zur QueueVerwaltung und zum Notfallmanagement gelegt werden. Eine weitere
Administrationsschnittstelle soll die Pflege der Black- und Whitelists, sowie die Anzeige der
Logdateien erleichtern. Hierfür soll dem Administrator größtmöglicher Komfort geboten und
die Bedienung nach Möglichkeit ohne Kommandozeilenkenntnisse ermöglicht werden. Dabei
sollen die Erleichterungen unter keinen Umständen zu einer Beeinträchtigung der
Systemsicherheit führen. Diese hat immer an erster Stelle zu stehen, da das System direkt vom
Internet aus kontaktiert werden muss. Außerdem sollen, wie im gesamten bisherigen
Projektverlauf, keine Lizenzkosten entstehen. Präferiert wurde die Verwendung einer
bestehenden Lösung, die um einzelne, projektbezogene Aspekte erweitert werden kann.
4.2. Analyse der am Markt existierende Lösungen
Auf Grund der weiten Verbreitung der implementierten Postfix/AMaViS Lösung sollten
zunächst existierende Administrationsskritpe und –masken auf ihre Tauglichkeit geprüft
werden. Für die Administration eines Postfix-Mailservers mit einfacher und überschaubarer
Konfiguration waren diverse Lösungen schnell ausfindig gemacht. Diese basieren zu einem
großen Teil auf einer in Skriptsprachen wie Perl oder PHP geschriebenen Webschnittstelle.
Konfigurationsparameter und –informationen werden in der Regel in einer (MySQL)
Datenbank gespeichert. Bei Recherchen stellte sich das Webinterface „PostfixAdmin“ als die
am weitesten entwickelte, komfortabelste Lösung heraus. Es war allerdings schnell erkennbar,
dass die Funktionalität aller Web-Schnittstellen an den Anforderungen vorbeiging. So boten
diese zwar äußerst nützliche Möglichkeiten zur komfortablen Konfiguration eines Postfix
Mailservers mit lokalen Postfächern, mehreren Domains, Weiterleitungen usw. Leider fehlten
dafür aber grundlegende Fähigkeiten zur Verwaltung der Mailhub-spezifischen Funktionen.
Dazu bot keine der betrachteten Lösungen die Integration der verschiedenen Komponenten
und Programme wie Postscreen oder Postgrey unter einem einheitlichen Userinterface. Im
AMaViS Umfeld stellt sich die Situation besser dar. Das Web Frontend „WebAvis“ bot alle
Michael Schrüfer
Matnr.: 2667118
Seite 22 von 38
geforderten Funktionalitäten. Leider allerdings auch bedeutend mehr als nur diese, was die
Konfiguration entsprechend unübersichtlicher und auch riskanter für Fehler in der
Konfiguration macht. Das einzusetzende Interface soll lediglich Zugriff auf ausgewählte,
insbesondere für die Sicherheit des Systems unkritische Konfigurationsmöglichkeiten bieten,
sodass es ohne Gefahr auch von nicht explizit geschultem Personal bedient und verwendet
werden kann. Durch die Abschätzung des Aufwands zur Anpassung der existierenden Lösungen
wurde dieser Ansatz zu Gunsten einer Eigenentwicklung verworfen. Ähnlich verhielt es sich bei
den konsolenbasierten Skripten. Bis auf das Tool „qtop“ von Peer Heinlein zur Überwachung
der verschiedenen Queues, war kein Tool für die projektspezifische Umsetzung geeignet, ohne
nicht gleichzeitig die Komplexität übermäßig zu steigern.
4.3. Implementierung konsolenbasierte Skripte
Postfix bringt zur Verwaltung der Mailqueues und Lookup Tables von Haus aus diverse
Programme mit, die den gesamten benötigten Funktionsumfang abdecken. Nicht immer
einfach zu entscheiden ist allerdings, welches Programm, mit welchen Parametern für welche
Aufgabe aufzurufen ist. Hier sollen die Verwaltungsskripte ansetzen und einen Weg für die
Analyse und Lösung der am häufigsten auftretenden Probleme vorgeben. Um dem
Administrator einen möglichst einfachen Zugang zu den einzelnen Funktionen zu ermöglichen,
sind alle über den einzigen Befehl „mailadmin“ erreichbar. Die jeweilige Aktion wird durch
darauf folgende Argumente bestimmt. Bei fehlenden oder fehlerhaften Argumenten wird ein
Hilfetext mit den gültigen Argumenten ausgegeben(Abbildung 4.3.a). Da für einen Großteil der
zur Verfügung gestellten Methoden nur existierende Systemprogramme im Hintergrund
aufgerufen werden, stellte sich die Skriptsprache bash als die am geeignetste
Programmiersprache heraus. Während einfach zu implementierende und vom Code-Umfang
kleine Funktionen direkt in das Skript mailadmin aufgenommen wurden, wurden die
umfangreichen Methoden zur Queue- und LookupTable-Verwaltung in eigene Skripte
ausgelagert, die im Hauptskript (mailadmin) lediglich aufrufen werden. Um die Änderungen in
einem LookupTable für Postfix zu aktivieren, muss die Text- in eine Hashdatei gewandelt
werden. Bei vielen Änderungen in den verschiedenen Textfiles kann dies schnell
unübersichtlich werden, wodurch die Gefahr besteht, eine Datei zu vergessen. Das „Teil-“
Skript postall.sh sammelt die Pfade zu allen Textdateien, und führt auf jeder separat den
Befehl zum Erzeugen der Hash-Datei aus. Um sicherzustellen, dass Änderungen an den
Textdateien nach einem kompletten Neustart aller E-Mail Dienste übernommen werden, ist
das postall.sh Skript der Funktion zum koordinierten Neustart vorangestellt. Um einen
Überblick über aktive Dienste und die Verfügbarkeit dieser zu erhalten, existiert das Skript
mailstatus.sh. Dieses prüft die Verfügbarkeit der für den Mailfluss relevanten Dienste und gibt
den Status gesammelt aus. Dabei wird sowohl der Prozess als auch der Port, auf dem derselbe
lauscht abgefragt. Teile dieses Skripts werden auch für die im vorangegangenen Abschnitt
erwähnte Überwachung via Nagios eingesetzt. Um eine direkte Rückmeldung über den Erfolg
bzw. Misserfolg des Neustarts der Dienste zu erhalten, wird das mailstatus.sh Skript im
Anschluss daran automatisch ausgeführt. Eine wichtige Kenngröße für den Zustand des
Mailservers, die in diesem Zusammenhang mit ausgegeben wird, ist die Auslastung der
Mailqueues. Alle via SMTP eingehenden Nachrichten landen zunächst in der IncommingQueue. Diese fungiert als eine Art Wartezimmer vor der Active-Queue, die nur eine gewisse
Anzahl von Elementen zum gleichen Zeitpunkt zulässt, um den Postfix Prozess nicht zu
überlasten. Kann eine E-Mail aus der Active Queue nicht zugestellt werden, landet sie in der
Michael Schrüfer
Matnr.: 2667118
Seite 23 von 38
deferred Queue. In regelmäßigen Abständen werden diese nicht zustellbaren Nachrichten
wieder in die Active Queue verschoben, um so einen weiteren Versuch zu starten. Durch den
Parameter maximal_queue_lifetime wird die maximale Lebenszeit einer nicht zustellbaren
Nachricht bestimmt. Insbesondere eine hohe Anzahl von Elementen in der „deferred-Queue“
ist ein Indikator für einen Fehler am System. Auf Grund dieser zentralen Stellung und
vielfältiger Steuerungs- und Verwaltungsmöglichkeiten der Queue(s) wurden die
entsprechenden Funktionen in das eigeständiges bash-Skript „qadmin“ ausgelagert. Nach dem
Start des Programms werden dem Anwender die möglichen Aktionen aufgelistet (Abbildung
4.3.b). Diese lassen sich grob in 2 Gruppen teilen. Ein Teil bezieht sich auf das Queue-System
selbst und hat Einfluss auf alle Mails in der Queue. Dazu zählt u.a. das „Flushen“
(Zustellungsversuche wiederholen) oder das Restrukturieren der Queue. Der andere Teil der
Aktionen bezieht sich auf ein spezielles Element innerhalb der Queue. Jede Mail in der Queue
ist eindeutig über die Message ID identifizierbar. Durch die Angabe dieser ID kann eine E-Mail
explizit neu zugestellt, zurückgehalten, gelesen oder auch gelöscht werden. Im Programm
erfolgt die Eingabe der ID nach der Auswahl einer entsprechenden Aktion. Abschließend wird
der neue Zustand der Queue als Übersicht auf der Konsole ausgegeben. Aus dem gleichen
Kontext kann das von Peer Heinlein entwickelte Tool qtop1, welches eine dem Unix Tool top
ähnliche Übersicht über den aktuellen Queuestatus liefert, aufgerufen werden. Neben den, auf
die Eigenschaften eines Mailservers bezogenen Funktionen, wurde in dem Mailadmin-Skript
auch eine Methode zur Aktivierung und Überprüfung des Firewallstatus integriert. Eine lokal
installierte Firewall ist für die Sicherheit des Systems unabdingbar. Der, auf der OSI Schicht 3
und 4 angesiedelte Paketfilter erlaubt nur die zwingend notwendige Kommunikation, um die
benötigte Funktionalität zu ermöglichen.
4.4. Implementierung einer php-Administrationsmaske
Da insbesondere die täglichen Routinearbeiten auch ohne tiefe Kenntnisse über die Bedingung
der Linux Konsole erfolgen können sollen, musste eine weitere Schnittstelle insbesondere für
den Zugriff auf Konfigurationsdateien geschaffen werden. Dabei soll allerdings nicht das
Konsolentool 1:1 auf eine andere Plattform portiert werden. Vielmehr soll der
Funktionsumfang durch eine 2te Applikation erweitert werden. Um zu vermeiden, dass sich
über das für jedermann zu bedienende Interface kritische Fehler in das System einschleichen,
wurden lediglich für die Systemsicherheit unkritische Funktionen implementiert. Für eine
tiefergehende Konfiguration des Systems sollen bewusst detaillierte Systemkenntnisse
vorausgesetzt werden.
Um die Anzeige der Webseiten zu ermöglichen, war es erforderlich, diverse Softwarepakete
auf dem Serversystem nachzuinstallieren. Dazu zählt insbesondere der Apache Webserver mit
php-Unterstützung. Im Hinblick auf zukünftige Funktionen wurde vorab schon eine MySQL
Datenbank direkt auf dem Server installiert. In ihr sollen alle für das E-MailSystem relevanten
Log-Einträge gesammelt werden. Eine komfortable Ausgabe zur Analyse derselben wird als
PHP Seite realisiert. Die Entwicklung der Administrationsmasken musste direkt auf dem
Mailsystem erfolgen, da dessen Administration, zumindest in Teilen in ihnen abgebildet
werden soll. Da jedoch die Funktionalität des fertigen Postfix-Mailhubs nicht durch Fehler oder
Funktionstests beeinträchtigt werden sollte, wurde ein Klon der virtuellen Maschine erzeugt.
1
Peer Heinlein: Das Postfix Buch. Sichere Mailserver mit Linux – S. 451
Michael Schrüfer
Matnr.: 2667118
Seite 24 von 38
So stand das System mit dem kompletten Funktionsumfang des Mailservers als Kopie zur
Verfügung. Auf dieser konnte die Entwicklung und die Tests ohne Beeinträchtigung des
produktiven Systems erfolgen. Des Weiteren wurde vor jeder Änderung einer
Systemkonfiguration ein Snapshot der virtuellen Maschine angelegt. Durch diese Funktionalität
konnte auf einfache Art und Weise eine fehlerhafte Konfiguration zurückgenommen werden.
Vor der Programmierung wurde auf Grund des Umfangs des Projekts eine Ordnerstruktur zur
Ablage der einzelnen Dateien angelegt. Insbesondere zur Organisation und besseren Übersicht
über die PHP Klassen war diese Strukturierung notwendig (Abbildung 4.4.a). Da keine weitere
Webanwendung über diesen Webserver betrieben werden soll, wurden die Ordner direkt im
Stammverzeichnis (www-root) des Apache Servers erstellt. Unmittelbar in diesem Verzeichnis
befinden sich neben der Startseite des Projekts 24 für die Funktionalität des Systems wichtige
Konfigurationsdateien. Eine entscheidende Rolle spielt die Datei „common.php“. Sie wird in
jedem direkt ausgeführten PHP Skript eingebunden. Über diese Datei wird sichergestellt, dass
absolute Pfade, alle Klassen sowie Funktionen gefunden werden. Die dafür notwendigen
Informationen bezieht sie aus den folgenden Dateien. Das PHP Element „settings.php“ enthält
systemweit gültige Definitionen von Konstanten. Dazu zählt u.a. der Name des Projekts, der
auf jeder Seite als HTML Titel verwendet werden soll, sowie die Informationen zum Herstellen
der Datenbankverbindung. Um den Zugriff auf referenzierte Dateien sicherzustellen, wurden
die projektrelevanten Pfadangaben in der „path.php“ hinterlegt. Die Datei
„includeAllClasses.php“ enthält Pfadangaben zu allen im System vorhandenen Klassen. Da
auch sie in die common.php eingebunden ist, ist die Erstellung von Objekten in jeder PHPDatei möglich, ohne die Klasse separat in jeder Datei bekannt machen zu müssen. Nach dem
Einbinden der 3 Dateien wird in der common.php ein global verfügbares MySQL DatenbankObjekt erstellt. Man erspart sich dadurch die Programmierung des Datenbankzugriffs in jeder
einzelnen Datei, und kann auf das global verfügbare DB-Objekt zugreifen. Der
Funktionsumfang wurde auf 2 Bereiche aufgeteilt (Abbildung 4.4.b). Der eine sollte ohne
Authentifizierung für jedermann zugänglich sein, der andere nur nach erfolgreicher Anmeldung
am System. Da das Ändern der Konfiguration nur durch berechtigtes Personal erfolgen können
soll, müssen die entsprechenden Seiten vor unberechtigtem Zugriff geschützt werden. Die
Elemente des öffentlich erreichbaren Bereichs beschränken sich auf die Seite zur
Benutzeranmeldung. Diese Seite nimmt eine besondere Stellung im System ein, da sie die
einzige von „außen sichtbare“ ist. Die von ihr bereitgestellte Funktionalität der
Benutzerauthentifizierung definiert zum Großteil die Sicherheit des Gesamtsystems. Um hier
so wenig Angriffsfläche wie möglich zu bieten, ist das Formular zur Eingabe der
Benutzerinformationen das einzig aktiv zu bedienende Element auf dieser Seite. Im Quellcode
wird diese Aufgabe in der Klasse „Login“ realisiert. Sie enthält sowohl die Methode zur
Ausgabe des Anmeldeformulars als HTML Seite, als auch die Methode zur Prüfung der
übergebenen Login-Daten, bestehend aus Benutzername und Kennwort. Diese Daten werden
beim Login mit den in einer bestimmten MySQL Tabelle abgelegten Benutzerinformationen
abgeglichen. Da die Textfelder zur Eingabe von Benutzername und Kennwort zunächst
ungeschützt von jedermann verwendet werden können, sind besondere Vorkehrungen zu
treffen, um zu verhindern, dass schadhafter Code in die Anwendung oder zur MySQL
Datenbank durchgereicht wird. Die von PHP für den Zweck der sicheren Maskierung von
2
Stefan Reimers, Gunnar Thies: PHP 5.4 und MySQL 5.5 – S. 591
Michael Schrüfer
Matnr.: 2667118
Seite 25 von 38
Zeichen bereitgestellte Funktion „mysqli_real_escape_string()“, kommt hier nicht zum Einsatz.
Um die übergebenen Daten mit den in der Datenbank gespeicherten Informationen
abzugleichen, wird dem Select-Statement lediglich der erste Buchstabe des Logins übergeben.
Die Abfrage liefert Array mit der Kombination aus Benutzernamen und Kennwort für alle
Benutzerkonten mit den entsprechenden Anfangsbuchstaben zurück.
$firstChar = substr($_POST['login'],0,1);
$sql = "SELECT login,password FROM user WHERE login LIKE '".$firstChar."%'";
In einer darauf folgenden Schleife wird das zurückgegebene Feld durchlaufen, und mit den aus
dem Formular übergebenen Daten abgeglichen. Auf diese Weise ist sichergestellt, dass kein
schädlicher Code die Datenbank erreicht. Während der Benutzername ohne Anpassungen auf
Gleichheit geprüft werden kann, wird vom Passwort ein MD5 Hash-Wert erzeugt, und dieser
mit der aus der Datenbank erhaltenen Prüfsumme verglichen. Wurde eine passende
Kombination der Daten gefunden, wird die PHP Session gestartet, und u.a. der Benutzername
in einer Session-Variablen gespeichert. Direkt nach dem erfolgreichen Login erfolgt die
automatische Weiterleitung in den internen Bereich der Anwendung. Auf der ersten Seite
erhält der Administrator eine Übersicht über den Zustand des Systems, sowie über wichtige
Konfigurationsparameter. Die ausgegebenen Informationen werden im Hintergund von
statischen Funktionen der Klasse „Information“ gesammelt. Dazu wird auf im Betriebssystem
oder von Postfix bereitgestellte Programme zurückgegriffen. Dies wird zumeist über die PHP
Funktion „shell_exec(<Kommandozeilenbefehl>)“ realisiert, welche einen
Kommandozeilenbefehl ausführt, und dessen Konsolen-Ausgabe zurückgibt. Um die Sicherheit
des Systems gewährleisten zu können, wird der Webserverprozess unter einem Benutzer ohne
priviligierte Rechte ausgeführt. Da zur Ermittlung einiger Informationen root-Rechte benötigt
werden, mussten die Berechtigungen des Users „www-data“, unter dem der Apache-Prozess
läuft, erweitert werden. Für diesen Zweck stellt Linux das Programm „sudo“ zur Verfügung.
Mit diesem ist es u.a. möglich, als nicht-priviligierter Benutzer, Programme als root
auszuführen. Der folgende Ausschnitt aus der sudo-Konfigurationsdatei zeigt die Definition der
erlaubten Programme.
www-data ALL = NOPASSWD:/opt/mailadminWebApp/version.sh
Der Unix-Benutzer www-data darf nun ohne Passwortabfrage das Programm version.sh „mit
root-Rechten“ ausführen. Dem Aufruf des Programms aus dem PHP Skript heraus wird das
Kommando „sudo“ vorangestellt.
$ret['postfix'] = shell_exec("sudo /opt/mailadminWebApp/version.sh postfix");
Neben der Status-Übersicht bietet der interne Bereich die Möglichkeit der Pflege von Blackund Whitelists. Die meisten der während des SMTP Dialogs durchlaufenen Schritte (Prozesse)
bieten seperate und unabhängige Dateien zur Pflege individueller Listen an. So greift der Filter
Postscreen, der sich zu Beginn der SMTP Kommunikation befindet, auf andere Files im
Dateisystem zurück, als Amavis. Auch das Format und die Art der Information unterscheidet
sich je nach Prüfprozess. Während der Filter für Absender-Adressen eine Textdatei im
Pseudotabellenformat, bestehend aus 3 Spalten (Absenderadresse, Aktion, optional RejectGrund) erwartet, setzt der Greylisting Daemon Postgrey eine Textdatei mit einer Spalte, die
nur IP Adressen oder Hostnamen enthält, voraus. Für jedes zu unterstützende Format steht
eine seperate „Filehandler-Klasse“ zur Verfügung, die für das Auslesen, Bearbeiten und
Zurückschreiben des Dateiinhalts zuständig ist. Für jede Zeile einer Datei wird beim Auslesen
Michael Schrüfer
Matnr.: 2667118
Seite 26 von 38
durch den FileHandler eine Instanz der passenden „FileEntry“-Klasse erstellt, um die
ausgelesenen Informationen darin abzulegen, und komfortabel in einer Liste verwalten zu
können. Für die Anzeige und Bearbeitung der Daten existiert für jeden Black-/Whitelisting
Vorgang eine PHP Datei, die die jeweils benötigte FileHandler-Klasse instanziiert und den Pfad
zur Datei im Filesystem angibt.
$myFile = new System\dreiSpaltenFileHandler("/etc/postfix/lookup/access_sender");
Zusammengefasst wird also ein Schritt der Filterung durch 3 Elemente abgebildet. Die für den
Anwender der PHP Applikation sichtbare Datei z.B. accessSender.php, welche Einträge einer
Datei auflistet, die entsprechende FileHandler Klasse, die den Zugriff auf die im Dateisystem
gespeicherten Textdateien verwaltet, und der FileEntry Klasse, die eine Zeile darstellt, und
damit eine Regel im Filtersystem repräsentiert.
Neben der Funktion zum Zugriff auf Dateisystemelemente stellt die FileHandler Klasse auch die
Methoden zum Löschen bestehender, sowie zum Einfügen neuer Regeln bereit. Während die
Funktion zum Löschen existierender Regeln sehr einfach und ohne weitere Prüfung
angesprochen werden kann, ist der Einfügeoperation ein Filter vorgelagert. Dieser Filter ist
notwendig, um falsche Informationen in den Lookuptables und Konfigurationdateien zu
verhinden. So wird in der access_sender Lookup Table z.B. eine E-Mail Adresse oder ein
Domainname erwartet. Die Eingabe einer IP Adresse wäre nicht nur logisch falsch, sondern
würde unter Umständen sogar zu einer Fehlfunktion des Mailserversystems führen. Die in
einer Vererbungshierarchie implementierten konkreten Filter-Klassen stellen ihre PrüfFunktion über die Methode „checkInput“ bereit, die vor dem Aufruf der Einfüge-Operation die
einzufügenden Daten überprüft. Wie auch der Lösch- setzt sich der Einfüge-Mechanismus aus
3 Schritten zusammen. Zunächst wird das ensprechende File-Entry Element aus dem Array,
welches als Variable der FileHandler Instanz im Speicher gehalten wird, gelöscht bzw.
angehängt. Anschließend wird der gesamte Inhalt des Arrays durch die Methode
„writeToFile()“ in die entsprechende Textdatei auf dem Dateisystem geschrieben, bevor die
Änderungen entweder durch Aktualisieren einer HashDatei oder durch den Neustart eines
Prozesses aktiviert werden. Die insbesondere zum Neustart von Prozessen notwendigen
„priviligierten Rechte“ werden wie auf der Status-Seite bereits angewendet, durch „sudo“
erlangt. Neben dem Recht, Programme auszuführen, muss auch das Lesen und Schreiben der
Textdateien für den Eigentümer des Webserverprozesses (www-data) ermöglicht werden. Da
das von Linux standardmäßig zur Verfügung gestellte Rechtesystem keine ausreichend
detaillierte Rechtevergabe ermöglichte, wurde das Grundsystem um die Funktionalität von File
System Access Controll Lists erweitert. Hierdurch konnten dem www-data User explizit nur die
Rechte auf Dateien zugewiesen werden, die er für seine Arbeit benötigt.
# getfacl access_sender
…
user:www-data:rw…
Auf Basis dieser Architektur konnten die Masken zur Pflege der Black-/Whitelists für die
Filtermodule Postscreen, Client Access, Sender Access, Greylisting sowie Amavis ohne größere
Anpassungen erstellt werden.
Um im Fall einer fehlerhaft geblockten E-Mail den Whitelist-Eintrag an der richtigen Stelle im
Mailfluss setzen zu können, ist eine genaue Analyse der Logmeldungen notwendig. Postfix und
Michael Schrüfer
Matnr.: 2667118
Seite 27 von 38
seine Partnerkomponenten schreiben zu jeder verarbeiteten E-Mail, egal ob erfolgreich
zugestellt, oder auf Grund von Fehlern verworfen, Einträge in eine definierte Logdatei. Um den
Inhalt dieser komfortabel ausgeben und durchsuchen zu können, werden die Nachrichten
neben der Datei noch in die bereits vorhandene MySQL Datenbank geschrieben. Dazu wird
eine einfach strukturierte Tabelle angelegt. Das eingesetzte Linux-Log System syslog-ng,
welches eine Schnittstelle zu externen Programmen von Haus aus bereit stellt, musste lediglich
um die MySQL Datenbank als verfügbares Ziel erweitert werden. Damit nur für die MailKommunikation relevante Log-Ereignisse in die definierte Tabelle geschrieben werden, filtert
f_mail nur die Meldungen des Bereichs (facility) „mail“ aus dem gesamten log-Strom heraus.
filter f_mail { facility(mail) … };
destination d_mysql { program("/usr/bin/mysql --user=xxx --password=xxx app01 "
template("INSERT INTO logs (host, … '$MSG' );\n") template-escape(yes)); };
log { source(s_src); filter(f_mail); destination(d_mysql); };
Die nun in der Datenbank enthalteten Log-Meldungen können via SQL sehr einfach durchsucht
werden. Auch der Zugriff über das Webinterface auf die Logmeldungen lässt sich so wesentlich
komfortabler handhaben, als der Zugriff über reine textbasierte Logfiles. Die Umsetzung dieser
Funktionalität des Webinterfaces konnte insbesondere durch die globale Verfügbarkeit des
MySQL Objekts zügig umgesetzt werden. Die Ausgabe der Messages erfolgt seitenweise mit
maximal 100 Einträgen pro Seite. Die in die Seite integrierte Suchmaske erleichtet das Finden
von relevanten Logmeldungen. Dabei werden die gefundenen Textstellen farblich
hervorgehoben. Der Verlauf eines Zustellungsversuches lässt sich anhand der selben MessageID identifizieren. Da sich diese am Anfang jeder Logmeldung in einem definierten Format
befindet, wird diese bei jeder Anzeige über einen regulären Ausdruck erkannt, und mit einem
Hyperlink versehen. Dieser verweist auf die gleiche Seite, aktiviert jedoch einen Filter, um nur
die zu diesem Zustellungsversuch passenden Nachrichten anzuzeigen. Um ein Überlaufen der
Partition mit nicht mehr benötigten Log-Einträgen zu vermeiden, wird via Cron Job täglich ein
Skript ausgeführt, welches alte Nachrichten aus der Datenbank entfernt. Als letzte Funktion
des internen Bereichs wurde das Abmelden durch das „Zerstören“ der Session und das damit
verbundene Löschen aller Session Variablen implementiert.
5. Sonstiges
5.1. Netzwerkmanagement mit Cisco Prime
Das Netzwerk des Klinikums besteht zum überwiegenden Teil aus Komponenten der Firma
Cisco. Um eine möglichst detaillierte Überwachung dieser zu ermöglichen, wurde das auf die
Cisco-Geräte zugeschnittene Managementportal „Cisco Prime Infrastructure“ gewählt und
über eine Virtual Appliance in die vorhandene Infrastruktur integriert. Zudem ermöglicht die
Software eine einfache Konfiguration und Verwaltung der Komponenten. Dazu zählt
insbesondere die Sicherung und Revisionierung existierender Konfigurationsdateien, die im
Fehlerfall wiederhergestellt werden können. Damit die Appliance ihre Aufgaben erledigen
kann, und sich mit den Zielsystemen verbinden kann, sind auf dieser einige Anpassungen
notwendig. Maßgeblich ist hierbei der SNMP- und Telnet-Zugriff. Während SNMP lediglich zum
Auslesen von Informationen und Parametern verwendet wird, dient der Telnet-Login zur
Michael Schrüfer
Matnr.: 2667118
Seite 28 von 38
Konfiguration der Geräte. Dazu wird auf den Geräten eine neue SNMP Read Only Community
angelegt. Der Name dieser wurde komplex gewählt, da er als Authentifizierungsmechanismus
dient. In der Appliance ist anschließend das Gerät mit den definierten Parametern
hinzuzufügen.
Nach einer kurzen Inventarisierungsphase stehen die Monitoring- und
Managementfunktionaltiäten über ein Webinterfache zur Verfügung.
5.2. Planung eines Oracle Real Applicantion Cluster (RAC)
Eine zentrale Datenbank des Klinikums soll von einer single Instance Lösung auf eine
hochverfügbare Infrastruktur, bestehend aus 2 Datenbank-Knoten migriert werden. Da es sich
um eine Oracle Datenbank handelt, wird ein Real Application Aktiv/Aktiv Cluster (RAC)
installiert. Um den Mitgliedern dieses Application Clusters den Zugriff auf eine gemeinsame
Datenbasis zu ermöglichen, musste ein „Shared Storage“ für die 2 Knoten bereitgestellt
werden. Auf Grund der Erfahrungen im Bereich der Servervirtualisierung fiel die Entscheidung
auf die Storage-Virtualisierungsoftware der Firma DataCore. Diese ermöglichte den Aufbau
einer redundanten Storagestruktur, flexible Verwaltung der Speichereinheiten, sowie die
Bereitstellung logischer Datenträger via FibreChannel. Diese konnten auf den Oracle-Servern
eingebunden werden, durften jedoch nicht initialisiert und formatiert werden. Die Aufgabe des
Volume Managers wird in RAC Umgebungen ausschließlich vom Automatic Storage Manager
(ASM) übernommen. Diese von Oracle mitgelieferte Komponente stellt das Dateisystem für
datenbankinterne Dateien wie den Datafiles oder Redologs bereit. Die erweiterten ASMFunktionen wie Mirroring oder Stripping werden in diesem Setup nicht genutzt, da sie bereits
durch die dahinterliegende Storage-Infrastruktur abgedeckt sind. Das Multipathing wird über
DataCore Treiber aufgelöst, sodass jeweils nur eine Instatz des Storage für den ASM sichtbar
ist. Daneben initiiert der Treiber ein Umschwenken des aktiven Pfades im Fehlerfall. Die
Ausfallsicherheit und Lastenverteilung des Datenbankzugriffs wird über eine Verteilung der
Listener Prozesse auf die 2 Nodes realisiert. Den 3 eingerichteten Listenern ist je eine virtuelle
IP zugeordnet, die via DNS Round Robin von den Clients in rotierender Reihenfolge aufgelöst
wird. Fällt ein Mitglied des Clusters aus, werden die Listener Prozesse von einem noch aktiven
Knoten übernommen. Die Kommunikation der Rechner im Cluster untereinander erfolgt über
eine dedizierte Cluster Interconnect Verbindung, über die unter anderem das verteilte
Sperrmanagement organsiert und geregelt wird (Abbildung 5.2.a). Die konkrete Umsetzung
der Migration und der Konfiguration des Clusters ist in naher Zukunft geplant.
Michael Schrüfer
Matnr.: 2667118
Seite 29 von 38
6. Anhang
Abbildung 2.1.a (Verteilung der Tickets auf Queues/Bearbeiter)......................................................... 31
Abbildung 2.4.a (OTRS Einrichtung Genericinterface) .......................................................................... 31
Abbildung 2.4.b (Ablauf Ticket-Weitergabe)......................................................................................... 32
Abbildung 3.1.a (Integration des Mailhubs in die DMZ) ....................................................................... 33
Abbildung 3.3.a (Interner Verarbeitungsfluss)...................................................................................... 33
Abbildung 4.3.a (mailadmin Bash-Skript) .............................................................................................. 34
Abbildung 4.3.b (qadmin Bash Skript)................................................................................................... 34
Abbildung 4.4.a (Auszug aus Klassendiagramm der PHP Anwendung) ................................................ 35
Abbildung 4.4.b. (Organisation der Seiten) ........................................................................................... 36
Abbildung 5.2.a (RAC Infrastruktur) ...................................................................................................... 37
Michael Schrüfer
Matnr.: 2667118
Seite 30 von 38
Abbildung 2.1.a (Verteilung der Tickets auf Queues/Bearbeiter)
Abbildung 2.4.a (OTRS Einrichtung Genericinterface)
Michael Schrüfer
Matnr.: 2667118
Seite 31 von 38
Abbildung 2.4.b (Ablauf Ticket-Weitergabe)
eingabe.php – Erfassung der Daten
toOtrs.php Übergabe der Daten
an OTRS
Ansicht des Tickets im OTRS
ausgabe.php – Ausgabe der Daten zur Störmeldung
Michael Schrüfer
Matnr.: 2667118
Seite 32 von 38
Abbildung 3.1.a (Integration des Mailhubs in die DMZ)
DMZ
Internet
Mailhub
Intern
Exchange Server
Abbildung 3.3.a (Interner Verarbeitungsfluss)
Einliefernder Mailserver
SMTP
Postfix-Postscreen TCP :25
Postfix SMTP Daemon
- Client Access
- Halo Access
- Sender Access
- Receipient Access
RAV
RBL
TCP
policyd-weight :12525
TCP
Postgrey :10023
SMTP
AMaViS :10024
- RBL Score
- helo – Checks
- mail from: - Checks
- rcpt to: - Checks
RBL DNS Server
Greylisting
- Erster Versuch mit
4xx ablehnen
- Content Scan
(SpamAssassin)
- Viren Prüfung
(ClamAV)
SMTP
Postfix SMTP Daemon : 10025
SMTP
Groupware
Server
Michael Schrüfer
Matnr.: 2667118
Seite 33 von 38
Abbildung 4.3.a (mailadmin Bash-Skript)
Abbildung 4.3.b (qadmin Bash Skript)
Michael Schrüfer
Matnr.: 2667118
Seite 34 von 38
Abbildung 4.4.a (Auszug aus Klassendiagramm der PHP Anwendung)
System::FileEntry
System\Database::MySQL
System::DebugConsole
+MySQLiObj
+lastSQLQuery
+lastSQLStatus
+query()
+escapeString()
+makeArrayResult()
+doLog()
+handleAction()
+displayConsole()
+printCode()
System::1SpaltenEntry
System::3SpaltenEntry
+spalte1
+spalte1
+spalte2
+spalte3
System::2SpaltenEntry
+spalte1
+spalte2
System::myFileHandler
#content
#path
#lines
#log
+readFile()
+delLine()
+writeToFile()
+printContent()
+insertLine()
System::dreiSpaltenFileHandler
System::HTML
+printHead()
+printFoot()
+printArray()
System::einSpaltenFileHandler
System::HTMLIntern
System::zweiSpaltenFileHandler
Scripts::Login
System::Security
+printLoginForm()
+checkLoginData()
+checkMyLoginStatus()
+verifyPassword()
Scripts::InputFilter
System::Information
+getServerName()
+getWWWsw()
+getDiskUsage()
+getMemUsate()
+getQueueStatus()
+getSMTPInfo()
+getVersionInfo()
+getPostfixConfig()
System::HTMLExt
+printNav()
+printHeadLine()
+printAddNewLine1Spalte()
+printAddNewLine2Spalte()
+printAddNewLine3Spalte()
+printBody()
System::SessionHandler
+open()
+clase()
+read()
+write()
+destroy()
+gc()
+checkInput()
System::mySessionHandler
Scripts::myIPFilter
Michael Schrüfer
Scripts::myEMailFilter
Matnr.: 2667118
Seite 35 von 38
Abbildung 4.4.b. (Organisation der Seiten)
Index.php
Intern
status.php
accessPostscreen.php
accessClient.php
accessSender.php
greylistClient.php
amavisBlacklist.php
amavisWhitelist.php
logAna.php
Michael Schrüfer
Matnr.: 2667118
Seite 36 von 38
Abbildung 5.2.a (RAC Infrastruktur)
StorageServer1
StorageServer2
FC-Switch
FC-Switch
FC-Switch
FC-Switch
ASM Instanz1
ASM Instanz2
Interconnect
OracleNode1
OracleNode2
Listener
Pool
DNS RR
Klinikum Netzwerk
Michael Schrüfer
Matnr.: 2667118
Seite 37 von 38
7. Literaturverzeichnis
OTRS 3.1 - Developer Manual
OTRS 3.1 - Admin Manual
Peer Heinlein: Das Postfix Buch. Sichere Mailserver mit Linux
Ralf Hildebrandt, Patrick Ben Koetter: Postfix: Einrichtung, Betrieb und Wartung
Stefan Reimers, Gunnar Thies: PHP 5.4 und MySQL 5.5
Andrea Held, Mirko Hotzy, Lutz Fröhlich: Der Oracle DBA
Michael Schrüfer
Matnr.: 2667118
Seite 38 von 38
Herunterladen