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-smtpdとqmail-pop3dの起動の設定に関しては後述しますのでここでは設定しないでください。また、qmail-startで指定するデフォルトメールボックスには./Maildir/を記述してください。
checkpasswordのコンパイル及びインストールをcheckpasswordパッケージの付属文書に従ってインストールしてください。
src/vidaディレクトリ移動してmakeを行い、rootの権限でmake setup checkを行うだけです。なお、D. J. Bernstein氏のコードではへッダファイルの include を省略していることがあるので warning がいくつか出ますが、害はないので無視してください。
$ cd src/vida $ make # make setup check
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-smtpdをinetdやtcpserverから直接起動させるのではなく、次のようにqmail-smtpupとcheckpasswordを経由してqmail-smtpdを起動させます。ただし、qmail-smtpupはrootの権限で起動させてください。qmail-smtpdを呼び出す前にqmaildの権限に自動的に移ります。
qmail-smtpup FQDN checkpassword qmail-smtpd
なお、SMTP認証を行わないのであれば、qmail-smtpdを直接起動させればよいです。
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パッケージを使わない場合の起動スクリプト 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の付属文書に記述してある通り、qmail-popupとcheckpasswordを経由してqmail-pop3dを起動させます。
qmail-popup FQDN checkpassword qmail-pop3d
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パッケージを使わない場合の起動スクリプト 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 &