taRgreyによるスパム対策(taRgrey)

最終更新日: 2014.02.19

<<トップページ <<新着情報 <<サイト内検索 <<CentOSで自宅サーバー構築 <<Scientific Linuxで自宅サーバー構築

■概要

taRgrey(Postgrey+パッチ)でスパムメールをSMTP接続の段階で遮断する。
taRgreyでは、スパム送信元ホストの多数が動的IPである特徴を利用し、動的IPからのSMTP接続にいったん遅延応答する。遅延応答されたスパム送信元ホストは遅延を待たずに接続を切って再送してこないことが多いため、これでスパムを遮断できる。
なお、まともなメールサーバーは遅延応答されたら一定時間後に再送するようになっているため、いったん遅延応答したホストから再送されてきたメールは通常どおりに受信する。これにより、動的IPで構築した自宅メールサーバーからのメールは遮断されない。
また、いったん再送受信したホストは一定期間はホワイトリストへ自動登録して、ホワイトリスト登録ホストからの接続には遅延応答しないようにすることにより、以後はSMTP接続が遅延しないようになっている。
また、遅延応答により応答待ちでSMTPプロセスが増加してメモリを浪費してしまうのを防ぐため、遅延応答したら即座にSMTPプロセスを終了するパッチをPostfixに施行する。

ただし、フリーメール(hotmailやyahoo等)や動的IP以外のホストからのスパムは遮断できないので、taRgreyですり抜けたスパムメールは他の手段でフィルタする。

Postfixによるメールサーバー構築済であること


■Postfixパッチ

[root@fedora ~]# yum -y install yum-utils ← yumでSRPMをダウンロードするyumdownloaderを含むyum-utilsをインストール

[root@fedora ~]# yumdownloader --noplugins --source postfix ← PostfixのSRPMダウンロード

[root@fedora ~]# rpm -ivh postfix-2.5.1-2.fc9.src.rpm ← PostfixのSRPM展開
※ユーザ、グループが存在しない旨の警告メッセージが表示されるが問題ない

[root@fedora ~]# cd rpmbuild/SOURCES/ ← PostfixのSRPM展開先ディレクトリへ移動※F10,F11,F12,F13,F14の場合
[root@fedora ~]# cd /usr/src/redhat/SOURCES/ ← PostfixのSRPM展開先ディレクトリへ移動※F9の場合

[root@fedora SOURCES]# tar zxvf postfix-2.5.1.tar.gz ← Postfixソース展開

[root@fedora SOURCES]# cd postfix-2.5.1 ← Postfixソース展開先ディレクトリへ移動

[root@fedora postfix-2.5.1]# wget http://k2net.hakuba.jp/pub/postfix-sleep.patch ← postfix-sleep.patchダウンロード

[root@fedora postfix-2.5.1]# patch -p1 < postfix-sleep.patch ← postfix-sleep.patch施行
patching file src/smtpd/smtpd_check.c
Hunk #2 succeeded at 3474 (offset 45 lines).

[root@fedora postfix-2.5.1]# cd .. ← 上位ディレクトリへ移動

[root@fedora SOURCES]# rm -f postfix-2.5.1.tar.gz && tar czvf postfix-2.5.1.tar.gz postfix-2.5.1 ← Postfixソース再アーカイブ

[root@fedora SOURCES]# rm -rf postfix-2.5.1 ← Postfixソース展開先ディレクトリ削除

[root@fedora SOURCES]# cd ← ホームディレクトリへ戻る

[root@fedora ~]# rpmbuild -bb --clean rpmbuild/SPECS/postfix.spec ← PostfixのRPM作成※F10,F11,F12,F13,F14の場合
[root@fedora ~]# rpmbuild -bb --clean /usr/src/redhat/SPECS/postfix.spec ← PostfixのRPM作成※F9の場合
rpmbuildが「ビルド依存性の失敗」で異常終了した場合

[root@fedora ~]# rpm -Uvh --force rpmbuild/RPMS/i686/postfix-2.6.5-2.fc12.i686.rpm ← 作成したPostfixのRPMインストール※F12,F13,F14の場合
[root@fedora ~]# rpm -Uvh --force rpmbuild/RPMS/i386/postfix-2.5.1-2.fc9.i386.rpm ← 作成したPostfixのRPMインストール※F10,F11の場合
[root@fedora ~]# rpm -Uvh --force /usr/src/redhat/RPMS/i386/postfix-2.5.1-2.fc9.i386.rpm ← 作成したPostfixのRPMインストール※F9の場合
Preparing...                ########################################### [100%]
   1:postfix                ########################################### [100%]

[root@fedora ~]# /etc/rc.d/init.d/postfix restart ← Postfix再起動
Shutting down postfix:                                     [  OK  ]
Starting postfix:                                          [  OK  ]

[root@fedora ~]# rm -f rpmbuild/RPMS/i686/postfix-* ← 作成したRPMを削除※F12,F13,F14の場合
[root@fedora ~]# rm -f rpmbuild/RPMS/i386/postfix-* ← 作成したRPMを削除※F10,F11の場合
[root@fedora ~]# rm -f /usr/src/redhat/RPMS/i386/postfix-* ← 作成したRPMを削除※F9の場合

[root@fedora ~]# rpmbuild --rmsource --rmspec rpmbuild/SPECS/postfix.spec ← RPM作成後始末※F10,F11,F12,F13,F14の場合
[root@fedora ~]# rpmbuild --rmsource --rmspec /usr/src/redhat/SPECS/postfix.spec ← RPM作成後始末※F9の場合

[root@fedora ~]# rm -f postfix-2.5.1-2.fc9.src.rpm ← ダウンロードしたSRPMを削除

■Postgreyインストール

[root@fedora ~]# yumdownloader --noplugins --source postgrey ← PostgreyのSRPMダウンロード

[root@fedora ~]# rpm -ivh postgrey-1.30-1.fc8.src.rpm ← PostgreyのSRPM展開
※ユーザ、グループが存在しない旨の警告メッセージが表示されるが問題ない

[root@fedora ~]# cd rpmbuild/SOURCES/ ← PostgreyのSRPM展開先ディレクトリへ移動※F10,F11,F12,F13,F14の場合
[root@fedora ~]# cd /usr/src/redhat/SOURCES/ ← PostgreyのSRPM展開先ディレクトリへ移動※F9の場合

[root@fedora SOURCES]# tar zxvf postgrey-1.30.tar.gz ← Postgreyソース展開

[root@fedora SOURCES]# cd postgrey-1.30 ← Postgreyソース展開先ディレクトリへ移動

[root@fedora postgrey-1.30]# wget http://k2net.hakuba.jp/pub/targrey-0.31-postgrey-1.30.patch ← targreyパッチダウンロード

※最新版のURLはダウンロードページで確認すること

[root@fedora postgrey-1.30]# patch -p0 < targrey-0.31-postgrey-1.30.patch ← targreyパッチ施行
patching file postgrey

[root@fedora postgrey-1.30]# cd .. ← 上位ディレクトリへ移動

[root@fedora SOURCES]# rm -f postgrey-1.30.tar.gz && tar czvf postgrey-1.30.tar.gz postgrey-1.30 ← Postgreyソース再アーカイブ

[root@fedora SOURCES]# rm -rf postgrey-1.30 ← Postgreyソース展開先ディレクトリ削除

[root@fedora SOURCES]# cd ← ホームディレクトリへ戻る

[root@fedora ~]# rpmbuild -bb --clean rpmbuild/SPECS/postgrey.spec ← PostgreyのRPM作成※F10,F11,F12,F13,F14の場合
[root@fedora ~]# rpmbuild -bb --clean /usr/src/redhat/SPECS/postgrey.spec ← PostgreyのRPM作成※F9の場合
rpmbuildが「ビルド依存性の失敗」で異常終了した場合

[root@fedora ~]# yum -y install postgrey && rpm -e postgrey ← Postgrey依存パッケージインストール

[root@fedora ~]# rpm -ivh rpmbuild/RPMS/noarch/postgrey-1.31-1.fc10.noarch.rpm ← 作成したPostgreyのRPMインストール※F10,F11,F12,F13,F14の場合
[root@fedora ~]# rpm -ivh /usr/src/redhat/RPMS/noarch/postgrey-1.30-1.fc9.noarch.rpm ← 作成したPostgreyのRPMインストール※F9の場合
Preparing...                ########################################### [100%]
   1:postgrey               ########################################### [100%]

[root@fedora ~]# rm -f rpmbuild/RPMS/noarch/postgrey-* ← 作成したRPMを削除※F10,F11,F12,F13,F14の場合
[root@fedora ~]# rm -f /usr/src/redhat/RPMS/noarch/postgrey-* ← 作成したRPMを削除※F9の場合

[root@fedora ~]# rpmbuild --rmsource --rmspec rpmbuild/SPECS/postgrey.spec ← RPM作成後始末※F10,F11,F12,F13,F14の場合
[root@fedora ~]# rpmbuild --rmsource --rmspec /usr/src/redhat/SPECS/postgrey.spec ← RPM作成後始末※F9の場合

[root@fedora ~]# rm -f postgrey-1.30-1.fc8.src.rpm ← ダウンロードしたSRPMを削除

■Postfix設定

[root@fedora ~]# vi /etc/postfix/main.cf ← Postfix設定ファイル編集
smtpd_recipient_restrictions =
    permit_mynetworks
    permit_sasl_authenticated
    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

smtpd_data_restrictions =
    permit_mynetworks
    permit_sasl_authenticated
    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
−−追加(ここまで)−−

[root@fedora ~]# wget http://k2net.hakuba.jp/spam/postfix.conf.2.tar.gz ← taRgrey用Postfix設定ファイルダウンロード

[root@fedora ~]# tar zxvf postfix.conf.2.tar.gz ← taRgrey用Postfix設定ファイル展開

[root@fedora ~]# cp postfix.conf.2/whitelist_recipient /etc/postfix/ ← whitelist_recipientコピー

[root@fedora ~]# cp postfix.conf.2/whitelist_client /etc/postfix/ ← whitelist_clientコピー

[root@fedora ~]# cp postfix.conf.2/permit_client_nots25r /etc/postfix/ ← permit_client_nots25rコピー

[root@fedora ~]# rm -rf postfix.conf.2 ← taRgrey用Postfix設定ファイル展開先ディレクトリを削除

[root@fedora ~]# rm -f postfix.conf.2.tar.gz ← ダウンロードしたファイルを削除

[root@fedora ~]# postmap /etc/postfix/whitelist_recipient ← whitelist_recipientのDB化

[root@fedora ~]# postmap /etc/postfix/whitelist_client ← whitelist_clientのDB化

■Postgrey設定

[root@fedora ~]# vi /etc/rc.d/init.d/postgrey ← Postgrey起動スクリプト編集
OPTIONS="--unix=$SOCKET"
↓
OPTIONS="--dbdir=$DBPATH --inet=127.0.0.1:60000 --tarpit=125 --targrey --retry-count=2 --delay=3600"
 ← 起動オプションをtaRgreyモードにする※F9,F10の場合

options="--unix=/var/spool/postfix/postgrey/socket"
↓
options="--dbdir=/var/spool/postfix/postgrey --inet=127.0.0.1:60000 --tarpit=125 --targrey --retry-count=2 --delay=3600"
 ← 起動オプションをtaRgreyモードにする※F11,F12,F13,F14の場合

■Postgrey起動

[root@fedora ~]# /etc/rc.d/init.d/postgrey start ← Postgrey起動
Starting postgrey:                                         [  OK  ]

[root@fedora ~]# chkconfig postgrey on ← Postgrey自動起動設定

[root@fedora ~]# /etc/rc.d/init.d/postfix restart ← Postfix再起動(Postgrey連携有効化)
Shutting down postfix:                                     [  OK  ]
Starting postfix:                                          [  OK  ]

■taRgrey確認

[root@fedora ~]# grep postfix/smtpd /var/log/maillog|grep "NOQUEUE: warn" ← 遅延応答ログ
Apr 10 12:28:04 fedora postfix/smtpd[17343]: NOQUEUE: warn: RCPT from cpe-76-190-156-156.neo.res.rr.com[76.190.156.156]: ; from=<pop.netaddress.nettraybaryoran@nimation.nl> to=<billing@mydomain.com> proto=ESMTP helo=<cpe-76-190-156-156.neo.res.rr.com>

[root@fedora ~]# grep postfix/smtpd /var/log/maillog|grep "NOQUEUE: sleep" |grep pipelining ← 遅延を待たずにDATAを送ってきたログ
Apr 10 12:28:38 fedora postfix/smtpd[17343]: NOQUEUE: sleep: RCPT from cpe-76-190-156-156.neo.res.rr.com[76.190.156.156]: pipelining after 33 sec; from=<pop.netaddress.nettraybaryoran@nimation.nl> to=<billing@mydomain.com> proto=ESMTP helo=

[root@fedora ~]# grep postfix/smtpd /var/log/maillog|grep "NOQUEUE: sleep" |grep "lost connection" ← 遅延を待たずに切断したログ
Apr 10 12:30:34 fedora postfix/smtpd[17527]: NOQUEUE: sleep: RCPT from 24-176-106-174.dhcp.jcsn.tn.charter.com[24.176.106.174]: lost connection after 15 sec; from=<ocode1987@a2s.si> to=

■PostfixとPostgreyの自動アップデート無効化

yumにより自動アップデートされるとパッチがはがれてしまうため、PostfixとPostgreyをyumによる自動アップデート対象外にする。
yumによる自動アップデートを無効化するには参照

■logwatch設定

logwatchからのメールにPostfixパッチによる遅延応答ログが大量に出力されてしまわないようにする。
[root@fedora ~]# test -f /etc/logwatch/conf/ignore.conf && echo NOQUEUE >> /etc/logwatch/conf/ignore.conf


■関連コンテンツ




▲このページのトップへ戻る

プライバシーポリシー