メールサーバ - 証明書・接続拒否・中継確認 - 中継確認
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
127.:allow,RELAYCLIENT="" 192.168.0.:allow,RELAYCLIENT="",QMAILQUEUE="/var/qmail/bin/simscan" :allow,QMAILQUEUE="/var/qmail/bin/simscan" 1.2.3.:deny
$ 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
$ setenv TCPREMOTEIP 4.5.6.7 $ tcprulescheck /etc/tcp/tcp.smtp.cdb rule : set environment variable QMAILQUEUE=/var/qmail/bin/simscan allow connection
$ setenv TCPREMOTEIP 1.2.3.4 $ tcprulescheck /etc/tcp/tcp.smtp.cdb rule 1.2.3.: deny connection
#!/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