■ウイルスからLinuxサーバを守る
第7回:メールサーバの不正利用対策その2
(POP Before SMTPの導入-Qmail編)
SMTPサーバの不正利用対策として,今回はQmailでのPOP Before SMTP導入について解説しよう。POP Before SMTPではSMTP Authenticationのように,メールクライアント側での特別な設定を必要としないため,メールアカウントを持つユーザーに,メールを送信する前にPOPサーバへアクセスしてもらうようにするだけで済むという利点がある

 POP Before SMTPは,前回のようにSMTPに認証機能を持たせる「SMTP Authentication」とは違い,POPサーバへアクセスのあったユーザーのIPアドレスを一定時間保持し,そのIPアドレスからのSMTPサーバ利用を許可するというものだ。これにより,サーバにメールアカウントを持つユーザーは,外部からもSMTPサーバの利用することができるようになり,また,メールアカウントを持たないユーザーからの不正利用を制限することが可能になる。

 POP Before SMTPではSMTP Authenticationのように,メールクライアント側での特別な設定を必要としないため,メールアカウントを持つユーザーに,メールを送信する前にPOPサーバへアクセスしてもらうようにするだけで済むという利点がある。しかし,SMTP Authenticationとは違い,一定時間保持されたIPアドレスさえ一致すれば,認証なしで送信できてしまうということも覚えておきたい。

●QmailでのPOP Before SMTPの導入

 QmailでPOP Before SMTPを実現するために利用できるソフトウェアはいくつかあるが,今回は「relay-ctrl」というソフトウェアを利用した,POP Before SMTPについて解説する。また,IMAPを併用している場合には,IMAP Before SMTPの設定も行っておくとよいだろう。なお,relay-ctrlを動作させるためには「daemontools」も必要になるため,あわせてインストールする。原稿執筆時のバージョンはそれぞれ,「relay-ctrl-3.1.1」,「daemontools-0.76」だ。

●daemontoolsのインストール

 daemontoolsをインストールするには,

$ wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
$ tar xzvf daemontools-0.76.tar.gz
$ cd admin/daemontools-0.76
$ su
password:
# package/install

とすればよい。以上でインストールが完了する。

●relay-ctrlのインストール

 次に,relay-ctrlのインストールを行う。relay-ctrlをダウンロードして展開したあと,作成されたディレクトリに移動して,confファイルでインストール先の編集を行う。relay-ctrlの初期設定では「/usr/local/bin」にインストールされるが,「/var/qmail」以下などにインストールしたい場合は,confファイルを編集しよう。ここでは,インストール時に「/usr/local/man」が存在しないというエラーが出るため,conf-manのみ編集し,ほかは初期の設定のままインストールを行っている。

$ wget http://untroubled.org/relay-ctrl/relay-ctrl-3.1.1.tar.gz
$ tar xvzf relay-ctrl-3.1.1.tar.gz
$ cd relay-ctrl-3.1.1
$ vi conf-man
/usr/local/man ←/var/local/share/manに変更
Man pages will be installed in subdirectories of this directory. An
unformatted man page foo.1 will go into .../man1/foo.1.

$ make
$ su
password:
# ./installer

インストールが完了したら,relay-ctrl用のスプールディレクトリと設定ファイル用のディレクトリを作成し,パーミッションの変更を行う。

# mkdir /var/spool/relay-ctrl
# mkdir /var/spool/relay-ctrl/allow
# mkdir /etc/relay-ctrl
# chmod 700 /var/spool/relay-ctrl
# chmod 777 /var/spool/relay-ctrl/allow

 次に,設定ファイル用のディレクトリ「/etc/relay-ctrl」に「RELAY_CTRL_DIR」というファイルを作成する。そののち作成したスプールディレクトリを記述し,relay-ctrl-allowをsetuidプログラムして動作させるために,パーミッションの変更を行う。

# echo"/var/spool/relay-ctrl/allow">/etc/relay-ctrl/RELAY_CTRL_DIR
# chmodu+s/usr/local/bin/relay-ctrl-allow

●relay-ctrlの設定

 relay-ctrlは,現在のバージョンではPOPサーバへアクセスのあったIPアドレスファイル(「/var/spool/relay-ctrl/allow」以下に作成される)を自動的に削除しないため,cronを利用して自動的に消去するように設定する。

# vi /etc/cron.d/relay-ctrl

* * * * * root /usr/local/bin/envdir /etc/relay-ctrl /usr/local/bin/relay-ctrl-age

以上を記述して保存する。

 アクセスしてきたIPアドレスのデータを保持する時間(送信を許可する時間)は,設定ファイルのディレクトリ「/etc/relay-ctrl」に「RELAY_CTRL_EXPIRY」というファイルを作成し,指定することができる。たとえば10分に指定する場合は,

# echo "600" > /etc/relay-ctrl/RELAY_CTRL_EXPIRY

のように,ファイルに秒数を指定しておけばよい。

 また,事前にPOPサーバもしくはIMAPサーバへのアクセスを行わなくても送信を許可するIPアドレスは,同様に「/etc/relay-ctrl」以下に「RELAY_CTRL_RELAYCLIENT」というファイルを作成し,以下のように記述して設定する。

:allow,RELAYCLIENT='IPアドレス'

1/2 NEXT