インストール

必要なもの

qmail-vidaをインストールするためにはD. J. Bernstein氏の以下のパッケージが必要です。D. J. Bernstein氏のサイト(http://cr.yp.to/)あるいはそのコピーを置いてあるqmail-vidaのサイト(http://www.emaillab.org/djb/qmail-vida/)からダウンロードしてください。

パッケージの展開

まず、先にダウンロードしたパッケージ及びqmail-vidaパッケージを展開します。

$ gzip -dc qmail-1.03.tar.gz | tar xvf -
$ gzip -dc checkpassword-0.90.tar.gz | tar xvf -
$ gzip -dc ucspi-tcp-0.88.tar.gz | tar xvf -
$ gzip -dc qmail-vida-0.51.tar.gz | tar xvf -

qmail-vidaのディレクトリに移動します。

$ cd qmail-vida-0.51

Makefileを編集し、各パッケージのソースコードが展開されているディレクトリのパスを設定します。

QMAILSRC        = ../qmail-1.03
CHECKPASSWORDSRC= ../checkpassword-0.90
UCSPITCPSRC     = ../ucspi-tcp-0.88
PREFIX          = /var/qmail

patchディレクトリに入っているパッチをqmailとcheckpasswordに当てます。

$ make patch
あるいは
$ cat patch/qmail.patch |(cd ../qmail-1.03;patch -p1)
$ cat patch/checkpassword.patch |(cd ../checkpassword-0.90;patch -p1)

D.J.Bernstein氏のライブラリを一緒に展開したパッケージからqmailとcheckpasswordのディレクトリにコピーします。

$ make copy

コンパイル前の設定

グループとユーザの追加

コンパイル前に以下に述べるようなグループとユーザを追加します。デフォルト値を変える場合は各パッケージを展開したディレクトリにあるconf-*を書き換える必要があります。qmail-vidaパッケージに関してはsrc/vidaにconf-*はあります。

管理用のグループvidaをシステムに追加します。このデフォルトのグループ名をお好みのものに変える場合はqmailパッケージとvida-qmailパッケージのconf-groupsを書き換えます。

実在ドメインの所有ユーザpop(管理用グループvidaに所属)をシステムに追加します。このとき、ホームディレクトリには仮想メールボックスを置くディレクトリを指定し、シェルには作業用のものとしてお好きなものを指定してください。このデフォルトのユーザ名をお好みのものに変える場合はcheckpasswordパッケージとvida-qmailパッケージのconf-realdomainownerを書き換えます。

パスワードデータベースを管理するためのユーザauthdbとqmailのusers/assignファイルを管理するためのユーザqmailuをシステムに追加します。共に管理者グループvidaに所属させます。このとき、ホームディレクトリには何を指定してもかまいません。/var/qmail/authdbや/var/qmail/usersとでも指定しておけばよいでしょう。シェルにはログインできないもの(例えば、/bin/falseなど)を指定してください。このデフォルトのユーザ名をお好みのものに変える場合はqmailパッケージとqmail-vidaパッケージのconf-usersを書き換えます。

qmailパッケージのINSTAll.idsに従ってユーザとグループをシステムに追加します。この中でユーザqmaildとグループnofilesをお好みのものに変える場合はqmailパッケージだけではなくcheckpasswordパッケージのconf-usersとconf-groupsも書き換えてください。

インストール先の設定

qmailパッケージはデフォルトでは/var/qmailにインストールされます。インストール先を変える場合はqmailパッケージのconf-homeおよびcheckpasswordパッケージとqmail-vidaパッケージのconf-qmailhomeを書き換えてください。

checkpasswordパッケージとqmail-vidaパッケージはデフォルトでは/var/qmailにインストールされます。インストール先を変える場合はcheckpasswordパッケージとqmail-vidaパッケージのconf-homeをそれぞれ書き換えてください。

認証関連の設定

qmail-vidaは独自のパスワードデータベースを認証に利用しています。このデフォルトの設定でよければ特に何も設定は要りません。

実在ユーザの平文認証に/etc/passwdを用いる場合はcheckpasswordパッケージのconf-withpasswdの1行目を1に書き換えてください。ただし、この設定を行なってもパスワードデータベースにエントリーがあるユーザの場合には/etc/passwdを用いません。また、このときは conf-blockuid に記述されたUID以下のユーザに関しては認証を行なわないため、conf-blockuid も必要に応じて修正してください。デフォルトでは UID が 10 以下のユーザは認証を行ないません。

コンパイルとインストール

qmail

qmailのコンパイル及びインストールをqmailパッケージの付属文書に従って行ってください。qmail-smtpdとqmail-pop3dの起動の設定に関しては後述しますのでここでは設定しないでください。また、qmail-startで指定するデフォルトメールボックスには./Maildir/を記述してください。

checkpassword

checkpasswordのコンパイル及びインストールをcheckpasswordパッケージの付属文書に従ってインストールしてください。

qmail-vida

src/vidaディレクトリ移動してmakeを行い、rootの権限でmake setup checkを行うだけです。なお、D. J. Bernstein氏のコードではへッダファイルの include を省略していることがあるので warning がいくつか出ますが、害はないので無視してください。

$ cd src/vida
$ make
# make setup check

qmail-vidaの付属文書のインストール

qmail-vidaを展開したディレクトリに移動して、rootの権限でmake install-doc を行うだけです。

$ cd ../..
# make install-doc

所有者およびパーミッションの確認

/var/qmail のディレクトリのパーミッションは次のようになります。なお、authdbディレクトリはvida-pwdbinitを実行したときに自動生成されます。

$ ls -l
drwxr-sr-x    3 alias    qmail        4096 Jan  7  2001 alias
drwxr-x---    6 authdb   vida         4096 Jan 13 11:31 authdb
drwxr-xr-x    2 root     qmail        4096 Jan  9 22:57 bin
drwxr-xr-x    2 root     qmail        4096 Nov 11  2000 boot
drwxr-xr-x    2 root     qmail        4096 Jan 14 15:01 control
drwxr-xr-x    2 root     qmail        4096 Nov 11  2000 doc
drwxr-xr-x   10 root     qmail        4096 Nov 11  2000 man
drwxr-x---   11 qmailq   qmail        4096 Nov 11  2000 queue
drwxr-sr-x    2 qmailu   qmail        4096 Jan 13 11:32 users

/var/qmail/bin ディレクトリ内のファイルの中で特に注意が必要なものは次のものです。インストール時に自動で設定されますが、手動でコピーした場合には注意してください。

-rwx------    1 root     root        24920 Jan 13 14:49 checkpassword
-rwsr-x---    1 qmailu   vida        11576 Jan 14 13:44 qmail-newu
-rws--x--x    1 qmailq   qmail       12876 Jan 14 13:44 qmail-queue
-rwsr-x---    1 qmailu   vida        17836 Dec  2 19:51 vida-assign
-rwxr-x---    1 root     vida         9428 Dec  2 19:51 vida-maildirmake
-rwsr-xr-x    1 authdb   vida        19180 Dec  2 19:51 vida-passwd
-rwx------    1 root     root        15768 Dec  2 19:51 vida-pwdbinit
-rwsr-xr-x    1 authdb   vida        17064 Dec  2 19:51 vida-pwdbmake

以上でインストールは完了です。

起動ファイルの設定

qmailとcheckpasswordに対する拡張機能

起動ファイルの設定を行なう前に、次の文書を読んでください。

  1. qmail-smtpup
  2. qmail-smtpdの拡張機能
  3. qmail-popupの拡張機能
  4. checkpasswordの拡張機能

qmail-smtpd の起動の設定

qmail-smtpdをinetdやtcpserverから直接起動させるのではなく、次のようにqmail-smtpupとcheckpasswordを経由してqmail-smtpdを起動させます。ただし、qmail-smtpupはrootの権限で起動させてください。qmail-smtpdを呼び出す前にqmaildの権限に自動的に移ります。

qmail-smtpup FQDN checkpassword qmail-smtpd

なお、SMTP認証を行わないのであれば、qmail-smtpdを直接起動させればよいです。

daemontoolsパッケージを使う場合

daemontoolsパッケージのsvscanにより起動される./runファイルの例を示します。

#!/bin/sh
#  /service/smtpd/run
#    Set environment variables IP and HOST.
#    If it is virtual domain, set DOMAINOWNER.
#    If it is necessary, set ALLOWPLAIN, FORCEAUTH and TEMPRELAYCLIENT, too.
#    If it is not necessary, remove 'recordio' line.
exec 2>&1
exec envdir ./env sh -c '
  exec softlimit -d6000000 \
  tcpserver -vHR -l"$HOST" -c40 -- "$IP" 25 \
  recordio fixcrio \
  qmail-smtpup "$HOST" checkpassword qmail-smtpd
'

この場合は次のようにして環境変数を設定します。

echo "192.168.0.10" > env/IP
echo "smtp.example.org" > env/HOST
echo "pop" > env/DOMAINOWNER

なお、空の環境変数を設定したい場合には改行のみのファイルを作成する必要があります。

echo "" > env/ALLOWPLAIN

daemontoolsパッケージを使わない場合

daemontoolsパッケージを使わない場合の起動スクリプト rc.smtpd の例を示します。なお、環境変数の設定に関してはenvのマニュアルも参照してください。

#!/bin/sh
# rc.smtpd
#    Set environment variables IP and HOST.
PATH=/var/qmail/bin:/usr/local/bin:/usr/bin:/bin
IP="192.168.0.0"
HOST="mydomain"

#    If it is virtual domain, set DOMAINOWNER.
#    If it is necessary, set ALLOWPLAIN, FORCEAUTH and TEMPRELAYCLIENT, too.
exec env - \
 PATH="$PATH" \
 DOMAINOWNER="pop" \
softlimit -d6000000 \
tcpserver -vHR -l"$HOST" -c40 -- "$IP" 25 \
fixcrio \
qmail-smtpup "$HOST" checkpassword qmail-smtpd 2>&1 | \
splogger smtpd 4 &

qmail-pop3d の起動の設定

qmailの付属文書に記述してある通り、qmail-popupとcheckpasswordを経由してqmail-pop3dを起動させます。

qmail-popup FQDN checkpassword qmail-pop3d

daemontoolsパッケージを使う場合

daemontoolsパッケージのsvscanにより起動される./runファイルの例を示します。

#!/bin/sh
#  /service/pop3d/run
#    Set environment variables IP and HOST.
#    If it is virtual domain, set DOMAINOWNER.
#    If it is necessary, set ALLOWPLAIN, too.
#    If it is not necessay, remove 'recordio' line.
exec 2>&1
exec envdir ./env sh -c '
  exec softlimit -d6000000 \
  tcpserver -vHR -l "$HOST" -c40 -- "$IP" 110 \
  recordio \
  qmail-popup "$HOST" checkpassword qmail-pop3d Maildir
'

この場合は次のようにして環境変数を設定します。

echo "192.168.0.10" > env/IP
echo "pop.example.org" > env/HOST
echo "pop" > env/DOMAINOWNER

なお、空の環境変数を設定したい場合には改行のみのファイルを作成する必要があります。

echo "" > env/ALLOWPLAIN

daemontoolsパッケージを使わない場合

daemontoolsパッケージを使わない場合の起動スクリプト rc.pop3d の例を示します。なお、環境変数の設定に関してはenvのマニュアルも参照してください。

#!/bin/sh
# rc.pop3d
#
# Set environment variables IP and HOST.
PATH=/var/qmail/bin:/usr/local/bin:/usr/bin:/bin
IP="192.168.0.10"
HOST="mydomain"

# If it is virtual domain, set DOMAINOWNER.
# If it is necessary, set ALLOWPLAIN, too.
exec env - \
 PATH="$PATH" \
 DOMAINOWNER="pop" \
softlimit -d6000000 \
tcpserver -vHR -l"$HOST" -c40 -- "$IP" 110 \
qmail-popup "$HOST" checkpassword qmail-pop3d Maildir 2>&1 | \
splogger pop3d 4 &