前田です。

2008/09/30 15:28 Kazuhiro NISHIYAMA <zn / mbf.nifty.com>:
> http://sylpheed.sraoss.jp/diary/?date=20080926#p01
> をみて、net/pop.rbもsylpheedと同じような対応を
> すればいいのではないかと思ったのですが、どうでしょうか?
>
> 1.8ではNet::POP3Command#apopで
>      if /[^!-~]/n =~ @apop_stamp || /@/ !~ @apop_stamp
>        raise POPAuthenticationError, 'Invalid APOP server; cannot login'
>      end
> のようなチェックになると思います。

同じようなことですが、POP3Command#initializeでtimestampにマッチさせる
正規表現自体を以下のように変えてしまってはどうでしょうか。

   def initialize(sock)
     @socket = sock
     @error_occured = false
     res = check_response(critical { recv_response() })
     @apop_stamp = res.slice(/<[!-~]+@[!-~]+>/)
   end

RFC1939によると、"The syntax of the timestamp corresponds to the
`msg-id' in [RFC822]"とのことなので、(ちょっと正規表現が緩いですが)
問題ない気がします。

根本的な対策としては、ちゃんとした証明書でPOP over SSLを使うのがよい
のでしょうね。

-- 
Shugo Maeda