OpenPNEのPOP3認証(MS-Exchange 2003)

@ITの記事をに習って、OpenPNEPOP3認証に挑戦。
社内の情報共有のためだ。
http://www.atmarkit.co.jp/fwcr/rensai/openpne02/openpne02_2.html


しかし、設定ではまった。


結論を言うと、Exchange Server 2003でPOP3認証を試したところ、
記事にある設定(config.php)だけでは、認証に失敗してしまった。


解決策として、
強引だけど、OpenPNEが持っているPEAR:Net_Authライブラリを修正しちゃいました。
$OPENPNE_DIR/lib/include/Net/POP3.php
以下の行をコメント。

//$this->_parseCapability();


これで、POP3認証がうまくいきました。


この_parseCapability()は、POP3の拡張(RFC2449)で定義されているCAPAコマンド
の実行結果を解析するAPIのようだが、どうも、この挙動がどうもおかしい。
Exchange Serverが、当然、サポートしているUSER認証方式が、なぜか、未サポート
とみなされ、こちらがIDとパスワードを送信する前にエラーとなってしまうようだ。


ちなみに、telnetで直接試したExchangeからのCAPAコマンドの返答。

Escape character is '^]'.

  1. OK Microsoft Exchange Server 2003 POP3 server ready.

CAPA

  1. OK Capability list follows

TOP
USER
PIPELINING
EXPIRE NEVER
UIDL
SASL NTLM

POP3コマンド
http://www.atmarkit.co.jp/fnetwork/rensai/netpro07/pop3-commands.html


しかし、原因はいったい何だろう。
PEAR:Net_Authライブラリのちょんぼなのか、ライブラリ作者がMS嫌いなのか。
Exchage以外のメールサーバでは試していないので、何ともいえないが、
メールサーバによってCAPAコマンドに対する返答のフォーマットが異なるため???
もう少し、調べてみたい。


ちなみに、そもそもconfig.phpに記述するPEAR:Authの設定で、methodの値をFALSEに
設定すると、Net_Authが呼び出されないと書いている。
もちろん、これも試したが、CAPAコマンドが実行されてしまう。これも謎。
もしや、俺のちょんぼ???
PEAR:AuthのAuth_Container_POP3の説明
http://pear.php.net/manual/en/package.authentication.auth.storage.pop3.php


もっとスマートな解決法があれば教えてプリーズ!