▼courier-imapのインストール(RPMパッケージの作成) ※CentOS4
POP/IMAPサーバ用にインストールするcourier-imapだが
バージョン4からauthdeamonがcourier-authlibというパッケージに独立したので
一緒にインストールし、デーモンを同時実行する必要がある。
その分セキュアになったと思われるので、いいかな?と思いつつ。
【参照サイト】お世話になっています。
IMAP4 インストール/設定(Courier-IMAP)
http://www.dragoncity.ne.jp/construction/mailserve2.html
■courier-authlibのパッケージ作成とインストール †
courier-imap4をインストールする際、まずcourier-authlib-develを
インストールする必要がある。
これはcourier-authlibに含まれるが、RPMにすると
ひとつのパッケージとして生成されるので必要なものだけインストールできて便利。
というわけでRPMパッケージを作成してからインストール。
1)ダウンロードとRPMパッケージ作成。 †
ソースパッケージをダウンロードしたら、RPMの作業ディレクトリへ移動し
そのままrpmbuildしてOK。
※ていうかwgetするときに/usr/src/redhat/SOURCESで落としたほうが早いw
[root@example src]# pwd /usr/local/src [root@example src]# wget http://jaist.dl.sourceforge.net/sourceforge/courier/courier-authlib-0.56.tar.bz2 [root@example src]# mv courier-authlib-0.56.tar.bz2 /usr/src/redhat/SOURCES [root@example src]# cd /usr/src/redhat/SOURCES [root@example SOURCES]# rpmbuild -ta courier-authlib-0.56.tar.bz2
完了したら、パッケージを確認。
[root@example SOURCES]# ls -al ../SRPMS/RPMS/i386/ 合計 400 drwxr-xr-x 2 root root 4096 6 30 13:58 . drwxr-xr-x 8 root root 4096 6 11 16:19 .. -rw-r--r-- 1 root root 195639 6 30 13:58 courier-authlib-0.56-1.i386.rpm -rw-r--r-- 1 root root 31547 6 30 13:58 courier-authlib-devel-0.56-1.i386.rpm -rw-r--r-- 1 root root 28808 6 30 13:58 courier-authlib-ldap-0.56-1.i386.rpm -rw-r--r-- 1 root root 27528 6 30 13:58 courier-authlib-mysql-0.56-1.i386.rpm -rw-r--r-- 1 root root 22856 6 30 13:58 courier-authlib-pgsql-0.56-1.i386.rpm -rw-r--r-- 1 root root 13297 6 30 13:58 courier-authlib-pipe-0.56-1.i386.rpm -rw-r--r-- 1 root root 49506 6 30 13:58 courier-authlib-userdb-0.56-1.i386.rpm [root@example SOURCES]# ls -al /root/ ../SRPMS/ 合計 1960 drwxr-xr-x 2 root root 4096 6 30 13:58 . drwxr-xr-x 7 root root 4096 6 11 16:19 .. -rw-r--r-- 1 root root 1985663 6 30 13:58 courier-authlib-0.56-1.src.rpm
2)パッケージのインストール †
上記のうち、courier-imapのインストールに必要な
courier-authlib-devel-0.56-1とcourier-authlib-0.56-1をインストール。
UNIXアカウントで認証するので、他のパッケージは不要。
LDAPやMySQL認証のパッケージなどはゆくゆく必要になったら都度インストール。
[root@example i386]# rpm -ivh courier-authlib-0.56-1.i386.rpm [root@example i386]# rpm -ivh courier-authlib-devel-0.56-1.i386.rpm
■courier-imapのパッケージ作成とインストール †
courier-imapのほうはrootでのコンパイル禁止なので
一般ユーザでリビルド、コンパイルしてインストールします。
1)ダウンロードと展開 †
[user@example ~]$ cd /home/example/ [user@example ~]$ wget http://jaist.dl.sourceforge.net/sourceforge/ \ courier/courier-imap-4.0.3.tar.bz2 [user@example ~]$ tar -jxf courier-imap-4.0.2.20050403-1.tar.bz2 -> ファイルの解凍
2)specファイル修正 †
[user@example ~]$ cd courier-imap-4.0.2.20050403-1 [user@example courier-imap-4.0.2.20050403-1]$ vi courier-imap.spec
追記箇所は以下のとおり。
- 文字コードにiso-2022-jpを追加
define xflags --enable-unicode=iso-8859-1,utf-8 ↓ define xflags --enable-unicode=iso-2022-jp,iso-8859-1,utf-8
3)rpmパッケージを作成 †
[user@example courier-imap-4.0.2.20050403-1]$ cd ~ [user@example ~]$ mkdir -p $HOME/rpm/{SOURCES,SPECS,BUILD,SRPMS,RPMS/{i386}} [user@example ~]$ echo "%_topdir $HOME/rpm" >> $HOME/.rpmmacros [user@example ~]$ cd courier-imap-4.0.2.20050403 [user@example courier-imap-4.0.2.20050403-1]$ cp courier-imap.spec ../rpm/SPECS [user@example courier-imap-4.0.2.20050403-1]$ cp ../courier-imap-4.0.2.20050403-1.tar.bz2 ../rpm/SOURCES [user@example courier-imap-4.0.2.20050403-1]$ rpmbuild -ba courier-imap.spec
これで実行開始。しばらくかかるので放置。
で、完了後、../RPMS/i386/を確認するとパッケージが出来ている。
[user@example SPECS]$ ls -al ../RPMS/i386/ 合計 424 drwxr-xr-x 2 user user 4096 7月 1 12:57 . drwxrwxr-x 4 user user 4096 7月 1 12:57 .. -rw-rw-r-- 1 user user 419627 7月 1 12:57 courier-imap-4.0.2.20050403-1.i386.rpm
ついでにsrcもできている。
[user@example SPECS]$ ls -al ../SRPMS/ 合計 2980 drwxrwxr-x 2 user user 4096 7月 1 12:57 . drwxrwxr-x 7 user user 4096 7月 1 12:47 .. -rw-rw-r-- 1 user user 3035523 7月 1 12:57 courier-imap-4.0.2.20050403-1.src.rpm
4)インストール。 †
$ su
他のimapサーバがインストールされているとコンフリクトするので
先に確認しておく。
入っていた場合は削除する。
[root@example SPECS]# rpm -qa | grep imap cyrus-imapd-murder-2.2.10-1.RHEL4.1 cyrus-imapd-nntp-2.2.10-1.RHEL4.1 cyrus-imapd-devel-2.2.10-1.RHEL4.1 php-imap-4.3.9-3.2 cyrus-imapd-2.2.10-1.RHEL4.1 cyrus-imapd-utils-2.2.10-1.RHEL4.1 [root@example SPECS]#
上記の場合はcyrus-imapdが入っているが、削除せずに
インストールしようとすると、やはりコンフリクトが発生。
(php-imapはそのまま入れたままでOK)
[root@example SPECS]# cd ../RPMS/i386/ [root@example i386]# rpm -ivh courier-imap-4.0.2.20050403-1.i386.rpm Preparing... ########################################### [100%] file /etc/pam.d/imap from install of courier-imap-4.0.2.20050403-1 conflicts with file from package cyrus-imapd-2.2.10-1.RHEL4.1 [root@example i386]# rpm -e cyrus-imapd-2.2.10-1.RHEL4.1 [root@example i386]# rpm -e cyrus-imapd-2.2.10-1.RHEL4.1 cyrus-imapd-murder-2.2.10-1.RHEL4.1 \ cyrus-imapd-nntp-2.2.10-1.RHEL4.1 cyrus-imapd-devel-2.2.10-1.RHEL4.1 [root@example i386]# rpm -ivh courier-imap-4.0.2.20050403-1.i386.rpm Preparing... ########################################### [100%] 1:courier-imap ########################################### [100%] [root@example i386]#
パッケージ作成時に展開したディレクトリなどは削除してOK。
インストールされたパッケージのディレクトリ構成は、ソースからインストール
した場合とほぼ同じ。
5)起動 †
- courier-authlibの起動
上記のとおり、courier-authlibが独立したパッケージとして
インストールされ、saslのようにプロセスも独立するようになった。
まずこのデーモンを起動する。
※これが無いとPOP/IMAPを起動しても認証できない![root@example etc]# /etc/init.d/courier-authlib start Starting Courier authentication services: authdaemond [root@example etc]#
-
courier-imapの起動
courier-imapの起動方法はパッケージでインストールした場合2種類あり、
ソースインストール同様/usr/lib/courier-imap/libexec/以下の起動スクリプトからの起動と、
新たに/etc/init.d/に作成される起動スクリプトから実行する方法と2種類選べる。
但し/etc/init.d/courier-imapをそのまま実行すると
デフォルトではpop3、pop3s、imap、imaps全てが起動するため(!!)、
スクリプトを編集して起動するデーモンを選ぶか、または
/usr/lib/courier-imap/libexec/から選んで起動する方法を
選んだほうがよいかも。
※OSブート時は当然/etc/init.d/courier-imapが実行される。[root@example etc]# /etc/init.d/courier-authlib start-imap start Starting Courier-IMAP server: imap generating-SSL-certificate... imap-ssl pop3 generating-SSL-certificate... pop3-ssl [root@example etc]#
続けてローカル内で実行状況を確認。
- pop3
[root@example i386]# telnet localhost 110 Trying 127.0.0.1... Connected to localhost.localdomain (127.0.0.1). Escape character is '^]'. +OK Hello there. user user ←ユーザー名入力 +OK Password required. pass ******** ←パスワード入力 +OK logged in. quit ←確認できたらログアウト +OK Bye-bye. Connection closed by foreign host. [root@example i386]#
- imap
[root@example i386]# telnet localhost 143 Trying 127.0.0.1... Connected to localhost.localdomain (127.0.0.1). Escape character is '^]'. * OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE ACL ACL2=UNION STARTTLS] Courier-IMAP ready. Copyright 1998-2005 Double Precision, Inc. See COPYING for distribution information. a login user ********** ←ユーザー名とパスワードを入力 a OK LOGIN Ok. a logout ←問題なければログアウト * BYE Courier-IMAP server shutting down a OK LOGOUT completed Connection closed by foreign host. [root@example i386]#
tip:ユーザーのホームディレクトリにMaildirが生成されない場合 †
基本的にMaildirはpostfix側で指定するので、main.cfで指定すれば
自動的にホームディレクトリに作成される(はず・・・)のだが、Maildirが作成されない場合は
/usr/lib/courier-imap/bin/にあるmaildirmakeコマンドを使用するとOK。
Maildirを作成したいユーザのホームディレクトリへ移動し、コマンドを実行するだけ。
prompt$ /usr/lib/courier-imap/bin/maildirmake Maildir
これでMaildirが作成される。
さらにuseradd時、ユーザーのホームディレクトリにデフォルトで作成したい場合は
/etc/skelでmaildirmakeを実行してディレクトリを作成しておくとOK
(要するに/etc/skelに作るだけ)