CentOS 5.6 をメールサーバーに (Postfix に MySQL サポートを追加する)

CentOS 5.6 で Postfix + Dovecot + PostfixAdmin の環境構築を進め、前回の記事でようやく PostfixAdmin が動くようになった。
次は Postfix をインストールして、PosfixAdmin から MySQL のデータベースに登録したメール アカウントが使えるようにしていく。

ところが、これがのっけから躓くことに。
なんということか、CentOS の標準リポジトリで提供されている Postfix は MySQL をサポートしていないのだ。
PostfixAdmin が動くようになったところで、Postfix が MySQL をサポートしていないのではどうにもならない。
インターネットに散在する情報を「CentOS + Postfix + PostfixAdmin」をキーワードに検索すると、どこもかしこも Postfix をソースからコンパイルし直せとある。
どうやらそういうことらしい。

よくよく調べたところ、デフォルトでは使わないように指定されている CentOS Plus のリポジトリで MySQL と PostgreSQL をサポートした Postfix が提供されていることが分かった。
yum --enablerepo centosplus install postfix とすれば、CentOS Plus のリポジトリにある Postfix をインストールできることも分かった。
だがしかし、どうせなら quota も効かせられるように (実際に使う予定ではないのだが) Postfix VDA パッチも充ててしまおうと、欲をかいてソースからコンパイルすることにする。

まずは CentOS のリポジトリから MySQL と PostgreSQL をサポートしている Postfix のソース パッケージ (SRPM) を手に入れよう。
CentOS のリポジトリのサイトは、CentOS の公式 Web サイトのダウンロード メニューのミラー サブメニューで調べられる。

Click 'download - mirror' menu
Click 'Mirror List' link

このように調べた CentOS のリポジトリをミラーしているサイトの中から、今回は理化学研究所 (通称「理研」)当該アーカイブ サイトから使って Postfix のソース パッケージを手に入れることにする。

理研による CentOS のリポジトリのミラーサイトで、「5.6」、「centosplus」、「SRPM」と順にリンクを辿ると、拡張子が src.rpm のファイルが一覧になったページにたどり着く。
ファイルの一覧からファイル名の先頭が postfix から始まるものを探すと、以下の三つが見つかるだろう。

  • postfix-2.3.3-2.1.centos.mysql_pgsql.src.rpm
  • postfix-2.3.3-2.3.centos.mysql_pgsql.src.rpm
  • postfix-2.3.3-2.el5.centos.mysql_pgsql.src.rpm

この中の一つが欲しい Postfix のソース パッケージだ。
これらのファイル名の右横の日付を比較して、もっとも新しい postfix-2.3.3-2.3.centos.mysql_pgsql.src.rpm をダウンロードする。
postfix-2.3.3-2.3.centos.mysql_pgsql.src.rpm のリンク先を調べ、以下のコマンドでこれをインストールする。

インストールの際に「警告: ユーザ mockbuild は存在しません - root を使用します」、「警告: グループ mockbuild は存在しません - root を使用します」といった警告が表示されるかもしれない。
これは Postfix のソース パッケージの中で mockbuild ユーザーと mockbuild グループが使われているためで、今回は特に気にしなくてもいい。

ソース パッケージは /usr/src/ ディレクトリに保存される。
正常にインストールされていれば ls /usr/src/redhat/*/{*postfix*,pflogsumm*} コマンドを実行すれば、以下のように表示されるだろう。

続いて Postfix VDA パッチを用意する。
現時点で Postfix の最新版は 2.8.3、安定版でも 2.8.2 まで進んでいるが、上で入手した Postfix は 2.3.3 なのでこれに合った VDA のパッチが必要だ。

Postfix VDA の Web サイトのトップ ページでは Postfix の最新版に対応したバージョンから順に一覧されている。
Postfix 2.3.3 用のパッチはこの中に挙がっていないので、一覧の下にある「Download patch for older Postfix's versions」のリンクをクリックしてより古いバージョン用のパッチを探す。
「Postfix 2.3 Support」の中の「Postfix 2.3.3: SHASUM f5523ea9ddfd1581cbfe4a451c6f6027055fc496 http」が、Postfix 2.3.3 用のパッチになる。
この行の「http」のリンクをクリックすればパッチがダウンロードできるが、ここでは「http」のリンクが指す URI を控えるだけにする。

Click archive of old version
Download Target

http」のリンクが指す URI を控えたら、以下のコマンドのように、Postfix 2.3.3 用の VDA パッチを /usr/src/redhat/SOURCES/ ディレクトリにダウンロードし、更に解凍、展開する。

控えた URI は wget の -nd オプションに続く http 以降になる。

VDA パッチをダウンロードしたら、/usr/src/redhat/SPECS/postfix.spec ファイルの以下の 2 箇所を修正する。

/usr/src/redhat/SPECS/postfix.spec (修正前)
/usr/src/redhat/SPECS/postfix.spec (修正後)
2 行目の ‘#define PGSQL’ の行は、PostgreSQL を使う予定がないため 0 にした。

/usr/src/redhat/SPEC/postfix.spec ファイルを編集したら、RPM パッケージをビルドするのに必要なパッケージをインストールする。
インストールしなければならないパッケージは、/usr/src/redhat/SPAC/posstfix.spec ファイルに書かれている。
簡単に調べるには grep 'BuildRequires' /usr/src/redhat/SPECS/postfix.spec コマンドを実行すればいいだろう。
なお、このコマンドの結果にはコンパイル時に無効にした機能のためのパッケージも含まれるので、実際の要否の判断はもう少し考えなくてはならないだろう。
またここに挙がったもの以外に、gcc パッケージと rpm-build パッケージが必要だ。

ここでは以下のコマンドを使って、必要なパッケージをインストールする。

必要なパッケージをインストールしたら、いよいよ Postifx をコンパイルして CentOS のパッケージを作成する。
パッケージの作成には rpmbuild -bb /usr/src/redhat/SPECS/postfix.spec コマンドを実行する。
必要なのはバイナリ パッケージだけ (ソース パッケージは不要) なので、rpmbuild の実行オプションは -bb でいいだろう。

コンパイルにはそこそこの時間がかかるが、暫くしてコンパイルが終われば、/usr/src/redhat/RPMS/ ディレクトリの中のアーキテクチャ名のディレクトリに RPM パッケージが作成される。
アーキテクチャ名は、32bit 版の CentOS なら i386、64bit 版なら x86_64 だ。
ここで作業しているのは 32bit 版の CentOS なので、以下の三つのパッケージが作成されている。

/usr/src/redhat/RPMS/i386/postfix-2.3.3-2.3.centos.mysql_pgsql.i386.rpm
/usr/src/redhat/RPMS/i386/postfix-pflogsumm-2.3.3-2.3.centos.mysql_pgsql.i386.rpm
/usr/src/redhat/RPMS/i386/postfix-debuginfo-2.3.3-2.3.centos.mysql_pgsql.i386.rpm

なお、ファイル名に「pgsql」が含まれているが、/usr/src/redhat/SPECS/postfix.spec ファイルの中の PGSQL シンボルを ‘0’ にしてコンパイルしているため、ファイル名の示唆と関係無く PostgreSQL のサポートは解除されている。

次は、できあがった RPM パッケージをインストールする。

コメントを残す