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ディレクトリにダウンロードして作業しました。
- 準備作業として、作業ユーザの homeディレクトリに rpmの作成環境を作成する。
$ cd ~
$ mkdir -p $HOME/rpm/{SOURCES,SPECS,BUILD,SRPMS,RPMS/i586}
$ echo "%_topdir $HOME/rpm" >> $HOME/.rpmmacros |
- 作成した 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 |
- そのままでは、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 |
- 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 |
- なお、このままでは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 |
- 続いて 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 |
- 解凍した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 |
- 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 |
- インストールが完了したら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/ 配下にインストールされます。 おやじは、全て起動してルータやファイヤウォールでアクセス制御していますが、不必要なものは止めておいたほうが良いでしょう。以下に、修正内容を示します。(青字は削除、赤字は追加、緑字は変更したものです。)
◆pop3dファイルの編集
- pop3dの起動停止(POP3未使用時)
POP3DSTART=YES
↓変更
POP3DSTART=NO
◆pop3d-sslファイルの編集
- pop3d-sslの起動停止(POP3 over SSL未使用時)
POP3DSSLSTART=YES
↓変更
POP3DSSLSTART=NO
- pemファイルの指定
TLS_CERTFILE=/usr/share/courier-imap/pop3d.pem
↓変更
TLS_CERTFILE=/usr/local/certs/mail.pem
◆imapdファイルの編集
- imapd-sslの起動設定 (IMAP未使用時)
IMAPDSTART=YES
↓変更
IMAPDSTART=NO
- CRAM-MD5使用時
IMAP_CAPABILITY="IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT
THREAD=REFERENCES SORT QUOTA IDLE"
↓変更
IMAP_CAPABILITY="IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT
THREAD=REFERENCES SORT QUOTA AUTH=CRAM-MD5 IDLE"
◆imapd-sslファイルの編集
- imapd-sslの起動設定(IMAP over SSL未使用時)
IMAPDSSLSTART=YES
↓変更
IMAPDSSLSTART=NO
- pemファイルの指定
TLS_CERTFILE=/usr/share/courier-imap/imapd.pem
↓変更
TLS_CERTFILE=/usr/local/certs/mail.pem
■Courier-IMAP の自動起動の設定
rpmからインストールすると、デフォルトで POP3/POP3 over SSL/IMAP/IMAP over
SSL の4つのモード用の起動スクリプトと、Courier-IMAP の認証を司る authdaemon
用の起動スクリプトがインストールされます。これを、YaST で設定するだけです。
- YaST コントロールセンタを起動し、「システム」の「ランレベル・エディタ」を起動する。
- Courier-IMAP 関係として、「courier-authdaemon」、「courier-imap」、「courier-imap-ssl」、「courier-pop3」、「courier-pop3-ssl」の5つのサービスが登録されているので、「courier-authdaemon」(必須)と使用するサービスを、それぞれのサービスを選択して「有効にする」ボタンを押していく。
「courier-authdaemon」を一番最初に有効にしないとエラーがでる。設定が終わったら「完了」ボタンを押す。