2008-11-25 11 views
8

Tôi sử dụng Thunderbird để nhận email bằng POP3. Tôi đã cấu hình Thurnderbird để để lại email trên máy chủ. Giả sử một ngày tôi sử dụng POP3 để truy xuất (RETR) 10 email, sau đó tôi đăng xuất vào ban đêm. Qua đêm 10 tin nhắn khác được gửi đến hộp thư của tôi. Khi tôi kích hoạt Thunderbird vào sáng hôm sau, lệnh STAT sẽ hiển thị 20 tin nhắn. Tuy nhiên, Thunderbird không nên tải xuống 10 thư đầu tiên; nó sẽ bắt đầu tại thông báo 11 (hoặc mã định danh duy nhất hoặc UID cho thông báo 11). Thunderbird sẽ gửi lệnh POP3 UIDL, sau đó so sánh UID với UID của thông báo cuối cùng mà Thunderbird đã truy xuất hôm qua. Nó sẽ thấy rằng UID cuối cùng khớp với danh sách UIDL cho thư 10, sau đó Thunderbird sẽ RETR 11, RETR 12, v.v.Thunderbird lưu trữ UID của tin nhắn cuối cùng được tải xuống qua POP ở đâu?

Trong trường hợp của tôi, lệnh POP3 STAT cho thấy rằng tôi có 5379 thư trên máy chủ POP. Tôi đã nhận được khoảng 5000 người trong số họ. Vì lý do nào đó, Thunderbird muốn tải xuống tất cả 5379 thư thay vì bắt đầu từ 5001. Tôi đang cố gỡ lỗi này và đang tìm kiếm UID mà Thunderbird cho là thư cuối cùng đã được truy xuất.

Có ai biết nơi Thunderbird (trên Windows) lưu trữ UID cuối cùng, mà nó sẽ sử dụng để so sánh với UIDL (danh sách)?

Có cách nào để đặt thủ công để tôi có thể bắt Thunderbird bắt đầu truy xuất ở đâu đó gần 5001 không?

+1

Dường như bạn nên đặt bản cập nhật của mình vào câu trả lời vì đó là câu trả lời. – vava

+0

Tại sao bạn sử dụng POP với "để lại tin nhắn trên máy chủ" được kích hoạt? Đây là những gì IMAP dành cho. :-) –

+1

Không liên quan đến chương trình? –

Trả lời

4

Thunderbird có tệp có tên popstate.dat có chứa UID, dấu thời gian (kỷ nguyên) và cờ. Lá cờ cho biết hành động mà Thunderbird thực hiện cho thông điệp liên quan.

Rõ ràng, Thunderbird không thực sự hoạt động như tôi đã mô tả ở trên. Tôi nghĩ rằng Thunderbird làm như sau. Nó sẽ gửi một lệnh POP3 UIDL để nhận danh sách các UID được lưu trữ trên máy chủ POP. Sau đó nó so sánh danh sách này với UID được lưu trữ trong popstate.dat. Bất kỳ UID nào chưa có trong popstate.dat là các thư mới sẽ được truy lục. Lệnh UIDL trước đó trả về số tin nhắn và UID liên quan. Thunderbird sau đó phải thực hiện lệnh POP3 RETR bằng cách sử dụng số tin nhắn được liên kết với UID mà nó chưa được truy xuất. Thunderbird cũng phải nhìn cờ trong popstate.dat và thực hiện bất kỳ hành động nào cho thư được liên kết. Ví dụ: cờ d yêu cầu Thunderbird xóa thư được liên kết. Cờ f có nghĩa là Thunderbird chỉ có một phần bị cắt bớt của tin nhắn và sẽ lấy lại toàn bộ tin nhắn.

Tại một số điểm, Thunderbird cập nhật popstate.dat bằng các thư mới. Tôi nghĩ rằng điều này xảy ra trong một bản cập nhật hàng loạt cho popstate.dat sau khi tất cả các hành động đã được hoàn thành.Tức là, nếu có 10 tin nhắn mới để truy xuất, popstate.dat không được cập nhật cho đến khi tất cả 10 tin nhắn được truy xuất.

Tôi nghĩ rằng sự cố của tôi nằm trên máy chủ. Rõ ràng cơ sở hạ tầng của chúng tôi đã nâng cấp lên phiên bản mới của máy chủ POP và UID mới đã được chỉ định trên phiên bản mới. My popstate.dat có tất cả các UID cũ. UIDL tới máy chủ POP mới gửi danh sách 5000 UID mà Thunderbird đã không liệt kê trong popstate.dat. Vì vậy, Thunderbird đã tiến hành tải xuống tất cả 5000 tin nhắn. Nếu máy chủ POP mới đã giữ lại UID cũ thì Thunderbird sẽ thấy rằng tôi đã truy xuất hầu hết 5000 tin nhắn và sẽ chỉ tải xuống những tin nhắn mà tôi không có. Tôi nghĩ hầu hết mọi người trong tổ chức của tôi đều sử dụng Outlook và không sử dụng POP3, tuy nhiên việc cập nhật phiên bản đã được thực hiện cho máy chủ POP không gây ra sự cố cho những người dùng đó. Có vẻ như cần thêm một số dịch vụ để đảm bảo máy chủ mới có cùng UID như máy chủ cũ. Sống và học hỏi!

0

Có một tiện ích mở rộng cho Thunderbird để tìm các bản sao và xóa chúng. ví dụ. dựa trên id tin nhắn (thường được tạo bởi người gửi ban đầu của thư và do đó không thay đổi với bản cập nhật cơ sở hạ tầng của bạn).

+0

Tôi đã sử dụng http://removedupes.mozdev.org/ và nó hoạt động tốt. Các tùy chọn của nó có thể được cấu hình để sử dụng Message-ID trong so sánh. – Pauld