FreeBSD 10.2 RELEASE - qmail - 不正中継確認と拒否アドレス設定

クラウディア 
 「不正中継させないための設定」の確認方法と拒否アドレスの設定方法について記述しておきます。
1. 不正中継確認
2. 拒否アドレスの設定

1. 不正中継確認

 よいタイトルが思いつかなかったので「不正中継確認」となっていますが、正確には「不正中継させないための設定確認」です。  「不正中継させないための設定」で、不正中継をさせないための設定を行いましたが、果たして、これがちゃんと設定されているかどうか不安なとき、確認する方法を示します。  「不正中継させないための設定」に示したように、

127.:allow,RELAYCLIENT=""
192.168.0.:allow,RELAYCLIENT=""
xxx.yyy.zzz.0-8:allow,RELAYCLIENT=""
と設定していたとします。  ここで、tcpserver には、メールの送信元 IP が TCPREMOTEIP として設定されます。  チェックするには、tcprulescheck というコマンドを使います。tcprulescheck は、tcpserver をインストールしたときに同時にインストールされていますので、すぐに実行できます。  以下のように、試験してみます。

> setenv TCPREMOTEIP 12.13.14.15
>  tcprulescheck /etc/tcp/tcp.smtp.cdb
default:
allow connection
>  setenv TCPREMOTEIP 127.0.0.1
>  tcprulescheck /etc/tcp/tcp.smtp.cdb
rule 127.:
set environment variable RELAYCLIENT=
allow connection
 ここで、  setenv TCPREMOTEIP 12.13.14.15 を行ったときに

default:
allow connection
 と出力されるので、一瞬びっくりするかも知れませんが、そのあとの 127.0.0.1 のループバックアドレスで試験した結果と比べれば安心できると思います。  tcp.smyp.cdb. のルールに 12.13.14.15 は、入っていないので、デフォルトとして allow connection を示すのですが、RELAYCLIENT 環境変数は設定していません。逆に、127.0.0.1 は、ルールとしてはいっているので rule 127.: で set environment variable RELAYCLIENT= を設定しています。  qmail-smtpd は、メールを受け取ってもあて先が自分以外のホストである場合は /var/qmail/control/rcpthosts にあるホストからのメールしか転送しません。ただし、環境変数として RELAYCLIENT が設定されている IP アドレスからのメールは転送する仕組みになっています。  つまり、12.13.14.15 は allow connection となっていても RELAYCLIENT 環境変数が設定されていないのでメールを転送しませんし、127.0.0.1 は RELAYCLIENT 環境変数が設定されているのでメールを転送するわけです。

2. 拒否アドレス設定

 不正中継メールを遮断しても、自分でホストを立ち上げ、サイトを公開しメールアドレスを公開していると、そのメール宛に spam メールをはじめ、いらないメールが送られてくることが多々あります。  もし、いらないメールを送ってくる送信元が、あるメールアドレスやあるドメインに限られていて、そのメールあるいはドメインを持つメールを受け取る必要がないならば、以下の方法でシャットアウトできます。  /var/qmail/control に badmailfrom というファイルを作成し、その中に

@yahoo.co.jp
@members.interq.or.jp
degiha@zero.ad.jp
@24i.net
@emailacc.com
@livedoor.com
 と記述します。これで badmailfrom に記述したメールアドレスからのメールは、受け取り拒否されて、受信しなくなります。  記述には、多分お気付きだと思いますが、  メールアドレス@ドメイン名 という書き方と  @ドメイン名  という書き方があります。  メールアドレス@ドメイン名の場合、そのメールアドレスからのメールを拒否しているのに対し、@ドメイン名 と記述していると、そのドメイン名を持つメールアドレスをすべて拒否するということになります。