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!