スパム対策(taRgrey)

「taRgrey」はS25R、tarpitting、greylistingの3つのスパム判定手法を組み合わせたものです。
これだけでもかなりのスパムを弾く事が出来ますが、Yahooメール等のフリーメールや固定IPから送信されたスパムは弾くことが出来ません。
その為、「taRgrey」を1次フィルタとして用い、「SpamAssassin」を2次フィルタとして用いる事により、ほとんどのスパムを弾くことが出来ます。
「SpamAssassin」の設定方法はこちらにあります。
なお、「SMTPサーバ(Postfix)の設定」は終わっているものとします。

「Postfix」のインストール

「taRgrey」では怪しい送信元に対しtarpitting(応答の遅延)を行いますが、応答待ちですぐに処理が終了しない為、smtpdプロセスが増加します。
そこで「Postfix」にパッチを当てて、遅延している間に相手が接続を切ったら、こちらのsmtpdもすぐに終了するよう、パッチを当てます。
なお、ソースのダウンロードにyumdownloaderコマンドを利用していますが、導入方法についてはこちらを参照して下さい。
また、rpmbuildコマンドで、エラー: ビルド依存性の失敗: と表示された場合、必要なものをyumコマンドでインストールして下さい。

[root@CentOS ~]# yumdownloader --source postfix <= 「Postfix」のソースをダウンロード
[root@CentOS ~]# rpm -ivh postfix-2.3.3-2.src.rpm <= SRPMファイルのインストール
[root@CentOS ~]# cd /usr/src/redhat/SOURCES <= 作業用ディレクトリへ移動
[root@CentOS SOURCES]# tar xzf postfix-2.3.3.tar.gz <= ソースの展開
[root@CentOS SOURCES]# cd postfix-2.3.3 <= 展開したディレクトリへ移動
[root@CentOS postfix-2.3.3]# wget http://k2net.hakuba.jp/pub/postfix-sleep.patch <= パッチのダウンロード
[root@CentOS postfix-2.3.3]# patch -p1 < postfix-sleep.patch <= パッチの適用
[root@CentOS postfix-2.3.3]# rm -f postfix-sleep.patch <= パッチファイルの削除
[root@CentOS postfix-2.3.3]# cd ../
[root@CentOS SOURCES]# rm -f postfix-2.3.3.tar.gz <= 元のソースを削除
[root@CentOS SOURCES]# tar czf postfix-2.3.3.tar.gz postfix-2.3.3 <= パッチを当てたソースを圧縮
[root@CentOS SOURCES]# vi /usr/src/redhat/SPECS/postfix.spec <= SPECファイルの編集
Release: 2
↓
Release: 2.tg <= 変更


[root@CentOS SOURCES]# rpmbuild -bb --clean /usr/src/redhat/SPECS/postfix.spec <= SRPMパッケージからRPMパッケージを作成
[root@CentOS SOURCES]# rpm -Uvh /usr/src/redhat/RPMS/i386/postfix-2.3.3-2.tg.i386.rpm <= 「Postfix」のインストール

yumのアップデート対象から「Postfix」を外します。

[root@CentOS ~]# vi /etc/yum.conf <= 設定ファイルの編集
exclude=postfix <= 追加
「Postgrey」のインストール

「taRgrey」を利用する為に「Postgrey」にパッチを当ててインストールします。
なお、「Postgrey」はdagのリポジトリを利用しますが、現在(2008年4月13日)ソースがサーバ上に無いようですので、理研からダウンロードしています。

[root@CentOS ~]# wget http://ftp.riken.jp/Linux/dag/source/postgrey-1.31-1.rf.src.rpm <= 「Postgrey」のソースをダウンロード
[root@CentOS ~]# rpm -ivh postgrey-1.31-1.rf.src.rpm <= src.rpmのインストール
[root@CentOS ~]# cd /usr/src/redhat/SOURCES/ <= 作業用ディレクトリへ移動
[root@CentOS SOURCES]# tar xzf postgrey-1.31.tar.gz <= ソースの展開
[root@CentOS SOURCES]# cd postgrey-1.31 <= 展開したディレクトリへ移動
[root@CentOS postgrey-1.31]# wget http://k2net.hakuba.jp/pub/targrey-0.31-postgrey-1.31.patch <= パッチのダウンロード
[root@CentOS postgrey-1.31]# patch -p0 < targrey-0.31-postgrey-1.31.patch <= パッチの適用
[root@CentOS postgrey-1.31]# rm -f targrey-0.31-postgrey-1.31.patch <= パッチファイルの削除
[root@CentOS postgrey-1.31]# cd ../
[root@CentOS SOURCES]# rm -f postgrey-1.31.tar.gz <= 元のソースを削除
[root@CentOS SOURCES]# tar czf postgrey-1.31.tar.gz postgrey-1.31 <= パッチを当てたソースを圧縮
[root@CentOS SOURCES]# vi /usr/src/redhat/SPECS/postgrey.spec <= SPECファイルの編集
Release: 1.rf
↓
Release: 1.tg.rf <= 変更


[root@CentOS SOURCES]# rpmbuild -bb --clean /usr/src/redhat/SPECS/postgrey.spec <= SRPMパッケージからRPMパッケージを作成
[root@CentOS SOURCES]# rpm -ivh /usr/src/redhat/RPMS/noarch/postgrey-1.31-1.tg.rf.noarch.rpm <= 「Postgrey」のインストール

現時点(2008年4月13日)では、デフォルトの設定ではyumで「Postgrey」はインストールされませんが、 念の為yumのアップデート対象から「Postgrey」を外します。

[root@CentOS ~]# vi /etc/yum.conf <= 設定ファイルの編集
exclude=postfix
↓
exclude=postfix postgrey <= 変更
「Postfix」の設定

main.cfの設定

当サイトでは、元々記述している部分を1行で記述していますが、ここでは複数行に分けています。

[root@CentOS ~]# vi /etc/postfix/main.cf <= 設定ファイルの編集
smtpd_recipient_restrictions =
        permit_mynetworks
        permit_sasl_authenticated
        reject_unauth_destination
以下を追加
        check_client_access    hash:$config_directory/whitelist_client
        check_client_access    regexp:$config_directory/permit_client_nots25r
        check_policy_service   inet:60000
        permit

smtpd_data_restrictions =
        permit_mynetworks
        permit_sasl_authenticated
        reject_unauth_destination
        check_client_access    hash:$config_directory/whitelist_client
        check_client_access    regexp:$config_directory/permit_client_nots25r
        check_policy_service   inet:60000
        permit
ここまで

「Postgrey」関係の設定

設定ファイルをダウンロードし、指定のディレクトリに配置します。

[root@CentOS ~]# wget http://k2net.hakuba.jp/spam/postfix.conf.2.tar.gz <= 設定ファイルのダウンロード
[root@CentOS ~]# tar xzf postfix.conf.2.tar.gz <= ダウンロードしたファイルの展開
[root@CentOS ~]# cp postfix.conf.2/whitelist_client /etc/postfix/ <= 設定ファイルのコピー
[root@CentOS ~]# cp postfix.conf.2/permit_client_nots25r /etc/postfix/ <= 設定ファイルのコピー
[root@CentOS ~]# rm -rf postfix.conf.2 <= 展開したディレクトリの削除
[root@CentOS ~]# rm -f postfix.conf.2.tar.gz <= ダウンロードしたファイルの削除
[root@CentOS ~]# postmap /etc/postfix/whitelist_client <= whitelist_clientファイルのDB化
「Postgrey」の設定

「Postgrey」の起動時に「taRgrey」が有効になるように起動オプションを変更します。
ここでは、125秒の遅延を設定し、最初に送信されてから1時間(3600秒)以上開けて、 再送を2回以上されたときのみメールを受け取るように設定しています。
また、上記の設定と合わせ、ポリシーサーバの待ち受けポートを60000に指定しています。

[root@CentOS ~]# vi /etc/rc.d/init.d/postgrey <= 設定ファイルの編集
OPTIONS="--unix=$SOCKET"
↓
OPTIONS="--dbdir=$DBPATH --inet=127.0.0.1:60000 --tarpit=125 --targrey --retry-count=2 --delay=3600" <= 変更
「Postfix」、「Postgrey」の起動

「Postgrey」の起動

[root@CentOS ~]# /etc/rc.d/init.d/postgrey start

CentOS起動時に「Postgrey」を起動するようにします。

[root@CentOS ~]# chkconfig postgrey on

「Postfix」の再起動

[root@CentOS ~]# /etc/rc.d/init.d/postfix restart
▲ページのトップへ