[▲前のスレッド]

[32860] UIDLが同一であるのに未読となる理由は? 
2006/8/25 (金) 10:07:23 Hiro-H
jpecg-02p67.ppp14.odn.ne.jp / Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; ja) Opera 9.01
B2 (2.25.02)を社内で使用しています。
「サーバーにメールを残す」設定で使用しています。

社内LANが外部プロバイダへのメール送受信を
遮断しているため、下記の2通りの方法でメールの
やりとりを行っております。
1.モバイルカード(Vodafone)によるプロバイダ接続
2.「モツゴメールプロキシ」による社内LAN経由接続

で、質問なのですが、一度モバイルカードで受信したメールを
モツゴメールプロキシ経由で接続し直すと、UIDLが
全く同一であるにもかかわらず、すでに受信したメールが「未受信」と
なってしまいます。この理由、もしくは意図を教えて欲しいのです。

以下プロトコルログにより説明します。

>>> Connecting to "localhost" [2006/08/25 09:33:36] <<<
+OK Welcome to the Motsugo POP3 Proxy Server
USER username(hogehoge.ne.jp)
+OK Password required username@hogehoge.ne.jp
PASS ********
+OK username is welcome here ssl connect
STAT
+OK 3 5379670
LIST
+OK 3 messages
1 2688605
2 1817
3 2689248
.
UIDL
+OK 3 messages
1 <28F8347ED5E5D811AC8A0002A5EA82430F84B8@putiputi>
2 <18172739-2006-0825-090041-654397@s-mss05.hogehoge.ne.jp>
3 <28F8347ED5E5D811AC8A0002A5EA82430F84B9@putiputi>
.
QUIT
+OK Closing communication channel

ここまでで、メール送受信をモツゴ経由で行っております。
3通のメールがサーバにありますが、全て受信済ですのでRETRコマンドは
発行されません。以下にこの続きで、今度はモバイルカードに接続し直した時の
リモートメールを開いた時のプロトコルログを示します。

>>> Connecting to "hogehoge.ne.jp" (SSL/TLS) [2006/08/25 09:37:03] <<<
+OK InterMail POP3 proxy server ready.
USER username
+OK please send PASS command
PASS ********
+OK username is welcome here
STAT
+OK 4 5426930
LIST
+OK 4 messages
1 2688605
2 1817
3 2689248
4 47260
.
UIDL
+OK 4 messages
1 <28F8347ED5E5D811AC8A0002A5EA82430F84B8@putiputi>
2 <18172739-2006-0825-090041-654397@s-mss05.hogehoge.ne.jp>
3 <28F8347ED5E5D811AC8A0002A5EA82430F84B9@putiputi>
4 <20060825003557.6C84239E766@di7.hoge.com>
.
TOP 4 0
+OK
TOP 3 0
+OK
TOP 2 0
+OK
TOP 1 0
+OK
QUIT
+OK username InterMail POP3 server signing off.

たまたまもう1通新着メールが来ていますが、B2はこの4通のメール全てを
「未受信」と判断し、メールの件名は太字で表示されます。

UIDLが同一であれば、必ず「受信済である」と判断されると思っていたのですが、
上記のようにUIDLが同一であるのに接続形態が変わっただけでなぜ「未受信」と
判断してしまうのでしょうか?

[32861] Re: UIDLが同一であるのに未読となる理由は? 
2006/8/25 (金) 16:35:16 Shusaku
ntkngw284023.kngw.nt.ftth.ppp.infoweb.ne.jp / INCM1.23a
▼ Hiro-Hさん
>UIDLが同一であれば、必ず「受信済である」と判断されると思っていたのですが、
>上記のようにUIDLが同一であるのに接続形態が変わっただけでなぜ「未受信」と
>判断してしまうのでしょうか?


「接続形態」ではなく「サーバー名」が変わっていることが影響しています。
Becky!で「サーバーにメールを残す」設定した場合、メールの既読管理は
メールボックスフォルダ配下にある、"ユーザID@サーバー名.dat" という
ファイルで行っているのでサーバー名が異なると既読管理も別々になります。

プロトコルログを見ると、"localhost" と "hogehoge.ne.jp" という違いが
ありますので、username@localhost.dat と username@hogehoge.ne.jp.dat の
2つの管理ファイルが作成されているはずです。このような仕組みであるため、
メールサーバ名が変わってしまうと「受信済み」のUIDLが共有できないのです。

Windows XP であれば、ハードリンクを作成するコマンドラインのツールが
標準で入っていると思いますので、それを使って、2つに分離してしまった
管理ファイルを1つにまとめる方法を試してはどうでしょうか?

2つのファイルを同時にアクセスするケースは無いと思いますし、
ファイルのアクセスに特殊な方法を用いているとも思いませんので、
おそらく大丈夫ではないでしょうか?

《《 しかし結果は保障しませんので自己責任でお願いします (^o^) 》》

コマンドラインツールの使い方に詳しくない場合は止めたほうが無難です。

| C:\>fsutil hardlink create
| 使用法 : fsutil hardlink create <新しいファイル名> <既存のファイル名>
|     例 : fsutil hardlink create c:\foo.txt c:\bar.txt


2つある 〜.dat のうちの一方、例えば username@localhost.dat を削除して、

| fsutil hardlink create username@localhost.dat username@hogehoge.ne.jp.dat

とすれば、1個のファイルの実体を参照する名前が2個ある状態になり、
「受信済み」メールのUIDLを共有することが出来るでしょう。

※コマンドラインでのファイル名の指定については注意してください。
 ファイル名に = (イコール) などの特殊な記号が含まれている場合は、
  ファイル名を "" (引用符)で囲まないと失敗します。

[32862] Re2: UIDLが同一であるのに未読となる理由は? 
2006/8/25 (金) 17:11:21 Hiro-H
202.215.123.197 / Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; ja) Opera 9.01
Shusakuさん、非常にわかりやすい回答をありがとうございます。

UIDLの管理がサーバー名ごとに別ファイルでされているというのは、
気づきませんでした。
ご指摘のように、ハードリンクで2つのファイル名を1つのUIDLファイル
として扱うというのは一つの方法かもしれませんね。
捨てアカウントをYahoo!メールで取ってテストしてみます。

[32868] ハードリンクによる手法順調です。 
2006/8/28 (月) 14:41:12 Hiro-H
202.215.123.197 / Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; ja) Opera 9.01
Shusakuさんにご提案頂いたハードリンクによるUIDL管理ファイルの
実ファイル統合手法は順調に動作しております。
いいアイデアのご提案ありがとうございます。

[▼次のスレッド]
INCM/CMT
Cyclamen v3.84