Weiter im Hintergrund
Damit »gaim2imap« nach der Eingabe des Passworts durch den User in den Hintergrund verschwindet, startet Zeile 31 einen Kindprozess mit »fork()«. Schießt der Admin den Daemon später mit dem Kommando »kill PID« ab, dann versucht der noch mit »dbmclose()« den persistenten Hash zu sichern, um sich dann mit »exit()« zu beenden. Der globale Hash »%SIG« definiert durch den Eintrag »$SIG{TERM}« dies Verhalten.
Wiedergeborene Sessions
Auch wenn sich eine IM-Session über mehrere Stunden hinzieht, hängt Gaim neue Nachrichten stets an ein bestehendes Logfile an. Erst wenn der Anwender das Kommunikationsfenster schließt, legt Gaim beim nächsten Nachrichtenaustausch mit dem Partner eine neue Datei an. Der Daemon, der aus den Logfiles E-Mails generiert, legt als Grenze eine Stunde Inaktivität fest.
Ist die erreicht, verwandelt der Daemon die Datei in eine E-Mail und kennzeichnet sie als bearbeitet. War die Session noch aktiv und Gaim hängt später noch eine neue Nachricht an, fällt dies dem Daemon auf, denn für jede bearbeitete Datei merkt er sich deren letzten Modifikationszeitpunkt und speichert ihn in »%SEEN«, einem permanenten Hash, der mit »dbmopen« an eine Datei gebundenen ist. Damit in diesem Fall dennoch keine Daten verloren gehen, bearbeitet er sie einfach noch einmal.
Fast alle modernen E-Mail-Clients unterstützen das IMAP-Protokoll. Wer einen leicht zu installierenden IMAP-Server sucht, dem sei Dovecot empfohlen. Aber egal, ob Cyrus, UW IMAP oder Dovecot zum Einsatz kommen, das Skript »mbsetup« (Listing 2) legt auf jeden Fall eine neue Mailbox für die Chat-E-Mails auf dem IMAP-Server an.
01 #!/usr/bin/perl
02 ###########################################
03 # Mike Schilli, 2007 (m@perlmeister.com)
04 ###########################################
05 use strict;
06 use IMAP::Client;
07 use Sysadm::Install 0.23 qw(:all);
08
09 my $mailbox = "im_mailbox";
10
11 my $imap = new IMAP::Client();
12 $imap->onfail('ABORT');
13 $imap->errorstyle('STACK');
14 $imap->debuglevel(0x01);
15
16 $imap->connect(
17 PeerAddr => 'localhost',
18 ConnectMethod => 'PLAIN') or
19 die "auth failure " . $imap->error;
20
21 my $u = getpwuid $>;
22 my $pw = password_read("passwd: ");
23 $imap->authenticate($u, $pw);
24
25 $imap->onfail('ERROR');
26 $imap->delete($mailbox);
27 $imap->onfail('ABORT');
28
29 $imap->create($mailbox);
|

|
Abbildung 6: Client und Server kommunizieren nach den Regeln des IMAP-Protokolls. Jede Anfrage enthält eine eindeutige numerische ID, die der Antwort beiliegt.
|
| Whitepaper |
|
Open Source Datenintegration in der Praxis: Fallstudien und Anwendungsbeispiele
Über die letzten Jahre hinweg haben sich Open Source Lösungen als fester Bestandteil des gesamten Datenintegrationsmarktes etabliert. Viele Unternehmen haben bereits das Open Source Modell für Ihre Datenintegrationsprojekte aufgegriffen. Das vorliegende White Paper illustriert anhand ausgewählter Fallstudien und Anwendungsbeispiele die Implementierung von Open Source Datenintegration in der Praxis und benennt die daraus resultierenden Vorteile.
Download PDF (Registrierung erforderlich)
|
|
The Role of Open Source in Data Integration
Obwohl in den letzten Jahren viele technische Fortschritte erzielt werden konnten, verfügen die meisten Datenintegrationsprozesse nach wie vor nur über eine sehr begrenzte Automatisierung. Das vorliegende White Paper von dem Industry Analyst Mark Madson wird zunächst ein grundlegendes Verständnis von Daten Integration vermitteln, die Vorzüge von Open Source Lösungen für Daten Integration erläutern und Ihnen professionelle Empfehlungen geben, damit Sie Ihre Integrationsjobs noch einfacher und produktiver gestalten können.
Download PDF (Registrierung erforderlich)
|
Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links"
nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedrucken Fassung entsprechen.
|