postfix + geoip で国別ドメインスパム制御(Debian Etch)
元ネタはここからGeoIP面白そうということで
http://blog.browncat.org/2007/07/postfixgeoippolicy.html
GeoIP関連はaptでいれる。他はsrcより
apt-get update
apt-get install geoip-bin libgeoip-dev libgeoip1wget http://www.maxmind.com/download/geoip/api/perl/Geo-IP-1.27.tar.gz
wget http://www.maxmind.com/download/geoip/api/perl/Geo-IP-1.28.tar.gz
wget http://www.maxmind.com/download/geoip/api/pureperl/Geo-IP-PurePerl-1.18.tar.gz
wget http://blog.browncat.org/files/geoip-policyd-0.01.tar.gztar zxf Geo-IP-1.27.tar.gz
cd Geo-IP-1.27
perl Makefile.pl
make
make test
make install
cd ..
tar zxf Geo-IP-PurePerl-1.18.tar.gz
cd Geo-IP-PurePerl-1.18
perl Makefile.pl
make
make test
make install
cd ..
tar zxf geoip-policyd-0.01.tar.gz
cd geoip-policyd-0.01
cp geoip-policyd /usr/local/sbin/
cp geoip-policyd.conf /usr/local/etc/
etchの環境ではGeo-IP-1.28.tar.gzではmake testが通らなかったので1.27で
制御したい国はこんな感じ
cat /usr/local/etc/geoip-policyd.conf
deny: CN KR RU BR AR TH TW PR PH FR DE IT
postfixの設定変更
vi /etc/postfix/master.cf
追加
policy unix - n n - 0 spawn
user=nobody argv=/usr/local/sbin/geoip-policydvi /etc/postfix/main.cf
smtpd_client_restrictionsに追加
check_policy_service unix:private/policy,
permitの後に
policy_time_limit=3600
追加
GeoIPデータベース更新
http://flatray.com/geoip/
上記の「GeoIPデータベースの更新」をそのまま使わせてもらう
そのままだとデータが多少古いのでついでにshellscriptを実行して最新のdatに
ログ確認
grep geoip /var/log/mail.log
Oct 4 21:00:00 example /usr/local/sbin/geoip-policyd[16720]: address:xxx.xxx.xxx.xxx country:JP result:DUNNO
通った場合
Oct 4 21:00:00 example /usr/local/sbin/geoip-policyd[16720]: address:xxx.xxx.xxx.xxx country:TW result:REJECT
弾いた場合
メンテナンスが楽なのがいいですね
#policy serverが使えるのはpostfix 2.1以降