下記とは別の作業で、しかも今度はかなりマジにIMAPベースのWEBメールシステムを構築する 必要性に迫られた。まあWEBメールサーバは某売り物を使うからいいとして、メールサーバ側は そのままCourier-IMAP+vpopmailで行ってみることにした。で、実は数ヶ月前にその環境下での ヴァーチャルドメインによるWEBメールテスト環境を構築済みで、後は実環境でのテストーの つもりだったのだが、今年になってCourier-imapのバージョンが4.0.1に上がっている事に気づいた。 つか最新版をインストールしようと思って「先にCourier-authlibを入れろ」と言われて 驚いた、というのが正確なのだが(笑)。
 そう。いつのまにやらCourierはIMAP/POPサーバであるところの「Courier-imap」と 認証機能であるところの「Courier-authlib」に分離していた。元々Courierとvpopmailの連動の 肝はvpopmailが管理するvpasswd.cdbと連動するauthvchkpwなのだと思うのだが、 分離された以上より専門的に高度に連携とってくれるのだろう。たぶん。
 てなカンジでインストール開始。ソースコンパイルするよりかrpmをビルドした方が 楽っぽい。てなわけで「rpmbuild -ta courier-authlib.xxx.bz2」・・・の前に、 多分vpopmailをインストールしておかないと連動してくれないだろう。マニュアルにも 「インストールされてる他の認証モノを検索するよ」的な事が書いてあるし。 vpopmailのインストールは標準的なモノでOKっぽい。また、旧バージョンのCourierで vpopmailと連動取る場合、Courierのmake時にvpopmailのパスに読み込み権限をつけるとか つけないとかって話があったけど、とりあえず実験的にソレはやらないでビルド。 また、vpopmail以外にもビルド時にいくつか必要なパッケージを要求される。 mysqlとか。一応specファイルいじって無しにすることもできたけど、環境互換の都合から 面倒でも必要なパッケージを追加してビルドしといた方が良いらしい。実環境では 必要パッケージを追加してビルド。なおビルド後はそれらパッケージは不要なので アンインストールして構わないとか。問題なければビルド完了。あ、authlibはroot権限で ビルドして良いらしい。いくつかパッケージが生成された。
 次にCourier-imap本体。こいつのビルドにも追加パッケージが要求された。 使った環境でのデフォルトからopenldap-serverだけ追加。今回ldap連携はしないんだけどねえ。 Courier-imap本体の場合、デフォルトのspecファイルを若干調整する必要があるっぽい。 「%define xflags --enable-unicode」の項目に「ISO-2022-JP」を追加。 Redhatなんで/usr/src/redhat/SPECS/にspecファイルを置いて、「rpmbuild -ba xxx.spec」実行。 ただしこちらはroot権限ではダメ。別ユーザで実行、の前に/usr/src/redhat/下のフォルダの 書き込み権限を一時的に707に。ビルド実行。問題なければ(略)。
 で、出来たrpmをインストール。起動シェルまでrc.dに追加してくれる親切設計。 再起動すれば動くけど、その前に若干設定変更。
 もー今回はことごとくvchkpwしか使わないので、/etc/authlib/authdaemonrc中の authmodulelist、authmodulelistorigをすっきりと「authvchkpw」のみに。 また、POPはそのままvpopmailに行わせるためCourierのPOP3を停止。 /usr/lib/courier-imap/etc/pop3d中のPOP3DSTART、同フォルダのpop3d-ssl中の POP3DSSLSTARTをそれぞれ「NO」に。また今回imapの接続元がWEBメールサーバになるため、 単一IPから多重コネクトされることになる。てなわけで同フォルダのimapd中の MAXPERIPを・・・とりあえず1,000に。ついでにMAXDAEMONSを200に変更。 それぞれ妥当性は不明。
 とりあえずはこの状態で稼働中。あ、あとFAMとしてsgi_famを稼働させる必要が ・・・てかFAM対応としてビルドした場合に稼働させる必要があります。 Fedoraとかだったら別のかな。vpopmailとの連動は、とりあえずダミーで 10個くらいドメインとユーザ作ってみたけどそれぞれ無事ログイン・送受信 できてるよーです。ただ今のところ本バージョンでもvipmapの条件を 反映する方法が見つかってません。まあ今のところ不要だからまじめに探してないけど。 また、今回のバージョンはauthlibが分離したためかvpopmailにアカウント追加した場合に Courierの再起動をせずとも即座に反映されるよーになってました。これはうれしい。 仮に再起動を要したとしてもauthlibだけ再起動すればユーザ情報は反映されるだろうから 接続中のimapに影響与えなくて済むと思われます。
 ・・・あとは暇見て前ページsquirrelmailとの相性テストかな。

関連タグ:vpopmailcourier-IMAP
2005-01-25 [技術・作業]

 下記の続き。

 下記の環境で構築したwebメール環境だけど、なにやらしばらく使ってると時折ログインできなく なってる気配。てゆかログイン後、ログオフする前に勝手に認証状態が解除される事すら あるようだ。courier-imapを再起動するとすぐ戻るので、原因はsquirrelmailではなく courierにあるっぽい・・・。ログを見ると、どーも突然ユーザ情報の受取ができなくなって ユーザ名NULLで渡されてるっぽい様子。

 そーいや最初インストール情報とか調査してる中で、「何度か認証をするとログインできなくなる」 って報告があった気がするな。再調査再調査・・・あ、あった。お、ちょーど courier+vpopmailの環境で発生してる模様。何々、「authdaemonを無効にしてvchkpwのみにすると上手くいく」 ・・・ですか?でもなんかvchkpwの設定情報ってauthdaemon.rcの中に書いてある雰囲気があるんですが・・・。

 ま、いーか。とりあえず試し。configureからのやり直し。今までのcofigureオプションに 「--without-authdaemon」と、念のため「--with-vchkpw」を追加。configure、make、make install・・・終了。 起動。動く。ログイン。可能。何度か繰り返し。問題なし。1日経過。問題なし・・・。大丈夫みたいだね。
 vpopmailとの連動については、直接vpopのvpasswdを見るのではなく、vpasswdからcourier用の userdbを作成して見る方法もあるようだけど、それだとユーザアカウントに変更がある度、userdbも 作り直さなきゃいけなそうなんで面倒なのよね。とりあえず上記状態で問題無さそうなので しばらく様子見。ただし、アカウント追加の際にimapの再起動が必要なのは変わらず。ちぇ。

関連タグ:vpopmailcourier-IMAP
2005-01-24 [技術・作業]

 正確には下記のqmail話の続き。
 Redhat9にインストールしたqmail+vpopmailに対し、PHPでアクセスするwebmailシステムを 作ろうとした、のだけど、時間の関係と、どーもPHPのPOPアクセス関数(つーかimap関数)がMaildir方式かvpopの どちらかと相性が悪いような気がしたので(既読、未読を判別できない)、それならとRedhat9に 標準でパッケージ付属しているwebmail、「squirrelmail」を使ってみる事にしました。
 さて、まずsquirrelmailを使うにはIMAPサーバがあることが前提条件らしい。 この時点でvpopのPOP3だけでなんとか誤魔化そうと思ってた私の目論見は崩れさってしまったので、 某かのIMAPサーバを入れる事に。これまでIMAPサーバの構築は必要がないため手を出してこなかった 分野でしたが、軽く調べたらqmailと相性のいい「courier-imap」が引っかかりました・・・ てかダウンロードサイトってvpopmailと同じinter7さんじゃん(苦笑)。どーりで聞き覚えだけはあるわけだ。
 vpopmailとの連動をするために、あちこちのサイトに置いてあったrpmパッケージの使用はせず、 コンパイルインストールすることに。やはりあちこちのサイトでvpopとcourierの連動方法が書いてあったので インストールまでは無事完了。
 とりあえずフツーのメーラーから接続テスト・・・つながらない。IMAPは動いてる様子があるけれど 認証に失敗する。色々設定を変更→再起動を繰り返すも、一向につながる気配がない。しばらくたって思い出したのが vpopmailのFAQページにあった「courierを使ったときはuser%domainではなくuser@domainでログインしろ」 といったカンジの文章。普段、ドメインはvipmapでIPに割り当てているため、POPログインの際の%domainは 使っていませんでした。なものでIMAP時もユーザ名だけで行けるかと思ったんですが、いけないんですねえ(苦笑)。 そんなこんなでvpop+courierの連動は成功。
 で、次にsquirrelmail。こっちはまずはRedhat9に入ってたrpmパッケージでインストール。最初、 手でconfig.phpをいじって設定かえてたのですが、一応接続はできるものの、左側の受信ボックスエリアに エラーの表示が。なので試しに付属の設定ツールで初期設定を行ったところ問題解消。 どうも受信ボックスの名称設定に「.」が抜けてただけみたい。細かい情報がないから流石にその辺までは 気づきませんでした。また、時間順ソートとか使用とすると「このIMAPサーバはサーバレベルでのソートに 対応してないよ」的なメッセージが表示される。一応ソートはされるので警告メッセージらしい。 調べてたらcourierのconfigureの際に「--enable-unicode=iso-2022-jpを入れる」とかゆーのを見かけたので 実行したけど、それでも解消せず。まー別にそこまで考える必要もないか、と思い、先のconfig.phpにて サーバサイドソートを禁止したところ、表示は出なくなりました。
 で、上記squirrelmailは英語版なので、必要な所を日本語に書き換え、及びヘッダのエンコードを mimeエンコード出来るようにしようと思ったのですが、なにやら世の中既に日本語化対応パッチとか パッケージとか出てるじゃないですか(笑)。偉大なるかな先達。ちゃんとRedhat9対応のrpmなんかもあったので そちらに移し替えさせてもらいました。上記部分を変更し、無事稼働。

 上記環境で一つ気になってるのが、vpopmailアカウントを作った際、ユーザ情報がcourierに反映されないこと。 一度courierを再起動すると認識されるようになる。vpopはすぐに認識されるから経由で見てるだけであろう courierもすぐに反映されるかと思ったんだけどねえ・・・。実際は違うんですかね。ソース眺めるヒマと 気力がないので保留。とりあえずアカウント追加するたびに要courier再起動、と。滅多にアカウント追加されない ドメインだから別にいーか。
2005-01-23 [技術・作業]