スパム対策(taRgrey)

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

「Postfix」のインストール

「taRgrey」では怪しい送信元に対しtarpitting(応答の遅延)を行いますが、応答待ちですぐに処理が終了しない為、smtpdプロセスが増加します。
そこで「Postfix」にパッチを当てて、遅延している間に相手が接続を切ったら、こちらのsmtpdもすぐに終了するよう、パッチを当てます。
なお、パッチを当てたことによりオリジナルのソースとサイズ等が変わるので、チェックを行わないようにします。

FreeBSD# cd /usr/ports/mail/postfix <= 作業ディレクトリへ移動
FreeBSD# make fetch-recursive <= ソースのダウンロード
FreeBSD# cd /usr/ports/distfiles/postfix <= ソースのダウンロードディレクトリへ移動
FreeBSD# tar xzf postfix-2.5.1.tar.gz <= 「Postfix」のソースを展開
FreeBSD# cd postfix-2.5.1 <= 展開したディレクトリに移動
FreeBSD# wget http://k2net.hakuba.jp/pub/postfix-sleep.patch <= パッチのダウンロード
FreeBSD# patch -p1 < postfix-sleep.patch <= パッチの適用
FreeBSD# rm -f src/smtpd/smtpd_check.c.orig <= パッチを適用した元のファイルを削除
FreeBSD# rm -f postfix-sleep.patch <= パッチファイルの削除
FreeBSD# cd ../
FreeBSD# rm -f postfix-2.5.1.tar.gz <= 元のソースを削除
FreeBSD# tar czf postfix-2.5.1.tar.gz postfix-2.5.1 <= パッチを当てたソースを圧縮
FreeBSD# rm -rf postfix-2.5.1 <= 展開したソース群の削除
FreeBSD# cd /usr/ports/mail/postfix <= 作業ディレクトリへ移動
FreeBSD# vi Makefile.local <= 設定ファイルの作成
NO_CHECKSUM=yes <= 追加

FreeBSD# make install clean <= 「Postfix」のインストール

portupgradeの対象から「Postfix」を外します。

FreeBSD# vi /usr/local/etc/pkgtools.conf <= 設定ファイルの編集
  HOLD_PKGS = [
    'bsdpan-*',
    'mail/postfix*', <= 追加
  ]
「Postgrey」のインストール

「taRgrey」を利用する為に「Postgrey」にパッチを当ててインストールします。
こちらもパッチを当てたことによりオリジナルのソースとサイズ等が変わるので、チェックを行わないようにします。

FreeBSD# cd /usr/ports/mail/postgrey <= 作業ディレクトリへ移動
FreeBSD# make fetch-recursive <= ソースのダウンロード
FreeBSD# cd /usr/ports/distfiles <= ソースのダウンロードディレクトリへ移動
FreeBSD# tar xzf postgrey-1.31.tar.gz <= 「Postgrey」のソースを展開
FreeBSD# cd postgrey-1.31 <= 展開したディレクトリに移動
FreeBSD# wget http://k2net.hakuba.jp/pub/targrey-0.31-postgrey-1.31.patch <= パッチのダウンロード
FreeBSD# patch -p0 < targrey-0.31-postgrey-1.31.patch <= パッチの適用
FreeBSD# rm -f postgrey.orig <= パッチを適用した元のファイルを削除
FreeBSD# rm -f targrey-0.31-postgrey-1.31.patch <= パッチファイルの削除
FreeBSD# cd ../
FreeBSD# rm -f postgrey-1.31.tar.gz <= 元のソースを削除
FreeBSD# tar czf postgrey-1.31.tar.gz postgrey-1.31 <= パッチを当てたソースを圧縮
FreeBSD# rm -rf postgrey-1.31 <= 展開したソース群の削除
FreeBSD# cd /usr/ports/mail/postgrey <= 作業ディレクトリへ移動
FreeBSD# vi Makefile.local <= 設定ファイルの作成
NO_CHECKSUM=yes <= 追加

FreeBSD# make install clean <= 「Postgrey」のインストール

portupgradeの対象から「Postgrey」を外します。

FreeBSD# vi /usr/local/etc/pkgtools.conf <= 設定ファイルの編集
  HOLD_PKGS = [
    'bsdpan-*',
    'mail/postfix*',
    'mail/postgrey*', <= 追加
  ]
「Postfix」の設定

main.cfの設定

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

FreeBSD# vi /usr/local/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」関係の設定

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

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

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

FreeBSD# vi /etc/rc.conf <= 設定ファイルの編集
以下を追加
postgrey_enable="YES"
postgrey_flags="--pidfile=${postgrey_pidfile} \
                --dbdir=/var/db/postgrey \
                --user=postgrey \
                --group=postgrey \
                --daemonize \
                --inet=127.0.0.1:60000 \
                --tarpit=125 \
                --targrey \
                --retry-count=2 \
                --delay=3600"
「Postfix」、「Postgrey」の起動

「Postgrey」の起動

FreeBSD# /usr/local/etc/rc.d/postgrey start

「Postfix」のリロード

「Postfix」の設定をリロードします。

FreeBSD# /usr/local/sbin/postfix reload
▲ページのトップへ