AtMail CRAM MD5認証 失敗

AtMailをximapdで使う件(消えてしまった記事をGoogleから復活)

AtMailのソースとにらめっこしたが、全体像がつかめない。でもソースをいじってみた。
AtMailのIMAPクライアントとのやりとりは、$AtMail/libs/IMAP_Clinet.phpに書いてあるようで、このファイルには
function authenicate(),authenticateCRAMMD5()という2つの関数が記述してあるが、AtMail配下のphpファイルのどこからも呼び出されていない(javascriptから呼んだりってのもあるのかな)し、authenticateCRAMMD5()はからっぽなので、ここに
[php]
function authenticateCRAMMD5($user,$pass)
{
$cid = $this->cid;
$this->socket->writeLine(“$cid AUTHENTICATE CRAM-MD5”);

$usern = explode(“@”,$user,2);

$challenge = base64_decode( $this->socket->readLine() );
$response = base64_encode( $usern[0] . ‘ ‘ . $this->hmac_md5($pass,$challenge) );

$this->socket->writeLine(“$response”);
}
[/php]
こう書いて、IMAP_Client.php内のfunction login()から強制的に呼び出してみた。hmac_md5()は、roundcubeのソースから拝借。
実行すると、ximapdのログがこうなった
[text]
D, [2008-07-03T13:37:49 #5885] DEBUG — : C: ATMAIL01 AUTHENTICATE CRAM-MD5
D, [2008-07-03T13:37:49 #5885] DEBUG — : received ATMAIL01 AUTHENTICATE from 127.0.0.1
D, [2008-07-03T13:37:49 #5885] DEBUG — : S: + PDU4ODUuMTIxNTA1OTg2OS42NzA5ODBAZm9yYmlkLmZvcmNvbS5qYT4=
D, [2008-07-03T13:37:49 #5885] DEBUG — : C: amFyZXRoIGZlZTMzMWJkY2Q0M2I3YmFmNGY2M2FhZGU0YjNmMDkx
D, [2008-07-03T13:37:52 #5885] DEBUG — : S: ATMAIL01 NO AUTHENTICATE failed
[/text]
ちゃんとximapdにわたってるみたいだし、challengeコードもximapdから受け取ってるし、あとの計算もたぶん間違いないんだけど、NGなので、よくわかっていないAtMail内のwriteLine()、readLine();の使い方がまずいのだろうか。

コメント

タイトルとURLをコピーしました