FreeBSD - メンテナンス・トラブルシュート - メールサーバ - 中継確認

 
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
 てな感じで実行すると、以下の結果が得られます。
127.0.0.1
rule 127.:
set environment variable RELAYCLIENT=
allow connection
 
 
カウンタバックグラウンド