Top |
GeoIP
sendmailのmilterでGeoIPを利用する方法
突っ込み・指摘助言などがありましたら
掲示板までお願いします。
概要
GeoIPを利用してメールの送信元の国名を特定し、spamの判別に利用します。
「うちのドメイン/メールサーバには外国からメールなんてこないよ」という人なら非常に有効です。
検索しても sendmail + Milter + GeoIP という組み合わせのものを見付けることができなかったので、自分で作ってみました。
必要なもの
今回は、sendmailのMilterで利用するフィルタをperlで記述、perlからGeoIPを参照、という方法を採りますので、以下のものが必要です。
- sendmail
- perl
- perlのモジュール
- Sendmail::Milter (Debianのパッケージ名は libsendmail-milter-perl)
Sendmail::Milterを利用するとMilterとのインターフェースを全部ライブラリに任せられますので、とても簡単にフィルタを作成することができます。
- Geo::IP (Debianにはパッケージはありません)
これに加えて、当サイトで配布している以下のファイルを使用します。
- milter-geoip.pl (フィルタ本体)
- milter-geoip.conf (設定ファイル)
- milter-geoip (Debian用起動スクリプト)
他のMTA(qmail, postfix, exim等)でMilterのフィルタが利用できるかどうかは分かりません。
インストール
- ファイルを所定のディレクトリにコピーし、milter-geoip.plとmilter-geoipには実行属性を与えます(chmod +x)。
- milter-geoip.pl
- /usr/local/sbin
- milter-geoip.conf
- /usr/local/etc
- 起動スクリプト(milter-geoip)
- /etc/init.d
ここで配布している起動スクリプトはDebian用です。
他のOS/ディストリビューションの場合は、milter-geoip.plがsendmailと同じオーナ/グループで動作するように適当なものを作成してください。
- sendmail.mcに以下のように記述し、sendmail.cfを作成します。
INPUT_MAIL_FILTER(`milter-geoip', `S=unix:/var/spool/milter-geoip/sock, T=S:30s;R:2m')
define(`confINPUT_MAIL_FILTERS', `milter-geoip')
他のMilterフィルタを使っている場合は
define(`confINPUT_MAIL_FILTERS', `milter-regex, milter-geoip')
のようにconfINPUT_MAIL_FILTERSの方に追加してください。
- 上記の設定の場合、/var/spool/milter-geoipにソケットファイルsockを作成しますので、ディレクトリ/var/spool/milter-geoipを作成し、オーナ/グループをsendmailの動作ユーザにしてください。(Debianの場合はmail:mail)
- 起動スクリプトを実行し、以下を確認してください。
- /var/log/mail.log等メール用のログファイルに以下のような出力が出ていること。
Oct 15 14:34:44 SERVER milter-geoip[14696]: read config_file /usr/local/etc/milter-geoip.conf : black country (以下略)
- psコマンドでmilter-geoip.plが起動していること。
- /var/spool/milter-geoip/sockというソケットファイルが出来ていること。
- /etc/rc*.d に起動スクリプトを登録します。
- Debianの場合
- update-rc.d milter-geoip defaults 19
- Red Hat 系の場合
- chkconfig ???
設定
設定ファイル milter-geoip.conf には、国コードを列挙します。
- 空行、「#」から始まる行、行の「#」以降は無視されます。
- 複数行に渡って記述できます。
- 国コード以外が記述されている場合エラーになります。
例:
# configuration file of milter-geoip.pl
# spamの一大産地
CN RU KR TW HK
# あとは好みで追加してください
IN # India
TR # Turkey
著作権とか
著作権は主張します。
Copyright 2006, HIRAMOTO Kouji. All Rights Reserved.
再配布、組み込み、流用などは自由に行っていただいて構いませんし、特に連絡もいりません。
(でも連絡をいただけると多分喜びます :-)
しかし、丸々パクって自分の著作であると主張したりというような
恥ずかしい行為だけはご遠慮ください。
制限事項
このプログラム自体は、実効ユーザの変更・デーモンプロセスとしての動作・PIDファイルの作成などは一切行っていません。
その辺りは Debian の起動スクリプトで使用されている start-stop-daemon の機能でごまかしています。
ダウンロード
変更履歴
milter-geoip_1.0.tar.gz (2006/11/10)
hiramoto@flatray.com (平本 光二/HIRAMOTO Kouji)