68user's page 掲示板

Prev< No. 2371〜2376> Next  [最新発言に戻る] [過去ログ一覧]
No. 2371 # kuw 2001/12/13 (木) 06:44:11
>>2370 68user
>それは mail box にメールがたまっていなかったときのみ . が
>ないのでしょうか? あるいはメールがたまっていても . がない
>のでしょうか?
メールがたまっていなかったときのみです。
メールがたまっているときは、
> +OK 1 messages (1146 octets)
> 1 1146
> .
となります。

>また、その POP3 サーバアプリケーションの名前は
>何かわかりますか?
EMWAC の IMS POP3 Server 0.87 です。
5, 6 年前に NT にインストールして以来、そのまま使っているので、
かなり古いものだと思います。
# この数年、NT を全くいじっていないので、最近の事情はわかりませんが・・・

>ちなみに . をもってレスポンスの終了と見なしている
もちろん、これは正しい仕様だと思いますし、
同じ仕様の MUA やメールチェッカーも多いと思います。

No. 2372 # わたなべ 2001/12/13 (木) 09:57:20
>>2364わたなべ
おはようございます。
昨日の続きですが、下記のようシンプルにしてテストしてみましたが、状況に変化はありませんでした。
よろしく御願いします。

---------------------------------------------
print SOCKET "USER $username\r\n";
print SOCKET "PASS $passwd\r\n";

print SOCKET "LIST\r\n";

while (<SOCKET>){
    m/^\.\r\n$/ && last;
        print $_;
}
print SOCKET "QUIT\r\n";
---------------------------------------------

上記の結果
■AT&Tに接続した場合
+OK <283**.10082***86@mail.att.ne.jp>
+OK
+OK
(ここで止まってしまうので Ctrl+C)
^C
%

■iij4uに接続した場合
+OK IIJ POP3 Server (**.iij4u.or.jp) starting. <128**.1008***94@**.iij4u.or.jp>
+OK Password required: ******@**.iij4u.or.jp
+OK ******@**.iij4u.or.jp has 2 messages (2182 octets)
+OK 2 messages (2182 octets)
%

-------------------------------------------------------------------------------
■telnetでAT&Tに接続した場合
telnet ***.att.ne.jp 110
+OK <283**.10082***86@mail.att.ne.jp>
USER ********
+OK
PASS ********
+OK
LIST
+OK
1 958
2 960
.
QUIT
+OK

■telnetでiij4uに接続した場合
telnet **.iij4u.or.jp 110
+OK IIJ POP3 Server (**.iij4u.or.jp) starting. <128**.1008***94@**.iij4u.or.jp>
USER ********
+OK Password required: ******@**.iij4u.or.jp
PASS ********
+OK ******@**.iij4u.or.jp has 2 messages (2182 octets)
LIST
+OK 2 messages (2182 octets)
1 1090
2 1092
.
QUIT
+OK IIJ POP3 Server (w/mdir) (m-**.iij4u.or.jp) signing off

No. 2373 # 68user 2001/12/13 (木) 13:02:37
>>2371 kuw
ありがとうございます。ということは、その POP3 サーバのバグと
判断してもよいようですね。

>>2372 わたなべ
では、残るは改行コードくらいですかね。

    select(SOCKET); $|=1; select(STDOUT);
    $|=1; # 標準出力のバッファリングも OFF
    print SOCKET "USER $username\r\n";
    print SOCKET "PASS $passwd\r\n";
    print SOCKET "LIST\r\n";
    while (sysread(SOCKET, $_, 1) ){ # read(2) を使って読む。
            printf("$_ [%02X] ", unpack('c',$_));
    }
    print SOCKET "QUIT\r\n";

を試して下さい。

No. 2374 # わたなべ 2001/12/13 (木) 15:01:43
>>2373わたなべ
試してみました。

+[2B] O [4F] K [20] ・・・・・・ [3E]
[0D] + [2B] 0 [4F] K [4B] [20]
[0D] + [2B] 0 [4F] K [4B] [20]
[OA]

で止まります。
NIFTYもAT&Tもこうした現象なのですが解決方法は無いものでしょうか?

赤色の文字は 「Windows 機種依存文字」か、いわゆる「半角カナ」です。 この掲示板では自動変換されますが、今後は使用しないで下さい

No. 2375 # 68user 2001/12/13 (木) 15:27:01
>>2374 わたなべ
    接続時のリプライは +OK....\r
    USER に対するリプライは +OK \r
    PASS に対するリプライは +OK \n
という変なサーバであることがわかります。
# このサーバは RFC1939 に準拠していないと思います。このサーバ
# アプリの名前を教えていただけますか。

で、\r や \n だけでも行末と見なすように、
    m/^\.\r\n$/ && last;

    m/^\.(\r\n|\r|\n)$/ && last;
として下さい (*A)。

で、これだけの対処では多分挙動は変わらないでしょう。

> [OA] で止まります。
ということは、相手が LIST に対するリプライをしていない、
つまり「LIST を受け取ったと解釈していない」ということなので、
やはり SOCKET がテキストモードになっており、
    print SOCKET "LIST\r\n";

    print SOCKET "LIST\r\r\n";
となって送信されているのではないかと推測します。

*A の変更を行った上で、再度 binmode(SOCKET) を挿入してみて下さい。

# Windows には詳しくないのですが、これでよいんでしたっけ?>どなたか

No. 2376 # わたなべ 2001/12/13 (木) 16:54:32
>>2375わたなべ
試してみましたが、状況は変わりませんでした。
AT&TにPOP3のアプリケーションを確認したところ、qmailだそうです。
サーバーのOSは、教えてくれませんでした。
よろしく御願いします。

Prev< No. 2371〜2376> Next  [最新発言に戻る] [過去ログ一覧]