- 1. 概要
- 2. 中継確認
- 3. 中継拒否確認
- 4. 受信拒否確認
- 5. シェルスクリプト
1. 概要
メールサーバに接続するクライアントを中継させる・させないのチェックを行います。
チェックに使用するのは「telnet」コマンドですので、「tcpserver」経由の設定を行っていれば、メールサーバのプログラムによらずこの方法は使用できます。
接続および中継許可をローカルネットワークとして「192.168.0.0/255.255.255.0」
拒否ネットワークを「1.2.3.0/255.255.255.0」
として、以下の定義をしているものとします。
127.:allow,RELAYCLIENT=""
192.168.0.:allow,RELAYCLIENT="",QMAILQUEUE="/var/qmail/bin/simscan"
:allow,QMAILQUEUE="/var/qmail/bin/simscan"
1.2.3.:deny
2. 中継確認
「tcpserver」には、メールの送信元アドレスが「TCPREMOTEIP」として設定されます。
中継できるアドレスを設定して確認してみます。
$ setenv TCPREMOTEIP 192.168.0.1
$ tcprulescheck /etc/tcp/tcp.smtp.cdb
rule 192.168.0.:
set environment variable RELAYCLIENT=
set environment variable QMAILQUEUE=/var/qmail/bin/simscan
allow connection
2行目の中継設定ファイルのディレクトリ・ファイル名は環境に合わせてください。
3. 中継拒否確認
中継を拒否するアドレスを設定して確認してみます。
$ setenv TCPREMOTEIP 4.5.6.7
$ tcprulescheck /etc/tcp/tcp.smtp.cdb
rule :
set environment variable QMAILQUEUE=/var/qmail/bin/simscan
allow connection
3行目はルールの記述がないということです。
5行目、「allow connection」と出力されるので、一瞬びっくりするかも知れません(わたしは、したのだ)。
「tcp.smtp.cdb」のルールに「4.5.6.7」は、入っていないので、デフォルトとして「allow connection」、つまり接続を許可して受信するという意味です。
「RELAYCLIENT」環境変数を設定していないので、受信したサーバの外へは送信しません。
「qmail-smtpd」は、メールを受け取ってもあて先が自分以外のホストである場合は「/var/qmail/control/rcpthosts」にあるホストからのメールしか転送しません。
ただし、環境変数として、「RELAYCLIENT」が設定されているアドレスからのメールは転送する仕組みになっています。
4. 受信拒否確認
$ setenv TCPREMOTEIP 1.2.3.4
$ tcprulescheck /etc/tcp/tcp.smtp.cdb
rule 1.2.3.:
deny connection
受け取りを拒否しています。
5. シェルスクリプト
毎回、2行打つのが嫌になってきたので、シェルスクリプトを作成しました。
(なんてズボラなんだ。でも、ときどきチェックするからなぁ。毎回2行打つのが面倒なのだ)
#!/bin/sh
export TCPREMOTEIP=${1}
echo $TCPREMOTEIP
/usr/local/bin/tcprulescheck /etc/tcp/tcp.smtp.cdb
/パス/シェルスクリプトファイル名.sh 127.0.0.1
てな感じで実行すると、以下の結果が得られます。
sh: /home/kitayama/tcprulescheck.sh: not found
|
|