Courier-IMAP+MySQLによるバーチャルPOP3/IMAPサーバの構築(SuSE9.2/9.3編)


Postfixでバーチャルドメインに対応したので、それにあわせてCourier-IMAPもバーチャルドメイン対応にしなければなりません。SuSE には Courie-IMAP の RPM が用意されているのですが、MySQLには対応できていないため、specファイルを書き換えて再構築することも考えたのですが、どうせならと今回は最新のソースを持ってきて、RPMを作ることにしました。もちろんSSLおよび日本語でのメッセージの検索やソート機能対応としました。

■■Courier-IMAPのダウンロードとRPMの作成

Courier-IMAPをこちらからダウンロードしますが、4.0系から認証ライブラリ(Courier authentication library)が別になったので、こちらの rpmを先に作成してインストールしてからでないと、Courier-IMAPの rpmが作成できないことと、rpmの作成までは、一般ユーザで行わないとエラーがでるので注意が必要です。作業ディレクトリのパーミッションにも注意が必要です。おやじは、作業ユーザのhomeディレクトリにダウンロードして作業しました。
  1. 準備作業として、作業ユーザの homeディレクトリに rpmの作成環境を作成する。

    $ cd ~
    $ mkdir -p $HOME/rpm/{SOURCES,SPECS,BUILD,SRPMS,RPMS/i586}
    $ echo "%_topdir $HOME/rpm" >> $HOME/.rpmmacros

  2. 作成した rpm作成環境の SOURCESディレクトリに移動して、courier authentication library をダウンロードして解凍する。

    $ cd ~/rpm/SOURCES
    $ wget http://jaist.dl.sourceforge.net/sourceforge/courier/courier-authlib-0.56.tar.bz2
    $ tar -jxf courier-authlib-0.56.tar.bz2

  3. そのままでは、SuSEの環境に合わない(起動スクリプトのパスとopenldapの名称)ので、specファイルを修正してRPMを作成した。

    $ sed -e "s/rc.d\///g" \
         -e "s/openldap/openldap2/g" \
         ./courier-authlib-0.56/courier-authlib.spec > ../SPECS/courier-authlib.spec
    $ cd ../SPECS
    $ rpmbuild -ba courier-authlib.spec

  4. rootになり、作成された rpmファイルを確認し必要なものをインストールする。今回はMySQL認証なので、courier-authlib-0.56-1.i586.rpmと courier-authlib-devel-0.56-1.i586.rpm 、courier-authlib-mysql-0.56-1i586.rpmをインストールした。なお、SRPMSフォルダにはsrpmができている。

    $ su -
    password:xxxxx
    # cd ../RPMS/i586
    # ls
    courier-authlib-0.56-1.i586.rpm
    courier-authlib-devel-0.56-1.i586.rpm
    courier-authlib-userdb-0.56-1.i586.rpm
    courier-authlib-ldap-0.56-1.i586.rpm
    courier-authlib-mysql-0.56-1.i586.rpm
    courier-authlib-pgsql-0.56-1.i586.rpm
    courier-authlib-debuginfo-0.56-1.i586.rpm
    # rpm -Uvh courier-authlib-0.56-1.i586.rpm courier-authlib-devel-0.56-1.i586.rpm courier-authlib-mysql-0.56-1.i586.rpm

  5. なお、このままではauthdaemonrcがいろいろな認証に対応した状態になっているので、下記で余計な認証を停止し、MySQLによる認証のみにする。sed の行は2行に見えるが、1行なので要注意。

    # cd /etc/authlib
    # sed -i "s/authmodulelist=\"authuserdb authpam authpgsql authldap authmysql authcustom authpipe\"/authmodulelist=\"authmysql\"/g" authdaemonrc
    # sed -i "s/authmodulelistorig=\"authuserdb authpam authpgsql authldap authmysql authcustom authpipe\"/authmodulelistorig=\"authmysql\"/g" authdaemonrc

  6. 続いて courier-imapのrpmを作成するため再度作業ユーザに戻り、作成した rpm作成環境の SOURCESディレクトリに移動して、courier-imapをダウンロードして解凍する。

    $ cd ~/rpm/SOURCES
    $ wget http://jaist.dl.sourceforge.net/sourceforge/courier/courier-imap-4.0.3.tar.bz2
    $ tar -jxf courier-imap-4.0.3.tar.bz2

  7. 解凍したcourier-imapのフォルダに移動し、specファイルを編集しrpmを作成する。変更したのは、日本語検索機能のための unicodeへの iso-2022-jpの追加のみ。

    $ sed -e "s/iso-8859-1/iso-2022-jp,iso-8859-1/g" \
           ./courier-imap-4.0.3/courier-imap.spec > ../SPECS/courier-imap.spec
    $ cd ../SPECS
    $ rpmbuild -ba courier-imap.spec

  8. rootになり、作成された rpmファイルを確認しインストールする。なお、SRPMSフォルダにはsrpmができている。

    $ su -
    password:xxxxx
    # cd ../RPMS/i586
    # ls
    courier-imap-4.0.3-1.suse920.i586.rpm
    # rpm -Uvh courier-imap-4.0.3-1.suse920.i586.rpm

  9. インストールが完了したらMySQL認証のための設定を行う。設定は、/etc/authlib/authmysqlrcを編集して行くが、MYSQL_GID_FIELD、MYSQL_UID_FIELD、MYSQL_HOME_FIELD はこちらの事前準備で作成したものにあわせること。
    PoatfixAdminでパスワードをmd5cryptとした場合は以下のとおりでよいが、cleartextの場合は、MYSQL_CRYPT_PWFIELDをコメントアウトしMYSQL_CLEAR_PWFIELDのコメントを外すこと。
    なお、名前と値の間はタブを使用するように指定されているので注意が必要である。
    また、authdaemonではMySQLデータベースのパスワードとしてcleartextは扱えないので、PoatfixAdminとの整合に注意が必要である。

    MYSQL_SERVER           localhost
    MYSQL_USERNAME         postfix
    MYSQL_PASSWORD         new_password1

    MYSQL_SOCKET           /var/lib/mysql/mysql.sock
    MYSQL_PORT             0
    MYSQL_OPT              0

    MYSQL_DATABASE         postfix
    MYSQL_USER_TABLE       mailbox
    MYSQL_CRYPT_PWFIELD    password
    # MYSQL_CLEAR_PWFIELD  password

    # DEFAULT_DOMAIN       example.com

    MYSQL_UID_FIELD        '10000'
    MYSQL_GID_FIELD        '10000'
    MYSQL_LOGIN_FIELD      username
    MYSQL_HOME_FIELD       '/usr/local/virtual'
    MYSQL_NAME_FIELD       name
    MYSQL_MAILDIR_FIELD    maildir

    *: 主たるドメインでメーラのアカウント設定で「@ドメイン」を省略したい場合は、そのドメインを「DEFAULT_DOMAIN」で指定しておけば補完してくれる。

■Courier-IMAP の設定

Corier-IMAP を rpm からインストールすると、デフォルトで POP3/POP3 over SSL/IMAP/IMAP over SSL の4つのモード用の設定ファイルが /etc/courier-imap/ 配下にインストールされます。 おやじは、全て起動してルータやファイヤウォールでアクセス制御していますが、不必要なものは止めておいたほうが良いでしょう。以下に、修正内容を示します。(青字は削除、赤字は追加、緑字は変更したものです。)
なお、SSL 証明書については、サーバ証明書の作成を参照して作成してください。

◆pop3dファイルの編集

◆pop3d-sslファイルの編集

◆imapdファイルの編集

◆imapd-sslファイルの編集

■Courier-IMAP の自動起動の設定

rpmからインストールすると、デフォルトで POP3/POP3 over SSL/IMAP/IMAP over SSL の4つのモード用の起動スクリプトと、Courier-IMAP の認証を司る authdaemon 用の起動スクリプトがインストールされます。これを、YaST で設定するだけです。

  1. YaST コントロールセンタを起動し、「システム」の「ランレベル・エディタ」を起動する。

  2. Courier-IMAP 関係として、「courier-authdaemon」、「courier-imap」、「courier-imap-ssl」、「courier-pop3」、「courier-pop3-ssl」の5つのサービスが登録されているので、「courier-authdaemon」(必須)と使用するサービスを、それぞれのサービスを選択して「有効にする」ボタンを押していく。
    「courier-authdaemon」を一番最初に有効にしないとエラーがでる。設定が終わったら「完了」ボタンを押す。