Courier Mail Serverをインストールする

Courier Mail Server というソフトを最近知りました。
これから色々触って行こうと思っている所です。


最初のステップということで、インストール方法をまとめておこうと思います。

環境及びインストール方針


OS環境はCentOS5.5です。
ここから以下のtarアーカイブをダウンロードします。
今回はRPMパッケージを作成してインストールします。

  • courier-0.65.3.tar.bz2
  • courier-authlib-0.63.0.tar.bz2

準備


事前に「rpm-build」をインストールしておきます。

# yum install rpm-build

courier-authlibのビルド


「courier-authlib」からビルドしていきます。
ビルドしようとすると、依存関係で足りないものが指摘されます。
これをまずはインストールしていきます。

# rpmbuild -ta courier-authlib-0.63.0.tar.bz2
error: Failed build dependencies:
	libtool is needed by courier-authlib-0.63.0-1.i386
	openldap-devel is needed by courier-authlib-0.63.0-1.i386
	mysql-devel is needed by courier-authlib-0.63.0-1.i386
	zlib-devel is needed by courier-authlib-0.63.0-1.i386
	postgresql-devel is needed by courier-authlib-0.63.0-1.i386
	gdbm-devel is needed by courier-authlib-0.63.0-1.i386
	pam-devel is needed by courier-authlib-0.63.0-1.i386
	expect is needed by courier-authlib-0.63.0-1.i386
	gcc-c++ is needed by courier-authlib-0.63.0-1.i386
	redhat-rpm-config is needed by courier-authlib-0.63.0-1.i386
	/usr/include/ltdl.h is needed by courier-authlib-0.63.0-1.i386

# yum install libtool openldap-devel mysql-devel zlib-devel postgresql-devel \
gdbm-devel pam-devel expect gcc-c++ redhat-rpm-config libtool-ltdl-devel


再びビルドします。

# rpmbuild -ta courier-authlib-0.63.0.tar.bz2


特に問題が発生しなければ、パッケージが作成されています。

# pwd
/usr/src/redhat/RPMS/i386
# ls
courier-authlib-0.63.0-1.i386.rpm
courier-authlib-debuginfo-0.63.0-1.i386.rpm
courier-authlib-devel-0.63.0-1.i386.rpm
courier-authlib-ldap-0.63.0-1.i386.rpm
courier-authlib-mysql-0.63.0-1.i386.rpm
courier-authlib-pgsql-0.63.0-1.i386.rpm
courier-authlib-pipe-0.63.0-1.i386.rpm
courier-authlib-userdb-0.63.0-1.i386.rpm


「courier-authlib-devel」パッケージが「courier」パッケージのビルドに
依存しているため、インストールしておきます。

# rpm -ivh courier-authlib-0.63.0-1.i386.rpm courier-authlib-devel-0.63.0-1.i386.rpm

courierのビルド

「courier-authlib」同様、ビルドしようとすると、
依存関係で足りないものが指摘されます。
これをまずはインストールしていきます。

# rpmbuild -ta courier-0.65.3.tar.bz2        
error: Failed build dependencies:
	courier-authlib-devel >= 0.55 is needed by courier-0.65.3-1.i386
	expect is needed by courier-0.65.3-1.i386
	gdbm-devel is needed by courier-0.65.3-1.i386
	pam-devel is needed by courier-0.65.3-1.i386
	libidn-devel is needed by courier-0.65.3-1.i386
	/usr/include/fam.h is needed by courier-0.65.3-1.i386
	gnutls-devel is needed by courier-0.65.3-1.i386
	/usr/bin/certtool is needed by courier-0.65.3-1.i386
	ghostscript is needed by courier-0.65.3-1.i386
	mgetty-sendfax is needed by courier-0.65.3-1.i386
	netpbm-progs is needed by courier-0.65.3-1.i386
	pcre-devel is needed by courier-0.65.3-1.i386

# yum install libidn-devel gamin-devel openssl-perl ghostscript mgetty-sendfax netpbm-progs pcre-devel


そして、再度ビルドを行います。

# rpmbuild -ta courier-0.65.3.tar.bz2


すると、rootで作業していた事を怒られてしまいました。

configure: WARNING: === Do not compile Courier as root.  Compile
configure: WARNING: === Courier as a non-root user then su to
configure: WARNING: === root before running make install.  You must now
configure: WARNING: === remove this entire directory and then extract the
configure: WARNING: === source code from the tarball as a non-root user
configure: WARNING: === and rerun the configure script.  If you have read
configure: WARNING: === the INSTALL file you should have known this.  So
configure: WARNING: === you better read INSTALL again
configure: error: aborted.
error: Bad exit status from /var/tmp/rpm-tmp.32637 (%prep)


RPM build errors:
    Bad exit status from /var/tmp/rpm-tmp.32637 (%prep)


仕方ないので、一般ユーザーでビルドするための環境を作ります。

$ mkdir -p ~/rpm/{BUILD,RPMS,SOURCES,SPECS,SRPMS}

vi ~/.rpmmacros
%_topdir                /home/myuser/rpm
%_builddir              %{_topdir}/BUILD
%_rpmdir                %{_topdir}/RPMS
%_sourcedir             %{_topdir}/SOURCES
%_specdir               %{_topdir}/SPECS
%_srcrpmdir             %{_topdir}/SRPMS

$ cp -p /usr/local/src/courier-0.65.3.tar.bz2 /home/myuser/


再びビルドします。

$ rpmbuild -ta courier-0.65.3.tar.bz2

インストール

インストールはRPMパッケージなので、RPMコマンドを発行するだけで終わりです。

「courier」パッケージをビルドしていた際、こんなエラーで異常終了になりました。
どうやらビルド時にメモリが足りてなかったようです。
ビルドするときは1GB程度のメモリが必要と思われます。

gcc: Internal error: Killed (program cc1)
Please submit a full bug report.
See <URL:http://bugzilla.redhat.com/bugzilla> for instructions.
make[4]: *** [esmtpclient.o] Error 1
make[3]: *** [all] Error 2
make[2]: *** [all-recursive] Error 1
make[1]: *** [all] Error 2
make: *** [all-recursive] Error 1
error: Bad exit status from /var/tmp/rpm-tmp.71485 (%build)


RPM build errors:
    Bad exit status from /var/tmp/rpm-tmp.71485 (%build)


実際に動かして見た時の話はまた改めて書いていきたいと思います。


今日はこんなところで。