Где Thunderbird хранит UID последнего сообщения, загруженного через POP?

StackOverflow https://stackoverflow.com/questions/318673

  •  11-07-2019
  •  | 
  •  

Вопрос

Я использую Thunderbird для получения электронной почты с помощью POP3.У меня есть Thurnderbird, настроенный оставлять электронную почту на сервере.Допустим, однажды я использую POP3 для извлечения (RETR) 10 сообщений электронной почты, затем я выхожу из системы на ночь.За ночь на мой почтовый ящик приходит еще 10 сообщений.Когда я запускаю "Тандерберд" на следующее утро, STAT команда должна показать 20 сообщений.Однако Thunderbird не должен загружать первые 10 сообщений;он должен начинаться с сообщения 11 (или уникального идентификатора или UID для сообщения 11).Thunderbird отправит сообщение POP3 UIDL выполните команду, затем сравните UID с UID последнего сообщения, полученного Thunderbird вчера.Он обнаружит, что последний UID соответствует списку UIDL для сообщения 10, после чего Thunderbird RETR 11, RETR 12, и так далее.

В моем случае POP3 STAT команда показывает, что у меня есть 5379 сообщений на POP-сервере.Я уже получил около 5000 из них.По какой-то причине Thunderbird хочет загрузить все 5379 сообщений вместо того, чтобы начинать с 5001.Я пытаюсь отладить это и искал UID, который, по мнению Thunderbird, был последним полученным сообщением.

Кто-нибудь знает, где Thunderbird (в Windows) хранит последний UID, который он будет использовать для сравнения с UIDL (списком)?

Есть ли способ вручную установить его, чтобы я мог заставить Thunderbird начать извлечение где-то близко к 5001?

Это было полезно?

Решение

У Thunderbird есть файл под названием popstate.dat который содержит UID, временную метку (эпоху) и флаг.Флаг указывает действие, которое Thunderbird должен выполнить для соответствующего сообщения.

Очевидно, что Thunderbird на самом деле работает не так, как я описал выше.Я думаю, что Thunderbird делает следующее.Он отправляет POP3 UIDL команда для получения списка UID, хранящихся на POP-сервере.Затем он сравнивает этот список с идентификаторами UID, хранящимися в popstate.dat.Любые UID, которых еще нет в popstate.dat будут ли получены новые сообщения.Команда UIDL ранее вернула номер сообщения и связанный с ним UID.Затем Thunderbird должен выполнить POP3 RETR команда, использующая номер сообщения, связанный с идентификатором пользователя, который он еще не получил.Thunderbird также должен посмотреть на флаг в popstate.dat и предпримите любые действия для соответствующего сообщения.Например, флаг d сообщает Thunderbird удалить соответствующее сообщение.Тот Самый f флаг означает, что Thunderbird содержит только усеченную часть сообщения и должен получить полное сообщение.

В какой-то момент Thunderbird обновляет popstate.dat с новыми сообщениями.Я думаю, что это происходит при пакетном обновлении для popstate.dat после того, как все действия будут завершены.То есть, если необходимо получить 10 новых сообщений, popstate.dat не обновляется до тех пор, пока не будут получены все 10 сообщений.

Я думаю, что моя проблема находится на сервере.Очевидно, наша инфраструктура обновилась до новой версии POP-сервера, и в новой версии были назначены новые UID.Мой popstate.dat у меня были все старые жидкости.UIDL на новый POP-сервер отправляет список из более чем 5000 UID, которых у Thunderbird не было в списке popstate.dat.Итак, Thunderbird приступил к загрузке более 5000 сообщений.Если бы новый POP-сервер сохранил старый UID, то Thunderbird увидел бы, что я уже извлек большинство из более чем 5000 сообщений и просто загрузил бы те, которых у меня не было.Я думаю, что большинство людей в моей организации используют Outlook и не используют POP3, и, однако, обновление версии, выполненное на POP-сервере, не вызвало проблем у этих пользователей.Похоже, потребовалась дополнительная осторожность, чтобы убедиться, что новый сервер имеет те же UID, что и старый сервер.Живи и учись!

Другие советы

Какая версия серверного программного обеспечения существует?

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

  

00718 ** UIDL сообщения - это просто имя файла, вплоть до первого символа MDIRSEP

Может быть, вам просто нужно заменить первую часть UIDL в popstate.dat на новую?

В Thunderbird есть расширение для поиска дубликатов и их удаления. например на основе идентификатора сообщения (который обычно создается исходным отправителем письма и, следовательно, не изменяется при обновлении инфраструктуры).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top