4.2 サーバーサービスのセキュア化
前のページへ
次のページへ

4.2.5 qmailのインストールと設定

電子メールはインターネットで使われるアプリケーションの中でも、頻繁に利用されるアプリケーションの1つである。電子メールはSMTP(Simple Mail Transfer Protocol)によって電子メールの送信や中継、転送を実現する。この機能を有するサーバーをSMTPサーバーまたはメールサーバーと呼ぶ。SMTPサーバーはメールを送信や中継、転送するためにインターネットからのアクセスを受け入れなければならず、そのため攻撃の対象になる可能性が非常に高い。

本モデルではSMTPサーバーとしてqmailをインストールし、不正中継防止も含めた設定を実施する。代表的なSMTPソフトウェアにSendmailがあるが、Sendmailは非常に複雑な仕組みで構成されているので、Sendmailの運用には高度な管理能力を必要とする。それに比べ、qmailはシンプルな仕組みになっており、運用管理のコストも低く押さえることができる。また、qmailは数あるSMTPサービスの中でも、実行速度やセキュリティの面で優れている部分が多い。

1) 運用方針

本モデルでは、以下の留意点を考慮したSMTPサービスの運用を行う。

ア) メールの第三者不正中継対策

メールの第三者不正中継とは、SMTPサーバーが運用上許可しない第三者のメール送信に利用されてしまうことである。この不正中継を利用して送信するジャンクメールを一般にSPAMメールと呼ぶ。本モデルでは、明示したネットワークアドレスのメールクライアント以外からのメールの中継を禁止する。

参考資料
 情報処理振興事業協会 セキュリティセンター(IPA/ISEC)
 「小規模サイトをとりまく脅威と現状」:
   http://www.ipa.go.jp/security/fy12/contents/crack/soho/soho/chap1/spam.html

イ) メールは転送のみとする

配送されたメールをローカルに保存せず転送するだけに留めておくことでSMTPサーバー上にユーザのローカルアカウントを作成する必要がなくなり、安全性が向上する。本モデルのSMTPサーバーは、メール転送機能のみを提供する。

ウ) Solaris付属のsendmailは使用しない

本モデルではSMTPサーバーとしてqmailを使用するが、qmailでは内包されているsendmail互換コマンドを使用するため、Solarisに標準で付属しているsendmailは不要となる。不要なパッケージは削除するのが望ましいのでsendmailパッケージを削除する。

2) qmailのインストール

本モデルでは、qmailのバージョン1.0.3を用いて解説する。また、メールの不正中継を防止するためにtcpserverというツールを併用する。tcpserverも以下のサイトから入手でき、ここではバージョン0.88を用いて解説する。

  qmail入手先:
   http://www.qmail.org/

qmail用のアカウント/グループを以下の手順にしたがい作成する(注1)

---qmail用アカウント/グループの作成---
# groupadd -g 50003 nofiles(注2)
# useradd -s /bin/true -g nofiles -d /var/qmail/alias alias
# useradd -s /bin/true -g nofiles -d /var/qmail qmaild
# useradd -s /bin/true -g nofiles -d /var/qmail qmaill
# useradd -s /bin/true -g nofiles -d /var/qmail qmailp
# groupadd -g 50004 qmail(注2)
# useradd -s /bin/true -g qmail -d /var/qmail qmailq
# useradd -s /bin/true -g qmail -d /var/qmail qmailr
# useradd -s /bin/true -g qmail -d /var/qmail qmails
# mkdir /var/qmail


  (注1) qmailは専用のアカウントとグループを作成してその権限で起動する。これはqmailを利用した不正アクセスが行われた場合に、被害を最小限にするためである。  
  (注2) gidとuidは任意であるので、システムによって変更可能である。  

以下の手順で、入手したアーカイブを展開し、手順でコンパイル、インストールする。なお、インストール作業はroot権限で行う必要がある。

---アーカイブの展開---
% gzip -cd qmail-1.0.3.tar.gz | tar -xvf -
% cd qmail-1.0.3

qmailのソースの修正を行う。qmailのコンパイル時に使用されるコンパイラをGNU Cコンパイラに変更し、リンカもGNU Cコンパイラに変更する。修正するファイルは「conf-cc」、「conf-ld」の2つである。

---conf-cc---
gcc -O2

---conf-ld---
gcc -s


---コンパイルとインストール---
% make
% su
# make setup check

3) tcpserverのインストール

tcpserverのインストールは、以下の手順で、入手したアーカイブを展開し、手順でコンパイル、インストールする。なお、インストール作業はroot権限で行う必要がある。

---アーカイブの展開---
% gzip -cd ucspi-tcp-0.88.tar.gz | tar -xvf -

tcpserverのソースの修正を行う。qmailと同様にコンパイラとリンカをGNU Cに変更する。修正するファイルは「conf-cc」、「conf-ld」の2つである。

---conf-cc---
gcc -O2

---conf-ld---
gcc -s


---コンパイルとインストール---
% make
% su
# make setup check

4) qmailの設定

qmailの起動設定と動作設定を行う。本モデルでは「1)運用方針」にしたがってア)からオ)の設定を行う。

ア) qmailの起動設定

システム起動時にqmailが自動的に起動されるように設定する。/etc/rc2.dディレクトリ配下に起動スクリプト「S99qmailboot」を作成する。スクリプトの内容は以下のとおり。

#!/bin/sh
# Using splogger to send the log through syslog.
# Using qmail-local to deliver messages to ~/Mailbox by default.

/usr/local/bin/tcpserver -x /usr/local/etc/tcp.smtp.cdb -u 777 -g 50003 0 smtp var/qmail/bin/qmail-smtpd 2>&1 | /var/qmail/bin/splogger smtpd 3 & (注3)

exec env - PATH="/var/qmail/bin:$PATH" \
qmail-start ./Mailbox splogger qmail &


  (注3) スクリプト内の数値「777」はqmaildのUID、「50003」はqmaildのGIDである。環境によって値が異なるので/etc/passwdなどでqmaildのUIDを調べてその値を記述する。  

スクリプトファイル作成後、実行権限を与えるため、以下のコマンドを実行する。

# chmod 744 S99qmailboot

イ) 設定ファイルの作成1

qmailの設定ファイルとして作成するのは/var/qmail/controlディレクトリ下の5つのファイルで、ファイル名とそれぞれの記述内容はTable 4.19のとおりである。また、本モデルにおける各設定ファイルの内容は「qmail設定ファイル」参照する。

Table 4.19 qmail設定ファイルの種類

ファイル名 解説
me qmailが稼動するホストのFQDN(Fully Qualified Domain Name)を記述する
rcpthosts qmailが受信するメールのホスト名とドメイン名を記述する
locals qmailが受信するメールのホスト名とドメイン名を記述する
queuelifetime メールがキューに保存される時間
defaultdomain メールの送信先(To:)にドメイン名が無い場合に補完するドメイン名を記述する

ウ) 設定ファイルの作成2

明示したIPアドレスからのみ中継を許可する設定を作成する。設定ファイルは/usr/local/etc/tcp.smtpで、以下のように設定する。

---/usr/local/etc/tcp.smtp---
192.168.0.:allow,RELAYCLIENT=""

上記の設定ファイル作成後、tcpserverで使用する固有のデータベース形式に変換するため、以下のコマンドを実行する。

# /usr/local/bin/tcprules /usr/local/etc/tcp.smtp.cdb /usr/local/etc/tcp.smtp.cdb.tmp < /usr/local/etc/tcp.smtp

本モデルではネットワークアドレス「192.168.0.0 mask 255.255.255.0」に属するホストからメールの中継を許可するように設定する。これらのホストからのメールは、外部のドメイン宛であっても配送するが、それ以外のホストからのメールは、rcpthostsに記述したホスト、ドメイン宛のメールのみ配送するようになる。この仕組みによって、外部ドメインから外部ドメインへメールが不正中継されるのを防止している(注4)

  (注4) rcpthostsファイルが無いか設定にミスがあった場合、不正中継が可能になってしまうため、注意が必要である。  

エ) Solaris付属のsendmailのアンインストール

qmailにはsendmailコマンドと互換性のあるコマンドが内包されているため、Solaris標準のsendmailは不要である(qmailの動作に関するかぎり)。以下の方法でsendmailをアンインストールし、qmail付属の互換コマンドへのリンクを作成する。

# pkgrm SUNWsndmu
# pkgrm SUNWsndmr
# ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail

オ) メール転送の設定

受信したメールを指定したメールアドレスに転送する設定を作成する。ここでは「virtual@ipa.go.jp」宛てのメールを「real@in.ipa.go.jp」に転送する場合の設定を行う。

# cd /var/qmail/alias
# echo "&real@in.ipa.go.jp" > .qmail-virtual

 

前のページへ
目次へ
次のページへ
Apache+mod SSLのインストールと設定
第4章の目次
第5章の目次


Copyright ©   2002 Information-technology Promotion Agency, Japan.  All rights  reserved.