pop3 - Thunderbird 在哪里存储通过 POP 下载的最后一条消息的 UID?

标签 pop3 thunderbird uidl

我使用 Thunderbird 使用 POP3 接收电子邮件。我已将 Thurnderbird 配置为在服务器上留下电子邮件。假设有一天我使用 POP3 检索 ( RETR ) 10 封电子邮件,然后我晚上注销。一夜之间又有 10 条消息发送到我的邮箱。当我第二天早上启动 Thunderbird 时,STAT命令应显示 20 条消息。但是,Thunderbird 不应下载前 10 条消息;它应该从消息 11(或消息 11 的唯一标识符或 UID)开始。 Thunderbird 将发送 POP3 UIDL命令,然后将 UID 与 Thunderbird 昨天检索到的最后一条消息的 UID 进行比较。它会发现最后一个 UID 与消息 10 的 UIDL 列表匹配,然后 Thunderbird 将 RETR 11 , RETR 12 , 等等。

就我而言,POP3 STAT命令显示我在 POP 服务器上有 5379 条消息。我已经收到了大约 5000 个。出于某种原因,Thunderbird 想要下载所有 5379 条消息,而不是从 5001 开始。我正在尝试对此进行调试,并且正在寻找 Thunderbird 认为是检索到的最后一条消息的 UID。

有谁知道 Thunderbird(在 Windows 上)在哪里存储最后一个 UID,它将用来与 UIDL(列表)进行比较?

有没有办法手动设置它,以便我可以强制 Thunderbird 在接近 5001 的地方开始检索?

最佳答案

Thunderbird 有一个名为 popstate.dat 的文件包含 UID、时间戳(纪元)和标志。该标志指示 Thunderbird 对相关消息执行的操作。

显然,Thunderbird 实际上并没有像我上面描述的那样工作。我认为 Thunderbird 会执行以下操作。它发送一个 POP3 UIDL命令以获取存储在 POP 服务器上的 UID 列表。然后将此列表与存储在 popstate.dat 中的 UID 进行比较。 .任何尚未在 popstate.dat 中的 UID是要检索的新消息。 UIDL 命令之前返回了消息编号和关联的 UID。 Thunderbird 然后必须执行 POP3 RETR命令使用与尚未检索到的 UID 关联的消息编号。雷鸟也一定要看popstate.dat中的flag并对相关消息采取任何操作。例如,标志 d告诉 Thunderbird 删除关联的消息。 f标志表示 Thunderbird 只截断了消息的一部分,应该检索完整的消息。

在某些时候,Thunderbird 更新了 popstate.dat与新消息。我认为这发生在对 popstate.dat 的批量更新中所有 Action 完成后。也就是说,如果有 10 条新消息要检索,popstate.dat在检索到所有 10 条消息之前不会更新。

我认为我的问题出在服务器上。显然,我们的基础设施已升级到新版本的 POP 服务器,并且在新版本上分配了新的 UID。我的 popstate.dat拥有所有旧的 UID。新 POP 服务器的 UIDL 发送了一个包含 5000 多个 UID 的列表,Thunderbird 没有在 popstate.dat 中列出。 .因此,Thunderbird 继续下载所有 5000 多条消息。如果新的 POP 服务器保留了旧的 UID,那么 Thunderbird 会看到我已经检索了 5000 多条消息中的大部分,并且会下载我没有的那些。我认为我组织中的大多数人都使用 Outlook 并且不使用 POP3,但是对 POP 服务器进行的版本更新并没有对这些用户造成问题。似乎需要额外小心以确保新服务器与旧服务器具有相同的 UID。活到老,学到老!

关于pop3 - Thunderbird 在哪里存储通过 POP 下载的最后一条消息的 UID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/318673/

相关文章:

php - fsockopen-如何检测消息结束?

javascript - 通过 Thunderbird 扩展进行文件系统操作

exchange-server - Thunderbird EWS 提供商共享文件夹 ID

perl - MS Exchange POP3 UIDL 命令提供的 UID 真的是唯一的吗?

json - 升级到 7.5.3 后 Vaadin 无法解析其安全 key

java - 如何从Java中的邮件服务器捕获电子邮件?

c# - 检索电子邮件的 AlternateView

java - MimeMessage.getContent - 未知编码 : 8bitPrecedence

ubuntu - 如何从命令行在 Thunderbird 中撰写和发送电子邮件?