Top | GeoIP

sendmailのmilterでGeoIPを利用する方法

突っ込み・指摘助言などがありましたら 掲示板までお願いします。

概要

GeoIPを利用してメールの送信元の国名を特定し、spamの判別に利用します。 「うちのドメイン/メールサーバには外国からメールなんてこないよ」という人なら非常に有効です。

検索しても sendmail + Milter + GeoIP という組み合わせのものを見付けることができなかったので、自分で作ってみました。


必要なもの

今回は、sendmailのMilterで利用するフィルタをperlで記述、perlからGeoIPを参照、という方法を採りますので、以下のものが必要です。 これに加えて、当サイトで配布している以下のファイルを使用します。 他のMTA(qmail, postfix, exim等)でMilterのフィルタが利用できるかどうかは分かりません。

インストール

  1. ファイルを所定のディレクトリにコピーし、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と同じオーナ/グループで動作するように適当なものを作成してください。
  2. 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の方に追加してください。
  3. 上記の設定の場合、/var/spool/milter-geoipにソケットファイルsockを作成しますので、ディレクトリ/var/spool/milter-geoipを作成し、オーナ/グループをsendmailの動作ユーザにしてください。(Debianの場合はmail:mail)
  4. 起動スクリプトを実行し、以下を確認してください。
    1. /var/log/mail.log等メール用のログファイルに以下のような出力が出ていること。
      Oct 15 14:34:44 SERVER milter-geoip[14696]: read config_file /usr/local/etc/milter-geoip.conf : black country (以下略)
      
    2. psコマンドでmilter-geoip.plが起動していること。
    3. /var/spool/milter-geoip/sockというソケットファイルが出来ていること。
  5. /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)