qmail+vpopmail環境にPostfixを導入する(その2)
前回までで、taRgrey対応のpostgreyを導入できましたので、引き続きPostfixを導入します。Postfixには、tarpitting時に相手から切断があった場合、SMTPプロセスを終了するパッチ(postfix-sleep.patch)を導入します。また、最近のRedHat系では、Linux-Alternativeを利用してメールサーバを切り替えられるようになっており、これにも対応したいので、SRPMをとってきてspecファイルを改造することにします。
まず、CentOSのページからSRPMファイルを取得して展開します。
[hatena@hatena hatena]$ wget -q http://ftp.jaist.ac.jp/pub/Linux/CentOS/4.6/os/SRPMS/postfix-2.2.10-1.1.el4.src.rpm [hatena@hatena hatena]$ su Password: [hatena@hatena hatena]# rpm -Uvh postfix-2.2.10-1.1.el4.src.rpm
/usr/src/redhat/ 以下にファイルが展開されますので、specファイルを編集し、最新版に対応します。現時点での最新版は、2.4.7(2.5.0もありますが、リリースノートを見る限り、結構修正してる頻度が高いので、2.4系を利用することにします。)ソースをチラッと見たところ、postfix-hostname-fqdn.patchは不要になったようですので、specファイルのパッチからはずし、末尾にpostfix-sleep.patchを追加します。あと、2.2からbounce.cf.defaultが増えているようで、rpmbuildすると「生成済みなのにパッケージされてないファイルがあるぜ!」と怒られるので、%filesのセクション以下に追加します。また、私の環境ではPCREは不要ですので、使わないようにします。
(vpopmailが入っているので、ユーザーID/グループIDに89は使っています。以下ではとりあえず空いてるIDを指定しました。)
以下、specファイルのdiff(manファイルの修正用パッチ作成に伴い修正)
--- postfix.spec.original 2008-02-18 07:30:22.000000000 +0900 +++ postfix.spec 2008-02-18 07:16:30.000000000 +0900 @@ -1,6 +1,6 @@ %define LDAP 2 %define MYSQL 0 -%define PCRE 1 +%define PCRE 0 %define SASL 2 %define TLS 1 %define IPV6 1 @@ -24,9 +24,9 @@ # Postfix requires one exlusive uid/gid and a 2nd exclusive gid for its own # use. Let me know if the second gid collides with another package. # Be careful: Redhat's 'mail' user & group isn't unique! -%define postfix_uid 89 +%define postfix_uid 600 %define postfix_user postfix -%define postfix_gid 89 +%define postfix_gid 600 %define postfix_group postfix %define postdrop_group postdrop %define maildrop_group %{postdrop_group} @@ -42,8 +42,8 @@ Name: postfix Summary: Postfix Mail Transport Agent -Version: 2.2.10 -Release: 1.1.el4 +Version: 2.4.7 +Release: 1.0.1 Epoch: 2 Group: System Environment/Daemons URL: http://www.postfix.org @@ -76,11 +76,13 @@ Patch1: postfix-2.1.1-config.patch Patch3: postfix-alternatives.patch -Patch4: postfix-hostname-fqdn.patch +# Patch4: postfix-hostname-fqdn.patch Patch6: postfix-2.1.1-obsolete.patch Patch7: postfix-2.1.5-aliases.patch Patch8: postfix-large-fs.patch Patch9: postfix-2.2.5-cyrus.patch +Patch10: postfix-sleep.patch +Patch11: postfix-alternateman.patch # Optional patches - set the appropriate environment variables to include # them when building the package/spec file @@ -131,11 +133,13 @@ # Apply obligatory patches %patch1 -p1 -b .config %patch3 -p1 -b .alternatives -%patch4 -p1 -b .postfix-hostname-fqdn +# %patch4 -p1 -b .postfix-hostname-fqdn %patch6 -p1 -b .obsolete %patch7 -p1 -b .aliases %patch8 -p1 -b .large-fs %patch9 -p1 -b .cyrus +%patch10 -p1 -b .sleep +%patch11 -p1 -b .alternateman %if %{PFLOGSUMM} gzip -dc %{SOURCE53} | tar xf - @@ -443,6 +447,7 @@ %attr(0755, root, root) %{postfix_command_dir}/postsuper %attr(0644, root, root) %{postfix_config_dir}/LICENSE %attr(0644, root, root) %config(noreplace) %{postfix_config_dir}/access +%attr(0644, root, root) %config(noreplace) %{postfix_config_dir}/bounce.cf.default %attr(0644, root, root) %config(noreplace) %{postfix_config_dir}/canonical %attr(0644, root, root) %config(noreplace) %{postfix_config_dir}/generic %attr(0644, root, root) %config(noreplace) %{postfix_config_dir}/header_checks
postfix-2.4.7.tar.gzとpostfix-sleep.patchを/usr/src/redhat/SOURCESディレクトリにコピーし、specファイルからRPMをビルドします。
[hatena@hatena hatena]# rpmbuild -ba /usr/src/redhat/SPECS/postfix.spec
うまくいけば、つらつらとメッセージが出た後で、RPMとSRPMが生成された、という感じで出てくると思いますので、こいつらをインストールすれば、Postfixのインストールは完了です。(必要なのは本体と、オプションでpflogsumだけと思います。普通は。)
※と思ったけど、man mailqでうまく参照ができてないみたいなので、ちょっとした修正が必要っぽいです。
08/2/18追記
manファイル用のパッチ。(postfix-alternateman.patch)
--- postfix-2.4.7/man/man1/mailq.1.original 2005-02-05 08:50:55.000000000 +0900 +++ postfix-2.4.7/man/man1/mailq.1 2008-02-18 07:11:49.000000000 +0900 @@ -1 +1 @@ -.so man1/sendmail.1 +.so man1/sendmail.postfix.1