2008-11-25 9 views
8

Ich verwende Thunderbird, um E-Mail mit POP3 zu empfangen. Ich habe Thurnderbird konfiguriert, um E-Mails auf dem Server zu hinterlassen. Sagen wir eines Tages benutze ich POP3, um 10 E-Mail-Nachrichten abzurufen (RETR), dann logge ich mich für die Nacht aus. Über Nacht werden 10 weitere Nachrichten an meine Mailbox gesendet. Wenn ich am nächsten Morgen Thunderbird starte, sollte der Befehl STAT 20 Nachrichten anzeigen. Thunderbird sollte jedoch die ersten 10 Nachrichten nicht herunterladen. Es sollte bei Nachricht 11 (oder der eindeutigen Kennung oder UID für Nachricht 11) beginnen. Thunderbird sendet einen POP3-Befehl UIDL und vergleicht dann die UID mit der UID der letzten Nachricht, die Thunderbird gestern abgerufen hat. Es wird feststellen, dass die letzte UID mit der UIDL-Liste für Nachricht 10 übereinstimmt, dann wird Thunderbird RETR 11, RETR 12 und so weiter.Wo speichert Thunderbird die UID der letzten über POP heruntergeladenen Nachricht?

In meinem Fall zeigt der Befehl POP3 STAT, dass ich 5379 Nachrichten auf dem POP-Server habe. Ich habe bereits etwa 5000 von ihnen erhalten. Aus irgendeinem Grund möchte Thunderbird alle 5379 Nachrichten herunterladen, anstatt bei 5001 zu beginnen. Ich versuche, dies zu debuggen und suchte nach der UID, die Thunderbird für die letzte abgerufene Nachricht hielt.

Weiß jemand, wo Thunderbird (unter Windows) die letzte UID speichert, mit der er mit der UIDL (Liste) verglichen wird?

Gibt es eine Möglichkeit, es manuell zu setzen, damit ich Thunderbird zwingen kann, irgendwo in der Nähe von 5001 zu starten?

+1

Anscheinend sollten Sie Ihr Update in eine Antwort stecken, weil das, was es ist. – vava

+0

Warum verwenden Sie POP mit "Nachrichten auf dem Server belassen" aktiviert? Dafür steht IMAP. :-) –

+1

Nicht programmiert? –

Antwort

4

Thunderbird hat eine Datei namens popstate.dat, die die UID, einen Zeitstempel (Epoche) und ein Flag enthält. Das Flag zeigt an, welche Aktion Thunderbird für die zugehörige Nachricht ausführen soll.

Offensichtlich funktioniert Thunderbird nicht wirklich wie ich oben beschrieben. Ich denke Thunderbird macht folgendes. Es sendet einen POP3-Befehl UIDL, um eine Liste der auf dem POP-Server gespeicherten UIDs zu erhalten. Es vergleicht dann diese Liste mit den in popstate.dat gespeicherten UIDs. Alle UIDs, die nicht bereits in popstate.dat sind, sind neue Nachrichten, die abgerufen werden sollen. Der UIDL-Befehl hat zuvor die Nachrichtennummer und die zugehörige UID zurückgegeben. Thunderbird muss dann einen POP3 RETR-Befehl mit der Nachrichtennummer ausführen, die den UIDs zugeordnet ist, die noch nicht abgerufen wurden. Thunderbird muss auch die Flagge in popstate.dat betrachten und irgendwelche Aktionen für die zugehörige Nachricht ausführen. Das Flag d weist Thunderbird beispielsweise an, die zugehörige Nachricht zu löschen. Das f Flag bedeutet, dass Thunderbird nur einen abgeschnittenen Teil der Nachricht hat und die vollständige Nachricht abrufen sollte.

Irgendwann aktualisiert Thunderbird die popstate.dat mit den neuen Nachrichten. Ich denke, das passiert in einem Batch-Update auf popstate.dat, nachdem alle Aktionen abgeschlossen wurden.Das heißt, wenn 10 neue Nachrichten abgerufen werden, wird popstate.dat nicht aktualisiert, bis alle 10 Nachrichten abgerufen wurden.

Ich denke, mein Problem liegt auf dem Server. Anscheinend wurde unsere Infrastruktur auf eine neue Version des POP-Servers aufgerüstet und neue UIDs wurden der neuen Version zugewiesen. Mein popstate.dat hatte alle alten UIDs. Die UIDL an den neuen POP-Server sendet eine Liste von über 5000 UIDs, die Thunderbird nicht in popstate.dat aufgelistet hat. Also, Thunderbird fuhr fort, alle 5000+ Nachrichten zu downloaden. Wenn der neue POP-Server die alten UIDs beibehalten hätte, hätte Thunderbird gesehen, dass ich die meisten der mehr als 5000 Nachrichten bereits abgerufen und nur diejenigen heruntergeladen hätte, die ich nicht hatte. Ich denke, dass die meisten Leute in meiner Organisation Outlook benutzen und nicht POP3 benutzen, und wie auch immer die Versionsaktualisierung zum POP-Server gemacht wurde, verursachte kein Problem für diese Benutzer. Es scheint, als ob einige zusätzliche Sorgfalt erforderlich war, um sicherzustellen, dass der neue Server die gleichen UIDs wie der alte Server hatte. Lebe und lerne!

0

Es gibt eine Erweiterung für Thunderbird, um Duplikate zu finden und zu löschen. z.B. basierend auf der Nachrichten-ID (die normalerweise vom ursprünglichen Absender der E-Mail generiert wird und sich daher bei der Aktualisierung Ihrer Infrastruktur nicht geändert hat).

+0

Ich habe http://removedupes.mozdev.org/ verwendet und es funktioniert gut. Die Optionen können so konfiguriert werden, dass die Nachrichten-ID im Vergleich verwendet wird. – Pauld