a-Column

【FreeBSD】qmailインストール

★まずはqmailインストール用のディレクトリィを作成。

#mkdir /var/qmail

★qmail用のユーザ作成

#pw groupadd nofiles
#pw useradd alias -g nofiles -d /var/qmail/alias -s /nonexistent
#pw useradd qmaild -g nofiles -d /var/qmail -s /nonexistent
#pw useradd qmaill -g nofiles -d /var/qmail -s /nonexistent
#pw useradd qmailp -g nofiles -d /var/qmail -s /nonexistent
#pw groupadd qmail
#pw useradd qmailq -g qmail -d /var/qmail -s /nonexistent
#pw useradd qmailr -g qmail -d /var/qmail -s /nonexistent
#pw useradd qmails -g qmail -d /var/qmail -s /nonexistent

★qmail本体の解凍を行います。

#cd /usr/local/src
#tar zxvf qmail-1.03.tar.gz

★qmailのパッチ当て

qmailのソースのあるディレクトリに移動します。私の場合は(/usr/local/src)で、ソースを展開します。
次に展開したディレクトリにおりて、パッチを当てます。
この際、パッチファイルも(/usr/local/src)に置かれている事を前提とします。

#cd qmail-1.03
#patch -p1 < ../qmail-date-localtime.patch (localtime表示にするpatch)
#patch < ../qmail-smtpd-relay-reject   (不正な中継をさせないpatch)

★次にコンパイルとインストールの実行です。
下記のコマンドでエラーが発生しない事を確認しましょう。

#make setup check

#./config

もし、ここでconfig実行時にエラーがでる場合は、ローカルでしか解決できない
hostnameなどを使用している可能性があります。
この場合は以下の方法でconfigして下さい。
#./config-fast ×××.×××.com

この作業で/var/qmail/control/の下のファイルが作成されます。

★エイリアスの設定

#cd /var/qmail/alias
#touch .qmail-postmaster .qmail-mailer-daemon .qmail-root
#chmod 644 .qmail*


★実稼働の為に・・・
/etc/rc.conf (FreeBSD3.2なら /etc/defaults/rc.conf)
の中の下記の行を変更します。

sendmail_enable="YES"

sendmail_enable="NO"

次に現在動作しているsendmailをkillします。

#killall -kill sendmail

★起動スクリプトの準備

通常/var/qmail/boot/home が起動スクリプトの雛型になっていますので、
これをディレクトリ/var/qmailにファイルrcとしてコピーします。

#cp /var/qmail/boot/home /var/qmail/rc


★動作確認

#/var/qmail/rc &

#/var/qmail/bin/qmail-inject
To: user
Subject: Test

Test desuyo.
[CTRL]+D

#cd /home/user

その中にMaildirというフォルダが作成されていると
思いますので、そこをcatかmoreで覗いてみる。

--------------------------------------------------------
kurihara# ls -l
total 20
-rw-r--r-- 1 okamura okamura 771 Jun 13 09:46 .cshrc
-rw------- 1 okamura okamura 294 Jun 26 19:22 .history
-rw-r--r-- 1 okamura okamura 255 Jun 13 09:46 .login
-rw-r--r-- 1 okamura okamura 165 Jun 13 09:46 .login_conf
-rw------- 1 okamura okamura 371 Jun 13 09:46 .mail_aliases
-rw-r--r-- 1 okamura okamura 331 Jun 13 09:46 .mailrc
-rw-r--r-- 1 okamura okamura 789 Jun 13 09:46 .profile
-rw------- 1 okamura okamura 276 Jun 13 09:46 .rhosts
-rw-r--r-- 1 okamura okamura 852 Jun 13 09:46 .shrc
-rw------- 1 okamura okamura 370 Jun 28 11:27 Mailbox
kurihara# more Mailbox
From kurihara@kurihara.ne.jp Fri Jun 28 02:27:01 2002
Return-Path:
Delivered-To: okamura@kurihara.ne.jp
Received: (qmail 9026 invoked by uid 0); 28 Jun 2002 11:26:56 +0900
Date: 28 Jun 2002 11:26:38 +0900
Message-ID: <20020628022638.9017.qmail@kurihara.ne.jp>
From: kurihara@kurihara.ne.jp
To: okamura@kurihara.ne.jp
Subject: Test

Test dayo.

--------------------------------------------------------

★qmail自動起動とsendmailのリンク張替え

#ln -s /var/qmail/rc /usr/local/etc/rc.d/qmail.sh
とリンクを張っておきます。qmail.shが起動時に実行。(実体は/var/qmail/rcを実行)

/usr/sbin/sendmail -q で停止。
setuidビットを削ってqmailのsendmailモドキにリンクを張っておきます。
こうしておけばperlのスクリプトでsendmailが呼ばれたときもあたかもsendmailを使っているかのようにqmailが振る舞います。

#cd /usr/sbin
#chmod 0 /usr/sbin/sendmail
#mv sendmail sendmail.org
#ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail

★inetdから起動するなら
/etc/inetd.confを書き換えておきます。(tcpserverからの起動なら記述必要無し)

smtp stream tcp nowait qmaild /var/qmail/bin/tcp-env tcp-env /var/qmail/bin/qmail-smtpd
(多分既に#でコメントアウトされている記述が有るはず)

inetdのプロセス番号を調べて再起動
cat /var/run/inetd.pid
又は ps ax | grep inetd

kill -HUP プロセス番号

Last Update : 2005年06月25日 (土) 15:29