Courier-IMAP+MySQLによるバーチャルPOP3/IMAPサーバの構築(CentOS4.x編)
Postfixでバーチャルドメインに対応したので、それにあわせてCourier-IMAPもバーチャルドメイン対応にしなければなりません。RPMの作成は
こちらと変わりなく、後はMySQL対応するだけです。
■Courier-IMAPのダウンロードとRPMの作成
Courier-IMAPを
こちらからダウンロードしますが、4.0系から認証ライブラリ(Courier authentication
library)が別になったので、こちらの
rpmを先に作成してインストールしてからでないと、Courier-IMAPの rpmが作成できないことと、rpmの作成までは一般ユーザで行わないとエラーがでるので注意が必要です。作業ディレクトリのパーミッションにも注意が必要です。おやじは、作業ユーザのhomeディレクトリにダウンロードして作業しました。
また、CentoOSやFedora
Core3ではfamの替わりにgaminが採用されているので、specファイルを少し変更しないとrpmを作成できません。
- 準備作業として、作業ユーザの homeディレクトリに rpmの作成環境を作成する。
$ cd ~ $ mkdir -p
$HOME/rpm/{SOURCES,SPECS,BUILD,SRPMS,RPMS/i386} $ echo "%_topdir $HOME/rpm"
>> $HOME/.rpmmacros |
- 作成した rpm作成環境の SOURCESディレクトリに移動して、courier authentication library
をダウンロードして、rpmを作成する。
$ cd ~/rpm/SOURCES
$ wget http://jaist.dl.sourceforge.net/sourceforge/courier/courier-authlib-0.56.tar.bz2
$ rpmbuild -ta courier-authlib-0.56.tar.bz2 |
- rootになり、作成された rpmファイルを確認し必要なものをインストールする。今回はMySQL認証なので、courier-authlib-0.56-1.i386.rpmと courier-authlib-devel-0.56-1.i386.rpm 、courier-authlib-mysql-0.56-1.i386.rpmをインストールした。なお、SRPMSフォルダにはsrpmができている。
$ su - password:xxxxx # cd ../RPMS/i386 #
ls
courier-authlib-0.56-1.i386.rpm
courier-authlib-devel-0.56-1.i386.rpm
courier-authlib-userdb-0.56-1.i386.rpm
courier-authlib-ldap-0.56-1.i386.rpm
courier-authlib-mysql-0.56-1.i386.rpm
courier-authlib-pgsql-0.56-1.i386.rpm
courier-authlib-debuginfo-0.56-1.i386.rpm
# rpm -Uvh courier-authlib-0.56-1.i386.rpm courier-authlib-devel-0.56-1.i386.rpm
courier-authlib-mysql-0.56-1.i386.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/SPECSフォルダに置く。変更したのは、famからgaminへの変更と日本語検索機能のための
unicodeへの iso-2022-jpの追加である。
$ sed -e "s/fam/gamin/g" \ -e
"s/iso-8859-1/iso-2022-jp,iso-8859-1/g" \
./courier-imap-4.0.3/courier-imap.spec >
../SPECS/courier-imap.spec |
- SPECSディレクトリに移動してrpmを作成する。依存関係で警告が出たら、Yumでインストールする。
$ cd ../SPECS $ rpmbuild -ba
courier-imap.spec |
- rootになり、作成された rpmファイルを確認しインストールする。なお、SRPMSフォルダにはsrpmができている。
$ su - password:xxxxx # cd ../RPMS/i386 #
ls
courier-imap-4.0.3-1.i386.rpm
# rpm -Uvh courier-imap-4.0.3-1.i386.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つのモードが起動されます。おやじは、全て起動してルータやファイヤウォールでアクセス制御していますが、不必要なものは止めておいたほうが良いでしょう。設定ファイルは
/usr/lib/courier-imap/etc に作成されますので、その内容を修正していきます。以下に、修正内容を示します。(青字は削除、赤字は追加、緑字は変更したものです。)
◆pop3dファイルの編集
- pop3dの起動停止(POP3未使用時)
POP3DSTART=YES
↓変更
POP3DSTART=NO
◆pop3d-sslファイルの編集
- pop3d-sslの起動停止(POP3 over SSL未使用時)
POP3DSSLSTART=YES
↓変更
POP3DSSLSTART=NO
- pemファイルの指定
TLS_CERTFILE=/usr/lib/courier-imap/share/pop3d.pem
↓変更
TLS_CERTFILE=/usr/local/certs/mail.pem
◆imapdファイルの編集
- imapd-sslの起動設定 (IMAP未使用時)
IMAPDSTART=YES
↓変更
IMAPDSTART=NO
- CRAM-MD5使用時(PostfixAdminのパスワードがcleartextでないと使用不可)
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/lib/courier-imap/share/imapd.pem
↓変更
TLS_CERTFILE=/usr/local/certs/mail.pem
■Courier-IMAP の自動起動の設定
rpmからインストールすると、courier-authlibと
courier-imapの自動起動スクリプトがインストールされ、ランレベル2、3、4、5で起動、停止が可能となっていますので、特に設定は必要はありません。
但し、courier-imapのスクリプト(/etc/rc.d/init.d/courier-imap)では、初回起動時に自動的にダミーのSSL証明書を作成するようになっているので、そこをコメントアウト(赤字)して利用します。IMAP用とPOP3用の2箇所あります。使用しなければいいだけなので、変更しなくても特に問題はありません。
# vi
/etc/rc.d/init.d/courier-imap
: (snip) :
if
test -x $COURIERTLS then
# First time we start this, generate
a dummy SSL certificate.
# if test ! -f ${prefix}/share/imapd.pem
# then
# echo -n "
generating-SSL-certificate..."
#
${prefix}/share/mkimapdcert >/dev/null 2>&1
#
fi /usr/lib/courier-imap/libexec/imapd-ssl.rc start echo -n
" imap-ssl" fi
: (snip) :
#
First time we start this, generate a dummy SSL certificate.
# if test ! -f ${prefix}/share/pop3d.pem
# then
# echo -n "
generating-SSL-certificate..."
#
${prefix}/share/mkpop3dcert >/dev/null 2>&1
#
fi /usr/lib/courier-imap/libexec/pop3d-ssl.rc start echo -n
"
pop3-ssl" fi
[Esc],[:],[w],[q]で保存
|