Thunderbird имеет файл с именем popstate.dat , который содержит UID, метку времени (эпоху) и флаг. Флаг указывает действие, которое Thunderbird должен выполнить для связанного сообщения.
Очевидно, Thunderbird на самом деле не работает, как я описал выше. Я думаю, что Thunderbird делает следующее. Он отправляет команду POP3 UIDL
, чтобы получить список UID, хранящихся на сервере POP. Затем он сравнивает этот список с UID, хранящимся в popstate.dat
. Любые UID, которых еще нет в popstate.dat
, являются новыми сообщениями для извлечения. Команда UIDL ранее вернула номер сообщения и связанный с ним UID. Затем Thunderbird должен выполнить команду POP3 RETR
, используя номер сообщения, связанный с UID, который он еще не получил. Thunderbird также должен посмотреть на флаг в popstate.dat
и предпринять любые действия для связанного сообщения. Например, флаг d
говорит Thunderbird удалить соответствующее сообщение. Флаг f
означает, что Thunderbird имеет только усеченную часть сообщения и должен получить полное сообщение.
В какой-то момент Thunderbird обновляет popstate.dat
новыми сообщениями. Я думаю, что это происходит в пакетном обновлении до popstate.dat
после того, как все действия были выполнены. То есть, если нужно получить 10 новых сообщений, popstate.dat
не будет обновлено, пока не будут получены все 10 сообщений.
Я думаю, что моя проблема находится на сервере. По-видимому, наша инфраструктура была обновлена до новой версии POP-сервера, и новые версии были назначены для новой версии. У моего popstate.dat
были все старые UID. UIDL на новый POP-сервер отправляет список из 5000+ UID, которых Thunderbird не указал в popstate.dat
. Итак, Thunderbird приступил к загрузке всех 5000+ сообщений. Если бы новый POP-сервер сохранил старые UID, то Thunderbird увидел бы, что я уже получил большинство из 5000+ сообщений и просто скачал те, которых у меня не было. Я думаю, что большинство людей в моей организации используют Outlook и не используют POP3, и, тем не менее, обновление версии было сделано для POP-сервера, что не вызывало проблем для этих пользователей. Похоже, что для того, чтобы новый сервер имел те же идентификаторы UID, что и старый сервер, потребовалось дополнительное внимание. Живи и учись!