7 Stimmen

Wo speichert Thunderbird die UID der zuletzt über POP heruntergeladenen Nachricht?

Ich verwende Thunderbird, um E-Mails über POP3 zu empfangen. Ich habe Thunderbird so konfiguriert, dass E-Mails auf dem Server gespeichert werden. Angenommen, ich verwende eines Tages POP3 zum Abrufen von ( RETR ) 10 E-Mail-Nachrichten, 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 öffne, ist die STAT sollte 20 Meldungen anzeigen. Thunderbird sollte jedoch nicht die ersten 10 Nachrichten herunterladen, sondern bei Nachricht 11 (bzw. der eindeutigen Kennung oder UID für Nachricht 11) beginnen. Thunderbird sendet eine POP3 UIDL und vergleichen Sie dann die UIDs mit der UID der letzten Nachricht, die Thunderbird gestern abgerufen hat. Stellt Thunderbird fest, dass die letzte UID mit der UIDL-Liste für Nachricht 10 übereinstimmt, wird Thunderbird RETR 11 , RETR 12 , und so weiter.

In meinem Fall ist die POP3 STAT Befehl zeigt an, dass ich 5379 Nachrichten auf dem POP-Server habe. Etwa 5000 davon habe ich bereits erhalten. Aus irgendeinem Grund will Thunderbird alle 5379 Nachrichten herunterladen, anstatt bei 5001 zu beginnen. Ich versuche, dieses Problem zu beheben, und suche nach der UID, von der Thunderbird annimmt, dass sie die letzte abgerufene Nachricht war.

Weiß jemand, wo Thunderbird (unter Windows) die letzte UID speichert, die es zum Vergleich mit der UIDL (Liste) verwendet?

Gibt es eine Möglichkeit, diesen Wert manuell einzustellen, so dass Thunderbird mit dem Abruf in der Nähe von 5001 beginnt?

1 Stimmen

Offensichtlich hätten Sie Ihr Update in eine Antwort packen sollen, denn genau das ist es.

0 Stimmen

Warum verwenden Sie POP mit aktivierter Option "Nachrichten auf dem Server lassen"? Dafür ist doch IMAP da :-)

2 Stimmen

Nicht programmierbezogen?

4voto

Pauld Punkte 365

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

Offensichtlich funktioniert Thunderbird nicht so, wie ich es oben beschrieben habe. Ich glaube, Thunderbird macht folgendes. Er sendet eine POP3 UIDL um eine Liste der UIDs zu erhalten, die auf dem POP-Server gespeichert sind. Anschließend vergleicht er diese Liste mit den UIDs, die in popstate.dat . Alle UIDs, die nicht bereits in popstate.dat sind neue Nachrichten, die abgerufen werden sollen. Der UIDL-Befehl gab zuvor die Nachrichtennummer und die zugehörige UID zurück. Thunderbird muss dann einen POP3 RETR unter Verwendung der Nachrichtennummer, die mit den noch nicht abgerufenen UIDs verbunden ist. Thunderbird muss auch das Flag in popstate.dat und führen Sie alle Aktionen für die zugehörige Nachricht durch. Zum Beispiel kann das Flag d weist Thunderbird an, die zugehörige Nachricht zu löschen. Die Seite f bedeutet, dass Thunderbird nur einen verkürzten Teil der Nachricht hat und die vollständige Nachricht abrufen soll.

Zu einem bestimmten Zeitpunkt aktualisiert Thunderbird die popstate.dat mit den neuen Nachrichten. Ich denke, dies geschieht bei einer Batch-Aktualisierung auf popstate.dat nachdem alle Aktionen abgeschlossen sind. Das heißt, wenn 10 neue Nachrichten abgerufen werden müssen, popstate.dat wird erst dann aktualisiert, wenn alle 10 Nachrichten abgerufen wurden.

Ich glaube, mein Problem liegt auf dem Server. Offenbar wurde unsere Infrastruktur auf eine neue Version des POP-Servers aktualisiert, und auf der neuen Version wurden neue UIDs zugewiesen. Mein popstate.dat hatte alle alten UIDs. Die UIDL an den neuen POP-Server sendet eine Liste von 5000+ UIDs, die Thunderbird nicht in popstate.dat . Thunderbird lud daraufhin alle über 5000 Nachrichten herunter. Wenn der neue POP-Server die alten UIDs beibehalten hätte, hätte Thunderbird gesehen, dass ich die meisten der über 5000 Nachrichten bereits abgerufen hatte, und hätte nur die heruntergeladen, die ich nicht hatte. Ich glaube, die meisten Leute in meiner Organisation verwenden Outlook und nicht POP3, und wie auch immer die Versionsaktualisierung des POP-Servers durchgeführt wurde, es gab keine Probleme für diese Benutzer. Es scheint, als wäre eine besondere Sorgfalt erforderlich gewesen, um sicherzustellen, dass der neue Server die gleichen UIDs wie der alte Server hat. Lebe und lerne!

0voto

Malx Punkte 982

Welche Version der Serversoftware gibt es?

http://courier.sourcearchive.com/documentation/0.60.0-2/pop3dserver_8c-source.html

00718 ** Die UIDL der Nachricht ist eigentlich nur der Dateiname, bis zum ersten MDIRSEP-Zeichen

Möglicherweise müssen Sie nur den ersten Teil der UIDL in popstate.dat durch neue ersetzen?

0voto

Es gibt eine Erweiterung für Thunderbird, um Duplikate zu finden und zu löschen, z. B. auf der Grundlage der Message-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 Stimmen

Ich habe mit removedupes.mozdev.org und es funktioniert gut. Die Optionen können so konfiguriert werden, dass die Message-ID für den Vergleich verwendet wird.

0voto

Magentron Punkte 366

Vielleicht ist das nicht die Antwort, nach der der Fragesteller sucht, aber es könnte ihm vielleicht helfen. Ich hatte ähnliche Probleme und um sie zu lösen, habe ich ein kleines php-Skript erstellt, um die popstate-Datei neu zu erstellen. Sie können es hier finden:

https://github.com/Magentron/rebuild_thunderbird_popstate

Einfaches PHP-Skript, um die Datei popstate.dat von Thunderbird neu zu erstellen. Hauptsächlich nützlich, wenn Thunderbird abstürzt und danach beginnt, alle Nachrichten die auf dem Mailserver gespeichert wurden. Die Standarddatei, die erzeugt wird ist popstate.dat.GENERATED. Wenn Sie dies auf die Datei popstate.dat in dem entsprechenden Thunderbird-Verzeichnis ändern, stellen Sie bitte sicher, dass Thunderbird geschlossen ist, da es sonst zu weiteren Problemen kommen kann.

Bitte beachten Sie, dass ich nicht versucht habe, dies zum besten Code zu machen, den ich je geschrieben habe. geschrieben habe...

NB: Windows-Unterstützung ist vorhanden, wurde aber nie getestet!

Verwendung

usage: rebuild_popstate.php [-d] [-i n] [-s] [-v] [-f file] server [ port ]
    -c      CRLF flag, use when talking to Windows servers
    -d      debug flag
    -f      output filename (if popstate.dat, Thunderbird needs to be closed!)
    -i      ignore the last n messages (for if you don't have them yet)
    -s      use for secure POP3 (SSL/TLS)
    -v      verbose flag

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X