本連載の総仕上げとして、アフターフォローや小ネタを含めたTipsを紹介する。今回はインストール関連編として、RPMを中心とした話題を集めてみた。
「実用qmailサーバ運用・管理術」を締めくくるに当たり、いままで紹介し切れなかったことをTipsとして2回にわたって紹介します。前回のトラブルシューティングと同様、すべてを網羅することはできないので、実際の運用で使われる頻度が高そうなものを見ていきましょう。
本連載では、パッケージの導入をソースからインストールする方法で説明してきました。しかし、最近のLinuxディストリビューションにはRPMなどのパッケージ管理ツールが備わっており、パッケージの依存性が崩れてしまうなどの懸念からかソースからのインストールを嫌う方もいるようです。qmailをソースからインストールしてもパッケージの依存性を損なうことはありませんが、パッケージ管理ツールで一元管理できるメリットも捨て難いものです。そこで、現在最も普及しているパッケージ管理システムであるRPM(Red Hat Package Manager)を例に見ていきましょう。
RPMといっても、実はバージョンによって実行するコマンドや用意するファイルが違ってきます。ここではバージョン4以上を前提にします(バージョン3の場合は、注を参照ください)。RPMのバージョンは、以下の方法で確認できます。
# rpm --version |
1つのサーバに2つのMTAは要らないので、sendmailを削除します。残しておくとqmailのインストールの際にエラーが発生します(注)。
# rpm -e sendmail
|
場合によっては依存関係を無視する必要があります。
# rpm -e --nodeps
sendmail |
PostfixがデフォルトのMTAとして動作している場合もあるため、これを削除するかサービスの自動起動をntsysvなどのコマンドで解除しておきます。
次にqmailのRPMファイルを入手してインストールするわけですが、ビルドされたRPMが公開されていない(注)ため、SRPMを入手してrpmbuildを実行し、ビルド済みRPMファイルを作成する必要があります。
# rpm -Uvh http://www.qmail.org/rpms/var-qmail/qmail-1.03-109memphis.src.rpm |
注:src.rpmファイルをローカルに保存し、そこからインストールすることも可能です。 |
# rpmbuild -ba /usr/src/redhat/SPECS/var-qmail.spec
|
注:Red Hat Linuxの場合。Turbolinuxでは/usr/src/turbo/、/var/src/rpmとなるなど、ディストリビューションによって異なります。 |
rpmbuildが終わったら、ビルド済みRPMファイルをインストールします。ただし、ここで作成したRPMファイルにはqmail-date-localtime.patchが適用されていないため、ヘッダに記録される日付・時間情報がローカルタイムになりません。qmail-date-localtime.patchを適用するには、後述の「RPMでインストールしたqmailにパッチを当てるには」を参照してください。
# rpm -Uvh /usr/src/redhat/RPMS/i386/qmail-1.03-109memphis.i386.rpm
|
注:パスはRed Hat Linuxの場合。 |
ここまでの操作で「./config-fast ホスト名」(注)まで実行してくれるため、ほとんど手を加える必要はありません。ただ、Maildir形式でメッセージを保存する場合は/var/qmail/rcファイルを編集します。
#!/bin/sh |
/var/qmail/rc |
確認のため配信テストを行います。
# /var/qmail/rc & |
以上の作業で、xinetdやinetdを使ってqmailを動作させることはできますが、qmailといえばやはりucspi-tcpパッケージに含まれるtcpserverです。ucspi-tcpはビルドされたRPMファイルが用意されているため、checkpassword-0.90-1と併せて入手・インストールします。
# rpm -ivh http://www.qmail.org/rpms/qmail-run/ucspi-tcp-0.88-003memphis.i386.rpm |
残りの作業は第1回 qmailによるSMTPサーバの構築の「tcpserverのインストールとcdbの作成」以降と同じように行います。
まず、次のような/etc/tcp.smtpファイルを用意し、
192.168.0.:allow,RELAYCLIENT="" ←環境に合わせて変更
127.:allow,RELAYCLIENT="" |
/etc/tcp.smtp |
以下のようにしてcdbファイルを作成します。
# /usr/local/bin/tcprules
/etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp |
cdbファイルを作成したら、rcスクリプトを用意します。
#!/bin/sh |
リスト1 /etc/init.d/qmail(ファイルのダウンロード) 注:コピー&ペーストする場合は、行末に余分な空白文字が挿入されていないか確認しましょう。 |
# ln -s /etc/rc.d/init.d/qmail
/etc/rc.d/rc2.d/S99qmail |
qmailのrcスクリプトを用意したら、ipchainsやiptablesでSMTPやPOP3がブロックされていないか確認し、サービスを開始します。また、ユーザーのためのMaildirディレクトリを用意することをお忘れなく。
# /var/qmail/bin/maildirmake
~ユーザー名/Maildir |
「RPMでインストールしたい その1」では、最後のrcスクリプトを第1回 qmailによるSMTPサーバの構築と同様に手動で作成する必要がありました。
しかし、rcスクリプトまで面倒を見てくれるRPMパッケージもあります。http://www.qmail.org/rpms/には、qmail-runパッケージが用意されています。ただ、このパッケージが提供するものは、正確にはrcスクリプトではなく第9回 daemontoolsによるロギングとプロセス監視で紹介したsvscanによるqmailプロセスの常駐化です。そのため、qmail-runを利用するには次のパッケージもインストールする必要があります。
「RPMでインストールしたい その1」の手順でqmail-1.03-109memphis.i386.rpmとucspi-tcp-0.88-003memphis.i386.rpmのインストールまで済んでいるものとします。次に必要なRPMファイルをインストールしますが、順番に注意しましょう。最後にqmail-runパッケージをインストールするようにします。
rpm -Uvh http://www.qmail.org/rpms/qmail-run/functions-4-2.noarch.rpm |
注:RPMファイルをローカルに保存し、そこからインストールすることも可能です。 |
svscanが実行されるように、/etc/inittabに設定を数行追加します。追加する場所にも注意しましょう。
### stop dt-run ←追加 |
/etc/inittab |
編集したら/etc/inittabファイルを再認識させます。その後、svscanプロセスが起動していることを確認します。
# init q |
ここからは第9回 daemontoolsによるロギングとプロセス監視で説明したとおり、svscanに監視させたいプロセスを/serviceディレクトリに登録する必要があります。add-service.shスクリプトを利用することで手順を省略できます。まず、デフォルトで登録可能なサービスを見てみましょう。
# /command/add-service.sh
list |
※:今回のインストールで利用可能なもの |
ここで表示されるサービスの実体は/var/serviceにあります。
# ls /var/service/ |
qmail-qmqpdやrblsmtpdなど、興味をそそるものも用意されていますが、まずはいままでの定石どおりqmail、qmail-smtpd、qmail-pop3dを常駐サービスに加えることにします。
次に、デフォルトの設定で変更や追加が必要な個所に修正を加えます。「RPMでインストールしたい その1」で、/var/qmail/rcを編集してメッセージをMaildir形式で保存するようにしました。ここでは、/var/service/qmail/defaultdelivery/rcファイルを設定します。
QMAIL_BIN=/var/qmail/bin |
/var/service/qmail/defaultdelivery/rc |
tcprulesで使用するリレーコントロールファイル(cdbファイル)を/var/service/サービス名ディレクトリに用意します。tcp.smtpファイルの記述については、第1回 qmailによるSMTPサーバの構築を参照してください。
●qmail-smtpd用tcp.smtp.cdbファイルの準備
192.168.0.:allow,RELAYCLIENT="" ←ネットワーク環境に合わせて変更 |
/var/service/qmail-smtpd/tcp.smtp |
上記のようなファイルを用意し、以下の手順でcdbファイルを生成します。
# cd /var/service/qmail-smtpd |
●qmail-pop3d用tcp.smtp.cdbファイルの準備
192.168.0.:allow,RELAYCLIENT="" ←ネットワーク環境に合わせて変更 |
/var/service/qmail-pop3d/tcp.smtp |
同じくtcp.smtpファイルを用意し、cdbファイルを生成します。
# cd /var/service/qmail-pop3d |
ちなみに、cdbファイルは/var/service/サービス名/runファイル中のCDB変数で指定されています。
CDB="/var/service/qmail-pop3d/tcprules.cdb" |
/var/service/qmail-pop3d/runの場合 |
multilogでログを記録する際のファイルサイズの制限、ローテーションファイルの個数の設定は、次のファイルで行います。
1,000,000 ←ログファイルの最大サイズ |
/var/service/multilog/filesize |
10 ←古いログファイルをいくつまで残すかを指定 |
/var/service/multilog/fileno |
準備が整ったらadd-service.shスクリプトを使い、サービスを追加します。add-service.shの引数にqmail、qmail-pop3d、qmail-smtpdの3つを指定します。
# /command/add-service.sh
qmail qmail-pop3d qmail-smtpd |
登録されたサービスに対するリンクファイルが/serviceディレクトリに作成されていることを確認します。
# ls -l /service/ |
それぞれのサービスの状態は、
# /command/svstat
/service/サービス名 |
でも確認できます。
/commandディレクトリにはそれぞれのサービスに対してinitファイルが作成されているため、そちらを使用します。
# /command/qmail.init
status |
以上で作業は終了です。複数のパッケージを導入するためコマンド1つで完了とはいきませんが、ソースからインストールするよりは負担が軽くなります。エラーが出てしまうと、どこでエラーが発生しているかを調べるのに手間が掛かるという側面もありますが、落ち着いてもう1度エラーメッセージを確認しましょう。
Copyright © ITmedia, Inc. All Rights Reserved.