Dr. M. Grabert Abteilung Angewandte Informationsverarbeitung 19. Juni 2001
Johannes Mayer Blatt 7


Uni-Logo



Systemnahe Software (SS 2001)


Abgabetermin: 25. Juni 2001

11 Wie komm' ich bloß an meine Mails? (10 Punkte)

Wollten Sie nicht immer schon mal eine kleine Übersicht, was sich denn so alles in Ihrer Mailbox tummelt. Am liebsten wäre es Ihnen, wenn sie nur auf der Kommandozeile ein Kommando eintippen müssten und schwups schon haben Sie Titel, Absender und Datum der letzten sagen wir 5 Mails. Na gut, können wir machen!

Schreiben Sie also ein C-Programm welches (ähnlich zu popen()) in einem Sohn-Prozess entweder telnet oder nc ausführt. (Als Kommandozeilenargumente müssen der Server und der Port an telnet oder nc übergeben werden!) Zu diesem Prozess brauchen wir aber (im Gegensatz zu popen()) zwei Verbindungen - eine zum Lesen und eine zum Schreiben. Danach kommuniziert der Vater-Prozess via POP3-Protokoll mit dem Server (über die beiden Pipe-Verbindungen). Zunächst loggt er sich durch die Kommandos USER und PASS ein. Danach fordert er mittels LIST eine Liste der Mail-Nummern an. (Diese ist so sortiert, dass die neueste Mail am Ende steht.) Und merkt sich die Nummern der letzten 5 Zeilen in dieser Liste (oder entsprechend weniger, falls die Liste nicht so lang ist). Daraufhin fordert er von jeder dieser max. 5 Mails mittels top den Header an. Von den Zeilen, die er dabei bekommt, gibt er aber nur diejenigen aus, welche mit From:, Date: oder Subject: beginnen. Zum Schluss beendet er mit dem Kommando quit die Verbindung zum POP3-Server. Den Namen des Servers, den Benutzernamen und das Passwort erhält das C-Programm via Kommandozeile.

Im folgenden ist ein Beispiel für eine POP3-Session, bei der der Header der neuesten Mail angefordert wird, angegeben.

turing$ nc turing 110
+OK <23742.992617730@turing.mathematik.uni-ulm.de>
user jmayer
+OK
pass XXXXXXXX
+OK
list
+OK
1 2548
2 3150
.
top 2 0
+OK
Return-Path: <weber@informatik.uni-ulm.de>
Delivered-To: jmayer@mathematik.uni-ulm.de
...
Message-ID: <3B23552B.99F5C879@informatik.uni-ulm.de>
Date: Sun, 10 Jun 2001 13:08:27 +0200
From: Michael Weber <weber@informatik.uni-ulm.de>
Organization: University of Ulm
...
To: all@informatik.uni-ulm.de
Subject: Diplomfeier
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit


.
quit
+OK
turing$

Ihr Programm sollte sich dann in etwa so verhalten:

thales$ pop3 turing jmayer XXXXXXXX
Date: Fri, 15 Jun 2001 15:07:45 +0200
From: Birgit Lange <birgit.lange@bibliothek.uni-ulm.de>
Subject: Fwd: Testzugang zu EBSCO Business Source Premier
-----------------------------------------
Date: Sun, 10 Jun 2001 13:08:27 +0200
From: Michael Weber <weber@informatik.uni-ulm.de>
Subject: Diplomfeier
thales$

P.S.: Richten Sie Ihren POP3-Mail-Account auf unseren Rechnern ein, falls sie das nicht bereits getan haben. (Hilfe hierzu gibt es unter http://www.mathematik.uni-ulm.de/admin/qmail/pop.html.) Arbeiten Sie auf Ihrem eigenen POP3-Account!


Viel Erfolg!


Johannes Mayer, 2001-06-19