タイガー!タイガー!じれったいぞー!(SE編)

AS400,WAS,GlassFish,Java,JavaEE,JSF等の開発における日々の気づきをまとめたブログ(備忘録)。

【Thunderbird】 POP3受信済みメールが再受信されてしまう

メールクライアントで「Mozilla Thunderbird」は、非常に便利で大変重宝させてもらってます!

ただ先日、POP3の受信済みメールが再受信されてしまう現状が発生したので、その仕組みを学んでおきたいと思います。

受信済みメールを管理するファイル

ググってみると、どうやら下記のファイルで一元管理されているようです!

C:\Users\USER_NAME\AppData\Roaming\Thunderbird\Profiles\PROFILE_ID.default\Mail\MAIL_DOMAIN_NAME\popstate.dat

気になる中身を見てみると・・・

# POP3 State File
# This is a generated file!  Do not edit.

*MAIL_DOMAIN_NAME USER_NAME
k 55daa24b@12413 1465888909
k 55daa24b@12428 1465902328
k 55daa24b@12390 1465867308
k 55daa24b@12435 1465943505
k 55daa24b@12420 1465892509
k 55daa24b@12416 1465889508
k 55daa24b@12397 1465873908
:

なんじゃこれは??

どうやら、3桁目から16桁目の合計14桁の文字列がメール1件ごとのキーになっているようです。

直近で届いたメールのソースを確認してみると、キーらしき文字列が3行目にありました!

From - Wed Jun 15 07:31:45 2016
X-Account-Key: account2
X-UIDL: 55daa24b@12435   <<<<<<<<<<<<<<<<<<
X-Mozilla-Status: 0001
X-Mozilla-Status2: 00000000
X-Mozilla-Keys: 

このキーでメールを受信済みかどうかを認識させているのですね。

下記のサイトに、そのキー「X-UIDL」の意味が書かれていました。

@IT - メールヘッダ一覧

X-UIDL : POP利用時のためのユニーク文字列。POPサーバが付加する

なるほど。POPサーバ側で割り振ってくれているというわけですか。

動作検証

おまけで、下記の2点の操作で検証してみました。

(1) popstate.datをオープン状態で、メール手動受信してみる

  • 結果:popstate.datに書き込みできなかったため、同一のメールが再度受信された。

(2) popstate.datから任意の1行を削除して、メール手動受信

  • 結果:削除した行と同一のIDのメールのみ受信された。

今回の問題の結論

ということで、結論です。ソフトのバグ、もしくはその発生時のPCの問題なのでしょう。

  • 何かの影響で、「popstate.dat」の中身がすべてクリアされたか、「popstate.dat」が削除されてしまったのかもしれない。(直接的な原因は不明)
  • POPサーバ側は、メールを貯めいているだけなので、障害の原因であることはゼロといえる。

以上です。