印刷用表示へ切り替え 通常表示へ切り替え 更新履歴を表示 更新履歴を隠す
Linux IlohaMail が動かない

IlohaMail は、PHP ベースの Web メールクライアントで、動作が軽快で使いやすいらしい。ところが、IlohaMail をインストールするためだけに PHP をインストールしたにも関わらず、動作しない。なぜか認証に失敗してしまう。試行錯誤の途中、ひょんなことから問題が解決してしまった。しかし、原因と結果の直接的な結びつきはなく、気分的にはスッキリしないのであった。

■ ■ ■

IlohaMail.org は PHP4 ベースの Web メールクライアントで、メール受信には IMAP と POP3 プロトコルをサポートしている。MySQL をバックエンドとして選択することもできる。名前は、英語の「ABC」にあたる「いろは」からとっている。「はじめての」とか「基本の」などの意味である。「Iroha」でなく「Iloha」としたのは、恐らく英語では「ro」より「lo」の方が日本語の発音に近いためだろう (ローマ字で「r」とするのは、イタリア語の「r」が日本語の「ラ行」の音に近いからだと思われる)。作者の Ryo Chijiiwa さんはアメリカ在住の日系人。IlohaMail は日本語を含む数多くの言語をサポートしている。

ここでの環境は、Vine Linux 2.6、PHP 4.2.3、IlohaMail 0.8.13 である。

IlohaMail.org - Downloads からダウンロードし、展開してインストールする。PHP のプログラムソースなので、インストールといっても Web でアクセスできるディレクトリにコピーするだけである。インストールの仕方は、展開したディレクトリにある「INSTALL」にもあるが、「Manual」ディレクトリにある HTML 形式のドキュメントの方が詳しくて見やすい。

インストールして Apache を再起動し、ブラウザアクセスしてみると、上手く動作してくれない。

POP3 での認証エラー
POP3 での認証エラー


POP3 でアクセスすると、認証エラーとなる。/var/log/maillog には次のような出力となった。

Aug 11 04:23:38 tp600 in.qpopper[12131]: n at tp600 (192.168.0.199): -ERR [AUTH]
 PAM authentication failed for user "n": Authentication failure (7)
Aug 11 04:23:38 tp600 in.qpopper[12131]: [AUTH] Failed attempted login to n from
 host (tp600) 192.168.0.199

/var/log/messages のログは次の通りである。

Aug 11 04:23:27 tp600 PAM_pwdb[12131]: authentication failure; (uid=0) -> n for qpopper service

Vine Linux では、認証に PAM を使っていることが分かる。PAM 関係のコンフィグレーションファイルは /etc/pam.d にあり、関連モジュールは /lib/security 以下にある。POP3 関係のコンフィグレーションは pop と qpopper がある。qpopper を編集し、pam_pwdb.so を pam_unix.so に変えてみたが、同じように認証エラーとなった。ログには pam_unix がエラーを残していた。

念のため telnet を使って 110 番ポートでアクセスしてみると、何事もなく認証に成功する。

IMAP での認証エラー
IMAP での認証エラー


IMAP プロトコルでアクセスした場合も、認証に失敗する。/var/log/maillog には IMAP サービスが初期化されたことを示すログが出力されている。

Aug 11 04:34:40 tp600 imapd[12306]: imap service init from 192.168.0.199

対応する /var/log/messages のログは次の通り。

Aug 11 04:34:41 tp600 PAM_pwdb[12306]: authentication failure; (uid=0) -> n for imap service
Aug 11 04:34:42 tp600 imapd[12306]: Login failed user=n auth=n host=tp600 [192.168.0.199]
Aug 11 04:34:45 tp600 imapd[12306]: Command stream end of file, while reading line user=n host=tp600 [192.168.0.199]
Aug 11 04:34:45 tp600 inetd[11432]: pid 12306: exit status 1

imapd デーモンが inetd デーモン経由で起動されていることが分かる。ここでも PAM_pwdb がエラーを残している。

PHP 経由だと失敗するのかと思い、trustBee - IMP日本語版 Q&A - を参考に imaptest.php というファイルを作って

<?
$mbox = imap_open("{nlogn.ath.cx:143/imap}", "n", "パスワード");
if ($mbox) {
  echo "IMAPサーバに接続されました。($mbox)<br />";
  imap_close($mbox);
  echo "IMAPサーバから切断しました。<br />";
}
?>

と書いてアクセスすると、正しく認証されることが分かった。ホスト名は「localhost」でも構わない。POP3 でも同様に認証には成功した。POP3 の場合は、上記の「143/imap」を「110/pop3」に書き直すだけでよい。

PHP が原因ではないようだ。

情報を採るために、PHP のログを設定し、IlohaMail のログを設定した。IlohaMail はデフォルトでログを採らないようになっているが、これを「ログを採る」に変えたところ、いきなり動作するようになった。原因は PAM ではなかったのだ。

初めてのログイン時には、設定画面が表示される。時差を「9」に設定しておく。

IlohaMail/conf/conf.inc を編集し、次のように設定を変更する (デフォルトと違うもののみ)。

$log_active = true;
$log_file = "/var/log/ilohamail.log";

root になって、ログファイルを用意する。

# touch /var/log/ilohamail.log
# chown apache.apache /var/log/ilohamail.log

Apache を再起動すると、問題なく認証されて IlohaMail が使えるようになった。原因は不明である。

IlohaMail が動作するようになったので、他のコンフィグレーションを行う。IlohaMail/conf/login.inc を編集し、デフォルトから以下を変更する。

$default_lang = "jp/";
$hide_lang = 1;
$logout_url = "../";
$VDOMAIN_DETECT["nlogn.ath.cx"] = "nlogn.ath.cx";
$VDOMAIN_DETECT["他のバーチャルドメイン名"] = "送受信に使うメールサーバ";

最初の2行で、表示言語を日本語にして設定を表示しないようにしている。

$logout_url は相対パスでも指定可能で、ここでは親ディレクトリを指定している。IlohaMail の URL を http://nlogn.ath.cx/webmail/ にしているので、ログアウトすると http://nlogn.ath.cx/ になる。

便利なのは VDOMAIN_DETECT の設定で、[""] の中にバーチャルドメイン名、イコールの後にメールサーバ名を書く。これにより、http://nlogn.ath.cx/webmail/ でアクセスした場合と http://他のバーチャルドメイン名/webmail/ でアクセスした場合で、自動的にメールサーバを変えてくれるようになる。単に入力の手間が減るだけでなく、ドメイン名は送信時のメールアドレスにも反映されるので、大変便利である。このように1つの Apache で複数のバーチャルサーバを運用している場合は、/etc/httpd/conf/httpd.conf にエイリアス設定をしておくとよい。例えば次のように書いておく。

Alias /webmail/ /home/httpd/html/IlohaMail/source/

この設定により、http://バーチャルサーバ名/webmail/ という同じ形でのアクセスができ、しかもディレクトリに1つ1つシンボリックリンクを作る手間も省くことができる。

2005年4月9日追記: PHP 4.3.10 に更新しました (nlog(n): PHP 関連パッケージのインストール)。

Posted by n at 2004-08-12 19:20 | Edit | Comments (3) | Trackback(1)
Trackbacks

  • 「手違いで複数トラックバックを送ってしまった!」という場合でも気にしないでください (重複分はこちらで勝手に削除させていただきます)
  • タイムアウトエラーは,こちらのサーバの処理能力不足が原因です (詳細は トラックバック送信時のエラー をご覧ください)
  • トラックバックする記事には,この記事へのリンクを含めてください(詳細は 迷惑トラックバック対策 をご覧ください)
IlohaMail
[製品情報] GPL IlohaMail (pronounced: e-lo-ha-mail) is a light weight yet full featured multilingual webmail program that is easy to use and install. It runs on a stock build of PHP, and does not require databases (although database support is availabl... Trackbacked from: L4SE at March 14, 2006 17:12
Comments

自分もIlohaMailを試してみました。確かに軽くて便利でした。ところが自分の環境かどうかはわからないけど、受信はできても送信するたびに文字化けばっかりしてました。原因調べてみたりしました(作者にメールも出してみましたが回答なかった)が、結局分からず放置してしまいました(^^;。
ちなみに、今はXOOPSのWEBMAILで代用してます。

Posted by: zRyu at August 14, 2004 01:22

こちらでは、文字化けなしで使えています。設定画面に「標準文字コード」という項目がありますが、これはブラウザに表示する文字コードで、メールには影響しないようです。メールを送って内容を見てみると、Subject が日本語の場合は MIME エンコードされていて、本文は ISO-2022-JP の文字セットになっています。メールの形式としては正しいエンコードになっています。これで文字化けしてしまうというのは不思議です。
XOOPS の Webmail は使いやすいですか?

Posted by: n at August 14, 2004 02:11

>こちらでは、文字化けなしで使えています。
本当ですか?〜ん、自分の設定が悪かったかな・・・。XOOPSのWebmailは使いやすいですよ、でも今のところXOOP
で他のモジュールとか使っていないので態々XOOPSでメールを確認するのもちょっと違う気がしてきた・・・

文字化けがしないのであればもう一度トライしてみます。ilohaMailはたしかMySQLと連携取れるしね。

いや、貴重な情報ありがとうです。

Posted by: zRyu at August 17, 2004 18:07
Post a comment
  • 電子メールアドレスは必須ですが,表示されません (気になる場合は「メールアドレスのような」文字列でもOKです)
  • URL を入力した場合はリンクが張られます
  • コメント欄内ではタグは使えません
  • コメント欄内に URL を記入した場合は自動的にリンクに変換されます
  • コメント欄内の改行はそのまま改行となります
  • 「Confirmation Code」に表示されている数字を入力してください (迷惑コメント対策です)


(必須, 表示されます)


(必須, 表示されません)


(任意, リンクされます)


Confirmation Code (必須)


Remember info (R)?