qmail のインストールおよび設定

前のページへ戻る


 現在、研究室のメールサーバ(smtpサーバ)で使用しているqmailのインストールについて記しておく。ただし、以下の方法は作成者がインストール・設定を行ってうまくいった時の結果である。従って、以下のとおり行ったからといってうまくいくかどうかは責任を負わない。作成者の単なる覚書であることに注意されたい。

 なお、qmailを選んだ理由は、(1)文献を読んだ結果、sendmailと比べて分かりやすかったこと、(2)qmailの作者が、qmailの完成度についてエライ自信満々だったこと(すでに期限切れだと記憶しているが、qmail作者はバグ発見者に賞金を出していた)、が挙げられる。
 ぶっちゃけて言えば、パッケージは何でもいいのだ。ただし、以下の条件を満たすのであれば、だが。
 (1)サーバ利用者が何の不自由も無く、メールの送受信を行えること。
 (2) (1)に関連して利用者が手元の端末上でメールの送受信を行えること。利用者全員がサーバにログインしてメールの受信とチェックを行ってたら大変だ。
 (3)不正中継をきちんと拒否すること。SPAM行為(ファイルを大量に送信して相手のサーバをダウンさせる行為)の踏み台になったら、責任問題である。
 (4)セキュリティホールが報告されていないこと。
以上の条件を満たす設定を、簡単に行えるのがqmailだと思ったから、qmailにしただけである。

 インストールはrootになってから行うこと。(当然)


(1)qmail用のユーザー・グループの設定 

(2)qmailのインストール 

(3)設定ファイルの修正  

(4)リレー許可、もしくは拒否の設定

(5)qmailのスタート

(6)ユーザーのメールスプール定義

(7)メーリングリストの設定


(1)qmail用のユーザー・グループの設定     戻る

 qmailは送信、受信、ローカル配送によって、実行者が異なる仕組みになっている。インストールの前にこれらの実行者を用意しておく、つまりユーザー登録する必要がある。

 @グループの用意

  /etc/group ファイルを開く。

%vi /etc/group

以下のグループを登録する。

qmail:*:5001:
nofiles:*:5002:


グループIDは他のグループIDと重複しなければ何番でもよろしい。


 Aユーザーの用意

  ユーザー登録を行う。

%vipw

以下のユーザーを登録する。

alias:*:9901:5002::0:0::/var/qmail/alias:/bin/true
qmaild:*:9902:
5002::0:0::/var/qmail:/bin/true
qmaill:*:9903:
5002::0:0::/var/qmail:/bin/true
qmailp:*:9904:
5002::0:0::/var/qmail:/bin/true
qmailq:*:9905:
5001::0:0::/var/qmail:/bin/true
qmailr:*:9906:
5001::0:0::/var/qmail:/bin/true
qmails:*:9907:
5001::0:0::/var/qmail:/bin/true

所属グループに注意されたい。
alias , qmaild , qmaill , qmailp -> nofiles
qmailq , qmailr , qmails -> qmail


当然のことながら、ユーザーIDは他と重複しないようにすること。また、パスワードは*であり、登録したユーザーでログインは出来ない。(このようなユーザーをヴァーチャルユーザーという)


(2)qmailのインストール      戻る

 さて、以上の準備が済み次第、qmailのインストールに取り掛かる。ちなみに、(1)を行わないまま、(2)に取り掛かると途中でエラーストップすること、および、ユーザー・グループ登録に間違いがあると、インストール中にエラーストップする。

 どこでもいいので、qmail-1.03.tgz(2001.8現在) を持ってきて展開する。ちなみにパッケージは今後バージョンアップするだろうから、その都度、最新版をダウンロードすること。

%tar zxvf qmail-1.03.tgz

因みに作成者は /usr/local で行った。参考までに。次のようにすれば、インストールは終了。

%cd qmail-1.03
%make setup check

しばし待つ…。ここでエラーストップするようならば、ユーザー・グループの登録をもう一度確認されたい。

%./configure


これにてインストールは終了。以下の設定を行っておく。最低限必要なシステム全域のアドレスエイリアスの設定である。

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

あと、起動スクリプトを /var/qmail にコピーする。

%cp /var/qmail/home/boot /var/qmail/rc


(3)設定ファイルの修正     戻る

 (2)が終了すると、/var/qmail/confに設定ファイルがおかれる。設定ファイルは6つある。

 @meファイル
 サーバのドメイン名を入力する。ただ、インストール終了の時点で、ドメイン名を入力した状態になっているので特別な設定を行わない限り、修正の必要は無い。ただし、確認はすること。
 現在、selasc.st.tutrp.tut.ac.jp がメールサーバの役割を受け持っている。従ってmeファイルには以下の記述がなされている。

selasc.st.tutrp.tut.ac.jp


 Alocalsファイル
 ローカル配送すべき、ドメイン名を1つ1行の形式で記入する。現在は以下の様に記入されている。

localhost
st.tutrp.tut.ac.jp


 Brcphostsファイル
 qmailが実行を許可するドメイン名を1つ1行の形で入力する。ここに書かれていないドメインへの送信、ドメインからの送信は受け付けない。
 研究室のメールサーバは以下の方針で設定する。
  1) st.tutrp.tut.ac.jp からの送信は許可する。
  2) それ以外のドメインからは受信のみ許可する。
 従って、以下のような記入になっている。

localhost
st.tutrp.tut.ac.jp

 ここで注意したいのは、rcpthostssファイルに書かれていないドメイン宛のメールも受理しないこと、逆にここにないドメインからのメールも受理しないことである。これでは、外部との連絡は不可能であり、利用者が使用に困る。従って、リレー接続許可の設定を行う必要がある。それについては後述する。

 Cdefaultdomainファイル
 @以下のドメインを入力しておけばよい。従って、

st.tutrp.tut.ac.jp

 とあればよい。

 Ddefaulthostファイル
 defauktdomain と同じでよい。ただし、準備されていないので

%cp defaultdomain defaulthost

とする。

 Eplusdomain 省略する。デフォルトのままでOK。確認はすること。


(4)リレー許可、もしくは拒否の設定     戻る

 さて、(3)で述べたように、このままではメールサーバとして使い難いことこのうえない。少なくとも、@st.tutrp.tut.ac.jpからのメールは何処へでも送信でき、Aそれ以外のドメインのメールは送信はさせずとも、すべて受信する、のでなければどうしようもない。
 それにはインターネットスーパーサーバ(文献2)と呼ばれる物を使う。今回使用したパッケージはtcp_wrappers_7.6.tar.gzである。他に類似する物として tcpserverなるものがあるらしい(しかもqmail作者はこっちを推奨している。なんせ、qmailの作者とtcpserverの作者は同一人物だ。tcp_wrapperにしたのは最初に参考にした文献(文献3)で紹介されていただけで、特に理由は無い)。


 @tcp_wrapper_7.6.tar.gzのインストール
  何処でも良いので、tcp_wrapper_7.6.tar.gzを持ってくる。作者はqmailと同じディレクトリにした。以下の手順に従えばよい。

%tar zxvf tcp_wrappers_7.6.tar.gz
%cd tcp_wrappers_7.6d


インストールする

%make
%make REAL_DAEMON_DIR=/usr/libexec STYLE=-DPROCESS_OPTIONS freebsd

%cp tcpd /usr/sbin
%cp tcpdchk /usr/sbin
%cp tcpdmatch /usr/sbin

2行目のオプションは、1つ目が、デーモンをおくディレクトリで、2つ目はOSの宣言である。3行目は実行形式tcpdを/usr/sbin に写している。 これにてインストールは終了。


 Asmtpの起動方法の設定
  設定ファイルは /etc/hosts.allow である。従って、

%vi /etc/hosts.allow

この中に以下の行を加える。おそらく、smtpのコメントアウトをはずして、多少修正すればいいはずである。

smtp  stream  tcp  nowait  qmaild  /usr/sbin/tcpd  /var/qmail/bin/tcp-env  /var/qmail/bin/qmail-smtpd

qmailのsmtpデーモンは /var/qmail/bin/qmail-smtpd である。それを起動させるためにtcp_wrappersが用意したtcpd、qmailが用意したtcp-envを通してからにする、ということである。

 Bリレー許可・不許可の設定
 設定ファイルは /etc/hosts.allow である。

%vi /etc/hosts.allow

として、以下の部分を付け加える。なお、それ以外の部分はすべてコメントアウトする。

tcp-env : .st.tutrp.tut.ac.jp : setenv = RELAYCLIENT
tcp-env : 133.15.8. : setenv = RELAYCLIENT
tcp-env : ALL
tcp-env : 127.0.0.1 : ALLOW

最初の2行は、.st.tutrp.tut.ac.jp と133.15.8.* から きたメールはリレー接続を許可する、ということである。3行目は、リレーは許可しないが受信はすべてやる(つまりxxxx@st.tutrp.tut.ac.jp にきたメールはすべて受け取る)ということである。
 hosts.allowの記述はinetdを通じて使用される。従って、inetdを再スタートさせる必要がある(何ならリブートしてもよい)。

%ps agux

とする。すると、以下のような表示がされるはずである。

USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
…(中略)
 root 192  0.0   0.1  1048 792 ??  Is   4:33PM  0:00.01 inetd -wW
…(後略)

inetd にハングアップシグナル(わざと「止まったよ」的シグナル)を送る。

%kill -HUP 192

これでリレー許可設定がなされたinetdがスタートする。

余談だが、最近、メールサーバの/var/log/maillog を見ると、tcp-envを研究室外部から起動させようとして、はねられてる輩(どうみても研究室の関係者ではない)がいることがわかる。確かにリレー許可・不許可の設定は活きているらしい。


(5)qmailのスタート     戻る

 @sendmail のストップ
 これまでにsendmailが走っていた場合にはsendmailを止めなければならない。ps agux コマンドでsendmail のPIDを調べ、以下の様にする。

%kill -HUP (sendmailのPID)
%sendmail -q
%sendmail -bp

さらに追い討ちをかけるように、既存のsendmailコマンドを無効化する。(sendmailは /usr/sbinにおいてある。)

%chmod 0 /usr/sbin/sendmail
%mv /usr/sbin/sendmail /usr/sbin/sendmail.bak

その後、qmailが用意したsendmailコマンドにリンクを貼る。

%ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail

その上、sendmailの起動時のスタートを禁止し、qmailを起動時にスタートするようにする。

%vi /etc/rc

赤字の部分が新規追加部分である。

#case ${sendmail_enable} in
#[Yy][Ee][Ss])
#    if [ -r /etc/mail/sendmail.cf ]; then
#       echo -n ' sendmail'; /usr/sbin/sendmail ${sendmail_flags}
#    fi
# ;;
#esac
   if [ -x /var/qmail/rc ]; then
      /var/qmail/rc & echo -n ' qmail'
   fi

さらに、sendmail_enable をNOにする。

%vi /etc/rc.conf

sendmail_enable="NO"

以上の設定が終わったら、安心してqmailを走らせる。

%/var/qmail/rc


(6)ユーザーのメールスプール定義     戻る

 さて、qmailはこれまでと違い、ユーザーのホームにメールをスプールする。ホームにスプールするにも2つ形式がある。
1)ファイルにスプールする(Mailbox形式) 2)ディレクトリにスプールする(Maildir形式)
今回は前者のMailbox形式を採った。理由はMaildir形式にqpopperに対応していないから。qmail作者はMaildir推奨である。
 ユーザーのホームに .qmailファイルを置く。例としてユーザーniho(ホームは /home/niho)を使う。

%vi /home/niho/.qmail

として

./Mailbox

か、

/home/niho/Mailbox

とする。前者にしておけば、他のユーザには、ここで作成した.qmailファイルをコピーするだけでよいのでラク。
なお、メールの転送を行いたいならば.qmailファイルに転送先を書いておく。例えば、niho@st.tutrp.tut.ac.jpにきたメールをniho@jinbo.yu.jpに転送するには/home/niho/.qmailを以下の様に設定する。(&をわすれちゃダメ。)

./Mailbox
&niho@jinbo.yu.jp

この方法はメーリングリストを作成する際にも使うことになる。(後述)


以上でqmailのインストールと設定は終わりである。ユーザー受信にはqpopperを使う。 → qpopperのインストール&設定


(7)メーリングリストの設定    戻る

 最後にメーリングリストの作成方法を示しておく。仕組みを大まかに述べておく。
例として次のようなメーリングリストを造ることにする。

リスト

daihyou@st.tutrp.tut.ac.jp

所属ユーザーアドレス

kimj@st.tutrp.tut.ac.jp
naka-hi@st.tutrp.tut.ac.jp
konishiy@st.tutrp.tut.ac.jp


  @ヴァーチャルユーザーdaihyouの追加

  ユーザの追加を行う。

%vipw

…(中略)
daihyou:*:8901:8901::0:0::/home/daihyou:/bin/csh

ユーザーIDは他と重複しないこと。また、ユーザーdaihyouでのログインは許可しない。次いで、ホームディレクトリも作成する。

%mkdir /home/daihyou
%cd /home/daihyou
%vi ./.qmail

次いで /home/daihyou/.qmail を修正する。

./Mailbox
&kimj@st.tutrp.tut.ac.jp
&naka-hi@st.tutrp.tut.ac.jp
&konishiy@st.tutrp.tut.ac.jp

/home/daihyou の権限をユーザーdaihyouに与える。

%chown -R daihyou /home/daihyou

これで、daihyou@st.tutrp.tut.ac.jp にメールを送れば、所属ユーザーにメールが転送される。


admin@st.tutrp.tut.ac.jp