その1からの続きです。
その1ではPostfixの基本構築が完了、これからtaRgreyの設定を行っていきますが、taRgreyでは S25R+tarpitting+greylisting というスパム判定手法を組み合わせて使います。S25Rにて動的IPらしき場合は怪しいと判断してtarpitting(指定時間の遅延処理)を行います。待ちきれず接続を切断されてもすぐにはsmtpdプロセスが終了しません。遅延中に相手が接続を切ったらsmtpdプロセスもすぐに終了するようにPostfixにパッチを適用します。
Postfixのパッチ(メモリ消費を抑える効果がある)
PostfixのSRPM(ソースファイル)をyumからダウンロードするためyum-utilsをインストール
# yum install yum-utils
yumのBaseレポジトリに追記
# vi /etc/yum.repos.d/CentOS-Base.repo
[base-source]
name=CentOS-$releasever - Base Source
baseurl=http://mirror.centos.org/centos/$releasever/os/SRPMS/
gpgcheck=1
enabled=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
[updates-source]
name=CentOS-$releasever - Updates Source
baseurl=http://mirror.centos.org/centos/$releasever/updates/SRPMS/
gpgcheck=1
enabled=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
[extras-source]
name=CentOS-$releasever - Extras Source
baseurl=http://mirror.centos.org/centos/$releasever/extras/SRPMS/
gpgcheck=1
enabled=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
PostfixのSRPMダウンロード
# yumdownloader --noplugins --source postfix
SRPMの展開
# rpm -ivh postfix-2.3.3-2.1.el5_2.src.rpm (警告が出るが気にしない)
SRPM展開先ディレクトリへ移動
# cd /usr/src/redhat/SOURCES/
ソースの展開
# tar zxvf postfix-2.3.3.tar.gz
展開ディレクトリへ移動
# cd postfix-2.3.3
パッチのダウンロード
# wget http://k2net.hakuba.jp/pub/postfix-sleep.patch
パッチの適用
# patch -p1 < postfix-sleep.patch
上位ディレクトリへ移動
# cd ../
ソースの再アーカイブ化(パッチを適用する前のソースを削除してから再アーカイブ)
# rm -rf postfix-2.3.3.tar.gz && tar czvf postfix-2.3.3.tar.gz postfix-2.3.3
ソース展開先ディレクトリを削除
# rm -rf postfix-2.3.3
ホームディレクトリへ
# cd
PostfixのRPMパッケージを作成
# rpmbuild -bb --clean --define "dist .`echo postfix-*.src.rpm |awk -F. '{print $(NF-2)}'`" /usr/src/redhat/SPECS/postfix.spec
※1行で記述する
作成したRPMパッケージをインストール(アップデート)
# rpm -Uvh --force /usr/src/redhat/RPMS/i386/postfix-2.3.3-2.1.el5_2.i386.rpm
ソースファイル、specファイルの削除
# rpmbuild --rmsource --rmspec /usr/src/redhat/SPECS/postfix.spec
作成したRPMパッケージの削除
# rm -rf /usr/src/redhat/RPMS/i386/postfix-*
ダウンロードしたSRPMの削除
# rm -rf postfix-2.3.3-2.1.el5_2.src.rpm
Postgreyのインストール
PostgreyのSRPMダウンロード
# wget http://apt.sw.be/redhat/el5/en/SRPMS.rpmforge/postgrey-1.32-1.rf.src.rpm
SRPMの展開
# rpm -ivh postgrey-1.31-1.rf.src.rpm(警告が出るが気にしない)
SRPM展開先ディレクトリへ移動
# cd /usr/src/redhat/SOURCES/
ソースの展開
# tar zxvf postgrey-1.32.tar.gz
展開ディレクトリへ移動
# cd postgrey-1.32
パッチをダウンロード(postgreyのバージョンに注意)
# wget http://k2net.hakuba.jp/pub/targrey-0.31-postgrey-1.32.patch
パッチの適用
# patch -p0 < targrey-0.31-postgrey-1.32.patch
上位ディレクトリへ移動
# cd ../
ソースの再アーカイブ化(パッチを適用する前のソースを削除してから再アーカイブ)
# rm -f postgrey-1.32.tar.gz && tar czvf postgrey-1.32.tar.gz postgrey-1.32
ソース展開先ディレクトリを削除
# rm -rf postgrey-1.32
ホームディレクトリへ
# cd
PostgreyのRPMパッケージを作成
# rpmbuild -bb --clean /usr/src/redhat/SPECS/postgrey.spec
Postgrey依存パッケージをインストールためrpmforgeリポジトリを利用
# rpm-ivh http://apt.sw.be/redhat/el5/en/i386/RPMS.dag/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
yumで自動updateされないよう制御
# vi /etc/yum.repos.d/rpmforge.repo
enabled = 1 ← 0に変更する
依存パッケージのインストール(Postgreyをインストールして即削除)
# yum -y --enablerepo=rpmforge install postgrey && rpm -e postgrey
作成したPostgreyのRPMパッケージをインストール
# rpm -ivh /usr/src/redhat/RPMS/noarch/postgrey-1.32-1.rf.noarch.rpm
作成したRPMパッケージの削除
# rm -rf /usr/src/redhat/RPMS/i386/postgrey-*
ダウンロードしたSRPMの削除
# rm -rf postgrey-1.31-1.rf.src.rpm
taRgreyの解説ページから設定例を取得
# wget http://k2net.hakuba.jp/spam/postfix.conf.2.tar.gz
# tar zxvf postfix.conf.2.tar.gz
一部のファイルをコピー
# cp postfix.conf.2/whitelist_recipient /etc/postfix/
# cp postfix.conf.2/whitelist_client /etc/postfix/
# cp postfix.conf.2/permit_client_nots25r /etc/postfix/
whitelist_recipient とwhitelist_client はDB参照となるためDB化
# postmap /etc/postfix/whitelist_recipient
# postmap /etc/postfix/whitelist_client
DBがあるか確認
# ls /etc/postfix
whitelist_client.db whitelist_recipient.db (この2つを確認)
Postfixの設定変更
Postfixの設定変更
# vi /etc/postfix/main.cf
smtpd_recipient_restrictions =
permit_mynetworks
reject_unauth_destination
reject_non_fqdn_recipient
check_recipient_access hash:$config_directory/whitelist_recipient ← 追記
check_client_access hash:$config_directory/whitelist_client ← 追記
check_client_access regexp:$config_directory/permit_client_nots25r ← 追記
check_policy_service inet:60000 ← 追記
#以下全文追記
smtpd_data_restrictions =
permit_mynetworks
reject_unauth_destination
check_recipient_access hash:$config_directory/whitelist_recipient
check_client_access hash:$config_directory/whitelist_client
check_client_access regexp:$config_directory/permit_client_nots25r
check_policy_service inet:60000
permit
main.cfの入力を終了します。
※解説
smtpd_recipient_restrictionsでの一度目のcheck_policy_serviceでtarpittingを掛け、一旦tarpittingブラックリストに登録されます。
tarpittingを抜けた接続はsmtpd_data_restrictionsまで渡ってくるため、再度check_policy_serviceで呼び出し、tarpittingのブラックリストから削除します。
tarpittingのブラックリストに入っているIPからの接続から再送された場合、tarpittingの処理には回さずに、greylistingの処理に回ります。
Postgreyの起動モードを指定(taRgreyモード 125秒)
# vi /etc/init.d/postgrey
#OPTIONS="--unix=$SOCKET" ← コメント化
OPTIONS="--dbdir=$DBPATH --inet=127.0.0.1:60000 --tarpit=125 --targrey --retry-count=2 --delay=3600"
Postgreyの起動
# /etc/init.d/postgrey start
Postgreyの自動起動
# chkconfig postgrey on
Postfixの再起動
# /etc/init.d/postfix restart
Postfixがyum cronで自動アップデートしないよう制御
# vi /etc/yum.conf
[main]内に以下を記述する
exclude=postfix*
以上でtaRgreyの環境は完了です。
0 件のコメント:
コメントを投稿