なるたけ、
qmail 付属文章の日本語訳 に沿った形でインストールします。
port で入れた場合は、
7. alias の設定から始めてください。
クライアントの場合は、不要なパッチ部分は無視して下さい。
1. インストールディレクトリの作成
2. qmail で使うユーザとグループの作成
# pw groupadd -n nofiles -g 2108
# pw useradd -n alias -u 7790 -g nofiles -d /var/qmail/alias -s /nonexistent
# pw useradd -n qmaild -u 7791 -g nofiles -d /var/qmail -s /nonexistent
# pw useradd -n qmaill -u 7792 -g nofiles -d /var/qmail -s /nonexistent
# pw useradd -n qmailp -u 7793 -g nofiles -d /var/qmail -s /nonexistent
# pw groupadd -n qmail -g 2107
# pw useradd -n qmailq -u 7794 -g qmail -d /var/qmail -s /nonexistent
# pw useradd -n qmailr -u 7795 -g qmail -d /var/qmail -s /nonexistent
# pw useradd -n qmails -u 7796 -g qmail -d /var/qmail -s /nonexistent
|
-u, -g の後の数字は、UID(ユーザID),GID(グループID)で、
他のとぶつからなければOKです。
上のことをスクリプトにした次のシェルスクリプトでもおっけーです。
実行すると、/etc/passwd と /etc/group に次の行が追加されます。
/etc/passwd
alias:*:7790:2108:User &:/var/qmail/alias:/nonexistent
qmaild:*:7791:2108:User &:/var/qmail:/nonexistent
qmaill:*:7792:2108:User &:/var/qmail:/nonexistent
qmailp:*:7793:2108:User &:/var/qmail:/nonexistent
qmailq:*:7794:2107:User &:/var/qmail:/nonexistent
qmailr:*:7795:2107:User &:/var/qmail:/nonexistent
qmails:*:7796:2107:User &:/var/qmail:/nonexistent
|
/etc/group
nofiles:*:2108:
qmail:*:2107:
|
3. パッケージの展開
% tar zxvf qmail-1.03.tar.gz
|
% tar zxvf qmapop-0.51.tar.gz
|
4. パッチ当て
用意したパッチと、対象となるファイルは次の通り。
パッチ qmail-popup.c.patch は、
qmapop を使って APOP 対応にするときのみ必要です。
パッチ名 | 対象ファイル |
qmail-date-localtime.patch | date822fmt.c |
qmail-103.patch | dns.c |
qmail-smtpd.diff | qmail-smtpd.c |
qmail-popup.c.patch | qmail-popup.c |
パッチの当て方は次の通り。
% cd qmail-1.03
% patch -s -p1 < /somewhere/qmail-date-localtime.patch
% patch -s -p1 < /somewhere/qmail-103.patch
% patch -s -p1 < /somewhere/qmail-smtpd.diff
% patch -s -p1 < /somewhere/qmail-popup.c.patch
|
パッチを当てると、各ファイルは次のようになります。
なお、.orig はパッチを当てる前のオリジナルファイルです。
% ls -l date822fmt.c* dns.c* qmail-smtpd.c* qmail-popup.c*
-rw-r--r-- 1 user wheel 1811 Apr 5 23:30 date822fmt.c
-rw-r--r-- 1 user wheel 922 Jun 15 1998 date822fmt.c.orig
-rw-r--r-- 1 user wheel 8965 Apr 5 23:31 dns.c
-rw-r--r-- 1 user wheel 8418 Jun 15 1998 dns.c.orig
-rw-r--r-- 1 user wheel 4580 Apr 5 23:55 qmail-popup.c
-rw-r--r-- 1 user wheel 4058 Jun 15 1998 qmail-popup.c.orig
-rw-r--r-- 1 user wheel 11759 Apr 5 23:41 qmail-smtpd.c
-rw-r--r-- 1 user wheel 11262 Jun 15 1998 qmail-smtpd.c.orig
|
5. make
% pwd
/somewhere/qmail-1.03
% make
% make man
% su
Password:
# make setup
./install
# make check
./instcheck
|
6. ./config
この作業で、/var/qmail/control 以下に5つのファイルが作られます。
% ls /var/qmail/control
defaultdomain locals me plusdomain rcpthost
|
ホストの FQDN を host.domain.ac.jp とすると、
それぞれの中身は次のようなものです。
defaultdomain (qmail-inject: . がないアドレスに付加する)
domain.ac.jp
|
locals (qmail-send: ローカルに配送すべきドメイン
名のリスト)
localhost.domain.ac.jp
host.domain.ac.jp
|
me (自ホスト名)
host.domain.ac.jp
|
plusdomain (qmail-inject: + で終るホスト名に追加する)
ac.jp
|
rcpthosts (qmail-smtpd: 宛名として現れてよいドメ
イン名のリスト。該当しないと受取拒否する)
localhost.domain.ac.jp
host.domain.ac.jp
|
qmail では、/var/qmail/control/rcpthosts に現れないドメイン宛のメー
ルは受取を拒否します。つまり、 デフォルトでは自
ホスト宛に来たメールしか受け取らず、転送は一切拒否する
設定になっています。
特別に、「このホストからのメールは転送したい」というときの
設定方法は
tcpserver で触れます。
なお、rcpthosts ではワイルドカードの書き方も許されます。
(例)
domain.ac.jp - - - domain.ac.jp 宛のみ許す
.domain.ac.jp - - - .domain.ac.jp の前にどんなホスト名が来ても許す
注意!
rcpthosts がない、もしくは完全にカラファイルの場合、
すべての宛先を許可し受け取ります。
外部ドメインへのメールである場合、転送されることに
なりますので SPAM に攻撃されます。
rcpthosts は消してはいけません。
その他の制御ファイル
http://qmail.robata.org/qmail_control.htmlにあります。
例えば SMTP の転送先は smtproutes で制御します。
なお .qmail による転送は smtproutes では制御できないようです。
qmail では、~user/Mailbox もしくは ~user/Maildir に
メールが配送されます。
しかしまた、qmail では root は決してメールを受け取りません。
では、root や postmaster や mailer-dameon 宛のメールや、
ホームディレクトリを持たないアカウント
(bin や daemon たち。/etc/passwd で確認)宛のメールは
どこに配送されるのでしょう?
答えは、ローカルユーザとして作成した alias が受け取ります。
まずは、必要最小限の設定をします。
# touch ~alias/.qmail-root
# touch ~alias/.qmail-postmaster
# touch ~alias/.qmail-mailer-daemon
|
これで、空のファイルが3つ(~alias/.qmail-*)でき、
root, postmaster, mailer-daemon 宛のメールは
~alias/Mailbox へ届きます。
root 宛のメールは ~alias/Mailbox ではなく、
一般ユーザ user で ~user/Mailbox に受け取りたいと言うときは、
~alias/.qmail-root に &user と書いておきます。
最後に、/etc/alias を参照して、
非一般ユーザの設定をします。
echo '&root' > .qmail-nobody
echo '&root' > .qmail-operator
echo '&root' > .qmail-pop
echo '&root' > .qmail-system
echo '&root' > .qmail-toor
echo '&root' > .qmail-usenet
echo '&root' > .qmail-uucp
echo '&root' > .qmail-xten
echo '&root' > .qmail-abuse
echo '&root' > .qmail-security
echo '&root' > .qmail-ftp
echo '&root' > .qmail-ftp-bugs
|
~alias/.qmail-default について
# touch ~alias/.qmail-default
|
とすると、宛先不明のメールはすべて ~alias/Mailbox、
もしくは ~alias/.qmail-default に記述された一般ユーザ宛に
送られます。しかし、宛先不明のゴミメールまで処理する
ことになるので、あまりお勧めできません。
.qmail-default がないとエラーメールを送信者に送り返すことになりますが、
これを悪用されて SPAM サーバへの転送を助長する可能性があります。
.qmail-default に # とだけ書いておけば、
宛先不明メールをすぐに捨てることができます。
その他、dot-qmail の詳細については、
qmail 付属の文章の日本語訳を御覧下さい。
「なぜに Maildir?」で触れたように、
mbox 形式より maildir 形式の方が安全です。
そこで、maildir 形式でメールを受け取るように設定します。
各ユーザーが maildir 形式にするには、次のようにします。
% cd /var/qmail/bin
% ./maildirmake $HOME/Maildir
% echo ./Maildir/ > ~/.qmail
% chmod 600 ~/.qmail
|
./Maildir/ の 最後の / を忘れないようにしてください。
新規ユーザを Maildir 形式にする
新規ユーザに対しては自動的に上の操作をするように
するのがいいでしょう。
# /var/qmail/bin/maildirmake /usr/share/skel/Maildir
|
ユーザ alias を Maildir 形式にする
一般ユーザと同じですが、オーナーを変更しておきます。
# /var/qmail/bin/maildirmake ~alias/Maildir
# chown -R alias ~alias/Maildir
# rm ~alias/Mailbox
|
9. 起動スクリプト
qmail の起動スクリプト /var/qmail/boot/home を
/var/qmail/rc としてコピーし、
./Mailbox を ./Maildir/ で置き換えます。
# cp -p /var/qmail/boot/home /var/qmail/rc
# chmod +w /var/qmail/rc
# vi /var/qmail/rc
|
/var/qmail/rc
#!/bin/sh
# Using splogger to send the log through syslog.
# Using qmail-local to deliver messages to ~/Maildir by default.
# Start qmail-daemons except for qmail-smtpd
exec env - PATH="/var/qmail/bin:$PATH" \
qmail-start ./Maildir/ splogger qmail &
|
起動時に自動的に qmail を起ち上げるには、この /var/qmail/rc を
/usr/local/etc/rc.d あたりにリンクしておきます。
# ln -s /var/qmail/rc /usr/local/etc/rc.d/qmail.sh
|
トラブルシューティング
自動的に起ち上げる場合、qmail のところで起動が引っかかって
しまって先に進まなくなることがありました。
これは、起動スクリプトの最後(qmail の後ろ) に
バックグラウンドに回す &
が抜けているとこうなります。
qmail のソースによっては /var/qmail/boot/home の段階で
抜けていることがありますので、気を付けて下さい。
10. /var/qmail/bin/qmail-showctl
/var/qmail/control 下に置かれるべきコントロールファイルの設定が
どのように認識されているかを確認します。
設定してないファイルはデフォルト設定が使われています。
% /var/qmail/bin/qmail-showctl
|
11. MANPATH
次の2行を /etc/manpath.config に追加して、
qmail の man を MANPATH に登録します。
/etc/manpath.config
MANDATORY_MANPATH /var/qmail/man
MANPATH_MAP /var/qmail/bin /var/qmail/man
|
もしくは、環境変数 MANPATH に /var/qmail/man を追加します。
消さないで
あとで、APOP 対応にするために qmapop を入れますが、
その時に qmail-1.03 の作業ディレクトリが必要になります。
それまでは消さないで置いておきます。
qmail サーバのページ
qmail クライアントのページ
FreeBSD の部屋
Jan. 5, 2001