POP3: Was passiert mit den IDs beim Löschen ?

Hi, ich hab schon den RFC zu POP3 gelesen, ist aber ja nur fürs Protokoll… Nunja, zu meiner Frage.

Ich habe 10 mails auf dem server (id 1 bis 10) nun lösche ich die mail mit der ID 5. was passiert mit der reihenfolge der mails?
bleibt id 1 bis 4 unberührt (also an gleicher stelle) und id 6 bis 10 rutschen auf 5 bis 9? oder ist das willkürlich?

Und was passiert bei einer neuen Mail? kommt die neue Nachricht auf ID 1 oder auf id n +1 ?

Gibt es da unterschiede zwischen den verschiedenen POP3 servern oder kann ich ein bestimmtes Verhalten vorraussetzen? wenn ja welches?

Ich hoffe hier auf ein paar wissende anzusprechen, im Netz finde ich dazu nichts…

Mit freundlichem Gruß

Hallo,
bei Mailservern werden keine von dir beschriebenen IDs als Sortierschlüssel verwendet. Wenn du z.B. die in der 4. Zeile angezeigte Mail deines Postfaches löschst, rücken die nachfolgenden einfach nach. Die Gesamtzahl der Mails veringert sich um eins. Dabei ist es unerheblich, nach welchem Attribut (Datum, Absender etc.) die angezeigten Mails sortiert waren.

Grüße Culles

ich rufe die mails derzeit mit meinem eigenem programm ab. Wenn so ie du sagst, die folgenden emails aufrücken und das ein standard verhalten ist, kann ich mir die zuletzt abgerufene Größe merken und beim 2ten durch lauf die aktuelle anzahl minus letzte anzahl abrufen.

Dies würde deutlich schneller gehen. Nur weis ich nicht ob ich das Verhalten als Standard für jeden Server voraussetzen kann…

Ich habe 10 mails auf dem server (id 1 bis 10) nun lösche ich
die mail mit der ID 5. was passiert mit der reihenfolge der
mails?
bleibt id 1 bis 4 unberührt (also an gleicher stelle) und id 6
bis 10 rutschen auf 5 bis 9? oder ist das willkürlich?

Was spricht dagegen, das einfach auszuprobieren? Es ist aber so, dass in der offenen Session die anderen ID’s unverändert bleiben. Du könntest also mit dem ersten LIST einen Index aufbauen und auch nach DELE weiter nutzen. Beendest du die Verbindung und baust neu auf, wird der Index auf dem Server hingegen neu aufgebaut.

HTH

Die Frage ist hauptsächlich, ob dieses Verhalten für alle Server gültig ist.

Aber Ich habe einen Fall nicht beachtet, wenn mit einem anderen Programm auf das Postfach zugegriffen und abgerufen/ gelöscht wird, funktioniert meine Herangehensweise nicht mehr…

Aber Ich habe einen Fall nicht beachtet, wenn mit einem
anderen Programm auf das Postfach zugegriffen und abgerufen/
gelöscht wird,

bleibt der Index unverändert. Du kannst auch fehlerfrei ein TOP oder RETR auf eine mit einem anderen Programm gelöschte Datei durchführen - du bekommst als Rückmeldung dann aber nur noch den Index und die Anzahl Bytes zurückgeliefert. Ob dieses Verhalten aber möglicherweise implementationsabhängig ist, weiss ich aus dem Stegreif nicht zu sagen.

Gruß

mein programm = A
anderer Client = B

A prüft alle mails , 10 Stück. und läd diese runter
B löscht mail 7 und 8, somit nur noch 8 mails auf dem Server (id 1-8)
A hatte sich 10 gemerkt und würde alle mails mit einer id > 10 abrufen. Geschieht natürlich nicht weil nur noch 8 da sind.
Zweites problem ist, wenn nun noch 2 mails hinzugekommen sind das diese nicht auch nicht abgerufen werden da es vorher 10 waren und nun auch wieder 10.

Das ist das problem was ich ansprechen wollte.

Hintergrund ist eigentlich die abzurufende menge einzuschränken, welches nicht mehr funktioniert sofern ein anderer mailclient mit dem gleichen Postfach arbeitet.

A prüft alle mails , 10 Stück. und läd diese runter
B löscht mail 7 und 8, somit nur noch 8 mails auf dem Server
(id 1-8)
A hatte sich 10 gemerkt und würde alle mails mit einer id > 10
abrufen. Geschieht natürlich nicht weil nur noch 8 da sind.
Zweites problem ist, wenn nun noch 2 mails hinzugekommen sind
das diese nicht auch nicht abgerufen werden da es vorher 10
waren und nun auch wieder 10.

Das ist das problem was ich ansprechen wollte.

Du baust eine Session auf, und innerhalb dieser Session sind die Daten statisch. Wenn nach Sessionaufbau neue Mails eingeliefert werden, bekommst du das in der laufenden Session nicht mit. Du kannst nur die Mails abrufen die beim Sessionaufbau bekannt waren. Gleiches gilt für gelöschte Mails - mit dem Unterschied, dass beim Lesen gelöschter Mails diese natürlich nicht zurückgeliefert werden, nur noch ID und Grösse.

Willst du diese Dinge dynamisch abhandeln, musst du die Socketverbindung zum Server lösen und neu aufbauen. (das sollte der Server nach einem Idle-Timeout schon von sich aus erledigen - das aber ist definitiv implementationsabhängig). Dann aber musst du berücksichtigen, dass du Daten aus der vorhergegangenen Session nicht mehr verwenden darfst. Die müssen jetzt nicht, können aber sämtlich ungültig sein.

Gruß

Ich möchte mich erst einmal bendanken für die Unterstützung!

Ich habe nun allerdings gefunden was mir hilft und die ID Geschichte völlig unnötig macht. Der Befehl „UIDL“ war mir noch nicht untergekommen. Dieser gibt mir eine Liste eindeutiger ids zu den Mails eines Postfachs. Die vergleiche ich nun mit denen die ich schon abgerufen habe.

Wie gesagt dankeschön!