harumaki.net

インフラ屋の覚書や、ラーメン食べある記とか。

courier-imapのインストール(RPMパッケージの作成)

   


▼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に作るだけ)

 - CentOS, MAIL ,