8

Thunderbird を使用して、POP3 を使用して電子メールを受信します。メールをサーバーに残すように Thunderbird を設定しました。ある日、POP3 を使用してRETR10 件の電子メール メッセージを取得し、その夜ログアウトしたとします。一晩でさらに 10 件のメッセージがメールボックスに送信されます。翌朝 Thunderbird を起動すると、STATコマンドは 20 個のメッセージを表示するはずです。ただし、Thunderbird は最初の 10 件のメッセージをダウンロードするべきではありません。メッセージ 11 (またはメッセージ 11 の一意の識別子または UID) から開始する必要があります。Thunderbird は POP3UIDLコマンドを送信し、その UID を Thunderbird が昨日取得した最後のメッセージの UID と比較します。最後の UID がメッセージ 10 の UIDL リストと一致することがわかり、Thunderbird はRETR 11RETR 12などになります。

私の場合、POP3STATコマンドは、POP サーバーに 5379 個のメッセージがあることを示しています。私はすでに約5000個を受け取りました。何らかの理由で、Thunderbird は 5001 から開始するのではなく、5379 のすべてのメッセージをダウンロードしたいと考えています。これをデバッグしようとしていて、Thunderbird が最後に取得したメッセージであると考える UID を探していました。

Thunderbird (Windows 上) が最後の UID を保存する場所を知っている人はいますか? UIDL (リスト) と比較するために使用しますか?

手動で設定して、Thunderbird に 5001 に近い場所から取得を開始させる方法はありますか?

4

4 に答える 4

4

Thunderbird には、UID、タイムスタンプ (エポック)、およびフラグを含むpopstate.datというファイルがあります。フラグは、関連付けられたメッセージに対して Thunderbird が実行するアクションを示します。

明らかに、Thunderbird は実際には上で説明したようには機能しません。Thunderbird は次のように動作すると思います。POP3UIDLコマンドを送信して、POP サーバーに保存されている UID のリストを取得します。次に、このリストを に保存されている UID と比較しpopstate.datます。まだ入っていない UID は、popstate.dat取得される新しいメッセージです。UIDL コマンドは以前、メッセージ番号と関連する UID を返しました。次に Thunderbird は、RETRまだ取得していない UID に関連付けられたメッセージ番号を使用して POP3 コマンドを実行する必要があります。また、Thunderbird はフラグを見てpopstate.dat、関連付けられたメッセージに対して何らかのアクションを実行する必要があります。たとえば、フラグdは、関連するメッセージを削除するように Thunderbird に指示します。のfフラグは、Thunderbird がメッセージの切り捨てられた部分のみを持ち、完全なメッセージを取得する必要があることを意味します。

ある時点で、Thunderbird はpopstate.datを新しいメッセージで更新します。popstate.datこれは、すべてのアクションが完了した後のバッチ更新で発生すると思います。つまり、取得する新しいメッセージが 10 件ある場合、 はpopstate.dat10 件すべてのメッセージが取得されるまで更新されません。

私の問題はサーバーにあると思います。どうやら私たちのインフラストラクチャは POP サーバーの新しいバージョンにアップグレードされ、新しい UID が新しいバージョンに割り当てられました。私popstate.datはすべての古いUIDを持っていました。新しい POP サーバーへの UIDL は、Thunderbird がリストしていなかった 5000 以上の UID のリストを送信しますpopstate.dat. そのため、Thunderbird は 5000 件以上のメッセージをすべてダウンロードしました。新しい POP サーバーが古い UID を保持していた場合、Thunderbird は、私が 5000 件以上のメッセージのほとんどを既に取得していることを認識し、私が持っていないメッセージをダウンロードしただけだったでしょう。私の組織のほとんどの人は Outlook を使用しており、POP3 を使用していないと思いますが、POP サーバーにバージョン アップデートが行われたため、それらのユーザーには問題が発生しませんでした。新しいサーバーが古いサーバーと同じ UID を持つようにするために、特別な注意が必要だったようです。生活し、学びます!

于 2009-02-16T22:32:10.930 に答える
0

Thunderbirdには、重複を見つけて削除するための拡張機能があります。たとえば、message-idに基づいています(通常、メールの元の送信者によって生成されるため、インフラストラクチャの更新によって変更されていません)。

于 2009-01-26T06:56:31.717 に答える
0

どのバージョンのサーバー ソフトウェアがありますか?

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

00718 ** メッセージの UIDL は、最初の MDIRSEP 文字までのファイル名だけです

popstate.dat の UIDL の最初の部分を新しいものに置き換える必要があるだけでしょうか?

于 2009-01-03T03:56:37.233 に答える