qmailのセキュリティの設定

 qmailのIPアドレスによる制限の仕方、”SMTP before POP3”の設定の仕方について説明しています。

≪ 項目 ≫
1.tcpserverの設定(qmailのセキュリティ)
2.SMTP before POP3 の設定

 1.tcpserverの設定(qmailのセキュリティ)

 次は qmail のセキュリティの設定をします。使用するのは tcpserver と言う qmail が推奨するアクセス制限のプログラムです。(xinetdの代わりに使用します。) tcpserver は独自のデータベースファイルを用いてIPアドレスやホスト名によるアクセス制限が可能で、xinetd と比べると高速で、同時接続数に制限が掛けられるので、DoS攻撃を受けたとしても安定しています。

 ◆ tcpserverのインストール

 ダウンロードしてきた”ucspi-tcp-0.88.tar.gz”と”cdb-0.75.tar.gz”を”/usr/local/src”の直下にコピーして、それぞれのアーカイブを解凍します。

[root@localhost /usr/local/src]# tar zxvf ucspi-tcp-0.88.tar.gz
[root@localhost /usr/local/src]# tar zxvf cdb-0.75.tar.gz

 解凍が終了すると、”ucspi-tcp-0.88”と”cdb-0.75”のディレクトリィが作成されているます。 まずは”ucspi-tcp-0.88”の方からインストール作業を行います。カレントを”ucspi-tcp-0.88”に移動させ以下のコマンドを実行します。

[root@localhost /usr/local/src/ucspi-tcp-0.88]# make
[root@localhost /usr/local/src/ucspi-tcp-0.88]# make setup check

特にファイルの編集作業などは無く、そのままコンパイルとインストールだけ良いです。tcpserverの使用の仕方は後で説明します。
続いてtcpserverを高速でサポートする”cdb-0.75”のインストールを行います。カレントを”cdb-0.75”に移動して以下のコマンドを実行します。

[root@localhost /usr/local/src/cdb-0.75]# make
[root@localhost /usr/local/src/cdb-0.75]# make setup check

”cdb”に関してもこれだけでOKです。
 これでインストールは終了です。”/usr/local/bin”にいくつかスクリプトが追加されています。

 ◆ tcpserverの設定

 tcpserverを使用してアクセス制限の設定をします。最初で記述したとおり、tcpserver は独自のデータベースファイルを使用してアクセス制限をします。 まずは、SMTP用(ポート番号:25)のデータベースファイル作成します。”/etc/tcp.smtp”というファイル名で新規で作成します。

以下の様に記述します。
127.0.0.1:allow,RELAYCLIENT=""
222.150.153.bbb:allow,RELAYCLIENT="" <<--(1)
.lab-kage.plala.jp:allow,RELAYCLIENT="" <<--(2)
:allow <<--(3)

 tcpserverは、動作に必要なホスト名やIPアドレスなどの情報を”RELAYCLIENT”という環境変数から取得します。 よって、(1) の場合はIPアドレスが 222.150.153.bbb であった場合、環境変数”RELAYCLIENT”の設定を空白とする事でアクセス制限が無くなり、アクセスを許可する事になります。 (2) も同じく、ドメイン部が”lab-kage.plala.jp”の場合、アクセスを許可します。
 (3) は、自ホスト宛のメールを受け取る為に必要なので記述しておきます。(”RELAYCLIENT”は不要です。)
逆にアクセス許可するのではなく、拒否する場合は”:allow”ではなく”:deny”にします。 また 192.168.1.1-100:deny とすると、192.168.1.1〜192.168.1.100 までの範囲をアクセスを拒否する事もできます。

 次に作成したファイルを元に cdbファイル形式に変換します。以下の様にします。

[root@localhost /]# /usr/local/bin/tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp

 同様にPOP3用(ポート番号:110)もデータベースファイル作成します。”/etc/tcp.pop3”というファイルで作成します。

127.0.0.1:allow
222.150.153.bbb:allow
:deny

 POP3 は、SMTP の場合と違ってメール送信する事がないので、”RELAYCLIENT”に設定する必要はありません。 これもSMTPの場合と同じく cdbファイル形式に変換します。

 ”tcpserver”の使い方は以下の様にします。

 tcpserver << オプション >> << ホスト名 >> << ポート >> << プログラム >> 

 ”tcpserver”を起動の仕方の主なオプション

一般オプション説明
-qエラーメッセージを出力しません。
-Qエラーメッセージを出力します。
-vエラーメッセージとステータスメッセージの両方を出力します。
接続オプション説明
-c n接続数を指定します。n個を超えた場合はどれか切断されるまで待機します。デフォルトは40です。
-x cdbファイルデータベースファイルに基づいてアクセス制限をします。
-g gidグループIDをgidに切り替えます。
-u uidユーザーIDをuidに切り替えます。
-hDNS でリモートホスト名を調べます。

<< ポート >> の箇所には、”/etc/services”のポート番号とサービス名の対応表から参照してください。
”tcpserver”を起動する際は以下の様にします。
[root@localhost /]# /usr/local/bin/tcpserver -v -x /etc/tcp.pop3.cdb -r -h pop3 /var/qmail/bin/qmail-popup

 もちろん”tcpserver”は、qmail のアクセス制限以外での用途に使用できます。
今回は”tcpserver”は qmail の起動と同時に行うので、”qmailの運用”を参照してください。


 2.SMTP before POP3 の設定
2.SMTP before POP3 の設定

 POP3 before SMTP とは、SMTP 自体に認証機能が無いため、設定にミスがあると認証なしで誰でも外部からメールを送信できてしまいます。(これがSPAMの踏み台にされる事です。) なので SMTP でメールを送信する前に POP3 の認証をするという機能です。要は POP3 の認証が完了していない場合は、SMTP でメール送信できないという機能です。
 使用するのは”relay-ctrl”と”daemontools”の2つです。POP3 で認証が成功すると、指定したディレクトリィにIPアドレスの情報が書き込まれます。”relay-ctrl”がその情報を参照して、メール送信の許可をするか判断するという仕組みです。

”relay-ctrl-3.1.1.tar.gz”と”daemontools-0.76.tar.gz”の2つを”/usr/local/src”の直下にコピーします。
 まずは”daemontools”からインストールします。

[root@localhost /usr/local/src]# tar zxvf daemontools-0.76.tar.gz
[root@localhost /usr/local/src]# cd ./admin/daemontools-0.76
[root@localhost /usr/local/src/admin/daemontools-0.76]# package/install

”daemontools”をインストールしたのは、”envdir”というプログラムが必要だからです。、設定は特にありません。

 次に”relay-ctrl”をインストールします。

[root@localhost /usr/local/src]# tar zxvf relay-ctrl-3.1.1.tar.gz
[root@localhost /usr/local/src]# cd ./relay-ctrl-3.1.1
[root@localhost /usr/local/src/relay-ctrl-3.1.1]# echo /usr/local/man > conf-man
[root@localhost /usr/local/src/relay-ctrl-3.1.1]# make
[root@localhost /usr/local/src/relay-ctrl-3.1.1]# ./installer

 ”relay-ctrl”の送信可能なIPアドレスの情報を置くディレクトリィと環境変数の設定を行います。

[root@localhost /]# mkdir /etc/relay-ctrl 
[root@localhost /]# mkdir -p /var/spool/relay-ctrl/allow<<--(1)
[root@localhost /]# chmod 700 /var/spool/relay-ctrl<<--(2)
[root@localhost /]# chmod 777 /var/spool/relay-ctrl/allow<<--(3)
 
[root@localhost /]# cd /etc/relay-ctrl 
[root@localhost /etc/relay-ctrl]# echo /var/spool/relay-ctrl/allow > RELAY_CTRL_DIR<<--(4)
[root@localhost /etc/relay-ctrl]# echo 900 > RELAY_CTRL_EXPIRY<<--(5)

 (1) で、送信可能なIPアドレスの情報を置くディレクトリィを指定します。続いて(2)(3) でパーミッションの設定を行います。 (3) はどのユーザーでも書き込みが出来るようにする必要があるので、”777”を指定します。
 次に”RELAY_CTRL_DIR”と”RELAY_CTRL_EXPIRY”の2つの環境変数に設定します。 (4) はIPアドレスの情報を置くディレクトリィの位置を設定します。 続いて(5) はPOP3の認証に成功した後、そのIPアドレスがメール送信可能な時間(秒)を設定します。

 ”relay-ctrl”を起動の仕方についてですが、これも”tcpserver”と同様、qmail の起動と同時に処理するので”qmailの運用”を参照してください。




先頭に戻る メールサーバーの設定に戻る TOPページに戻る