joh*_*mpf 1 email crash thunderbird pop3
Thunderbird 正在从配置为 POP3 的帐户下载过去 15 小时内收到的 35 封电子邮件。
PC在中间崩溃。
重新启动后,Thunderbird 在本地没有这些新电子邮件。它认为它已经完成了。它不会重新下载它们。
从那以后,它重新下载新收到的电子邮件就好了。
我已将帐户设置为不在服务器上留言。
而且,果然,服务器(Comcast,通过网络邮件检查)没有电子邮件。收件箱是空的。
似乎应该有一些互锁,例如,邮件服务器等待邮件客户端确认电子邮件消息的下载,然后才删除该消息。
相反,邮件服务器似乎收到了 POP 请求,将所有电子邮件放入下载队列,并从收件箱中删除邮件,无论客户端是否成功下载。
我请你在我的推理中找到一个缺陷,希望这些丢失的电子邮件能在我可以找回的地方找到。
编辑:这是在 Windows 7 桌面上,A/C 壁式电源。
似乎应该有一些互锁,例如,邮件服务器等待邮件客户端确认电子邮件消息的下载,然后才删除该消息。
在标准 POP3 服务器中,删除确实是一个单独的命令。首先客户端发送RETR它想要下载的每个消息 UID,然后它发送DELE它想要删除的每个消息 UID。(下载发生在同一连接上。)
(对于某些客户端,它是“RETR 1,RETR 2,RETR 3... DELE 1,DELE 2,DELE 3...”,对于其他客户端,它是“RETR 1,DELE 1,RETR 2,DELE 2,RETR 3, DELE 3...”,但这并没有真正改变 DELE 仍然是检索后发生的单独命令的事实。)
如果 POP3 服务器本身在检索后删除邮件,这不是标准的 POP3 行为。
也就是说,客户端可能一次发送了一批命令(RETR+DELE),而实际上没有等待每个先前的消息完成下载,这肯定是客户端的设计缺陷。
但更有可能的是,客户端确实成功下载了这些消息并将它们保存到文件系统——但操作系统在崩溃时实际上还没有将挂起的更新写入磁盘。
不幸的是,这是一个常见的问题,有时崩溃后只有几秒钟的数据丢失,在其他情况下可能需要几分钟。(这取决于OS,在文件系统中,它是否是AC-或电池供电的,并且在该程序是否手动请求的数据同步或不1)。
1为什么程序在将重要数据写入磁盘时不使用 fsync()?可能是懒惰,或者可能是(至少在 Linux 上)同步操作对于日常使用来说太慢了。
| 归档时间: |
|
| 查看次数: |
71 次 |
| 最近记录: |