■ウイルスから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 |