本ツールは、迷惑メール判定プログラムをはじめとして、それを応用したアンチ後方散乱コンテンツフィルタ、アドレスレンジデータベースマネージャーなど、メール利用者やメールサーバ管理者のためのさまざまな迷惑メール対策プログラムです。
1.1.9 より GNU AGPLv3(Affero General Public License Version 3) に基づき配布しています。
2009/10/17 より Git バージョン管理システムによる配布を開始しています。
(2009/11/19) 1.2.0 から特に更新された点は以下の通りです。
(2008/08/01) 1.1.9 から特に更新された点は以下の通りです。
(2008/03/21) 1.1.8 から特に更新された点は以下の通りです。
(2007/11/15) 1.1.7 から特に更新された点は以下の通りです。
(2007/07/06) 1.1.6 から特に更新された点は以下の通りです。
(2007/06/12) 1.1.5 から特に更新された点は以下の通りです。
(以下の例では、自組織のドメイン名を example.com、アドレス空間を 10.20.0.0/16 とします)
ビルドにはlibpcre(Perl互換正規表現ライブラリ)が必須です。また、CFLAGS等でDISABLE_PTHREADを定義しない限りlibpthreadが必要です。まず、tarballを展開し、そのディレクトリに入り、
$ make PREFIX=/opt/local CFLAGS='-DMYNETWORK=\"10.20.0.0\" -DMYNETMASK=\"16\" -DMYDOMAIN=\"example.com\"'とします。また、tools/abmess等、他のツールもビルドしたい場合は、
$ cd tools $ make PREFIX=/opt/local MYDOMAIN="example.com"とします。但し、abmailcのビルドにはlibiconv(文字セット変換ライブラリ)が必須です。さらに、abaddrd/abaddrcもビルドしたい場合には、
$ cd libexec $ make PREFIX=/opt/local CFLAGS='-DMYNETWORK=\"10.20.0.0\" -DMYNETMASK=\"16\" -DMYDOMAIN=\"example.com\"'とします。abaddrd/abaddrcのビルドにはTokyo Cabinet データベースライブラリが必須です。
適宜 root になるなどして、
# make PREFIX=/opt/local installとします。また、tools/abmess等、他のツールもインストールしたい場合は、
# cd tools # make PREFIX=/opt/local MYDOMAIN="example.com" installとします。さらに、abaddrd/abaddrcもインストールしたい場合は、
# cd libexec # make PREFIX=/opt/local installとします。
以下はインストールされるファイルリストです。
/opt/local/bin/abmail /opt/local/bin/abmail-cat /opt/local/bin/abmail-echo /opt/local/bin/abmail-mv /opt/local/bin/abmail-rescue /opt/local/bin/abmailc /opt/local/bin/abmailcat /opt/local/bin/abmailecho /opt/local/bin/abmailmv /opt/local/bin/abmailrescue /opt/local/bin/abmails-cat /opt/local/bin/abmails-cats /opt/local/bin/abmails-echo /opt/local/bin/abmails-echos /opt/local/bin/abmails-rescue /opt/local/bin/abmails-rescues /opt/local/etc/abmail/ams_reliable.lst /opt/local/etc/abmail/ams_unreliable.lst /opt/local/etc/abmail/ras_reliable.lst /opt/local/etc/abmail/rfs_reliable.lst /opt/local/etc/abmail/rhs_unreliable.lst /opt/local/etc/abmail/rns_reliable.lst /opt/local/etc/abmail/rns_unreliable.lst /opt/local/etc/abmail/rss_reliable.lst
以下は tools にてインストールされるファイルリストです。
/opt/local/bin/abaddr /opt/local/bin/abcidr /opt/local/bin/abmailc /opt/local/bin/abmailsreport /opt/local/bin/abmailsreports /opt/local/bin/abmailsview /opt/local/bin/abmailsviews /opt/local/bin/abmess
以下は libexec にてインストールされるファイルリストです。
/opt/local/bin/abmail /opt/local/bin/abaddrc /opt/local/sbin/abaddrd /opt/local/include/abaddri.h /opt/local/lib/libabaddr.a /opt/local/var/abmail/abaddr.bdb /opt/local/var/abmail/ams_reliable.lst.out.default /opt/local/var/abmail/ams_trusted.lst.out.default /opt/local/var/abmail/ams_unreliable.lst.out.default
(以下、1.1.5 と特に変更点はありません)
まず、rhs_unreliable.lst にて、自組織に関係の無いものはコメントアウトして、自組織に関するものを適宜追記して下さい。以下はそれを diff -u 形式で表しています。
-210\.154\.62\.(?:6[4-9]|7[0-1]) -.*aihara\.co\.jp +10\.20(?:\.\d+){2} +.*example\.com +#210\.154\.62\.(?:6[4-9]|7[0-1]) +#.*aihara\.co\.jp
次に必要に応じて、rfs_reliable.lst に組織内のローカル配送と見なすReceive:行のパターンを正規表現で適宜追記して下さい。
# # via MTAs at example.com from \S*\s*\(\s*\S*\s*\[10\.20(?:\.\d+){2}\]\)(?:\s*.*)* from \S*\s*\(\s*\S*\s*\[(?:127(?:\.\d+){3}|10(?:\.\d+){3}|172\.(?:1[6-9]|2[0-9]|3[0-1])(?:\.\d+){2}|192\.168(?:\.\d+){2})\]\)\s*by .*example\.com(?:\s*.*)*
さらに必要に応じて、rss_reliable.lst に逆引き不能の場合に明示的にunknownとしたり、逆引きを行なわないMTAに対してそれを補完するパターンを正規表現と代替文字列で適宜追記して下さい。
# # for MTAs at example.com from (\S*)\s*\(\s*\[(.*)\]\)(\s*by\s*mailta\.example\.com(?:\s*.*)*) from \1 (unknown [\2])\3 from (\S*)\s*\(\s*\[(.*)\]\)(\s*by\s*mailgw\.example\.com(?:\s*.*)*) from \1 (`host \2` [\2])\3
シンプルでない経路で運用されている組織の MTA や経路上に必要な情報を付加しない MTA が存在する組織では、このような設定を行なう必要があります。abmail はそういった MTA に到達するメールの経路をきちんと把握する必要があり、これらの設定が不適切だと正しくスパム判定が行なえません。具体的なメールに対してabmessをmoreのように用いると、注目すべき信頼できる終端のReceived:行が出力されるので、適切に設定されているかどうかを確認する事ができます。rfs_reliable.lst, rss_reliable.lst での記述方法を応用すると、例えば組織外のメーリングリスト経由等から配送されるメールにおいてスパム判定ができたり、多地点の意図した転送元から配送されるメールを一箇所の MTA でスパム判定ができるようになります。
加えて、ras_reliable.lst に組織外のIPアドレス空間から組織内のMTAを用いてメールを送る際に用いられるSMTP AUTH等のReceive:行に記されるパターンを適宜追記して下さい。
すべての *.lst のフィールドセパレータはタブ以外許可されてませんので注意して下さい。
例えば procmail で abmail を個人で運用する場合の、~/.procmailrc の例です。コロンのみの行は、適当に省略している事を表しています。
: # # variables for antispam # :0 * SW_ANTISPAM ?? ^^^^ { SW_ANTISPAM=on SW_ANTISPAM_ADD_HEADER=off # # spam report # :0 * !SW_ANTISPAM_ADD_HEADER ?? on { SW_SPAMREPORT=on } } # # antispam # :0 * SW_ANTISPAM ?? on { ANTISPAMDIR=spam-`date +%Y%m%d` :0 HB * ? /opt/local/bin/abmail -b -g -d -v -vvv; test "$?" = "1" { LOG='(antispam)' :0 * !SW_ANTISPAM_ADD_HEADER ?? on ${ANTISPAMDIR}/. :0 Efw | formail -i "X-Abmail-Flag: Yes" } } # # spam report # :0 * SW_SPAMREPORT ?? on { SPAMREPORT_SUBJECT="\[abmails report for $LOGNAME\]" :0 *$ ^Subject: Re: ${SPAMREPORT_SUBJECT} { :0 H *$ ^From $LOGNAME * ? /opt/local/bin/abmailsreport -Q; test "$?" = "0" { LOG='(reply abmails report)' :0 HBc | /opt/local/bin/abmailsreport -r } } } :
この例では SW_ANTISPAM_ADD_HEADER が off なので、~/Mail/spam-20070515/ のような隔離フォルダにスパム判定されたメールが振り分けられます。SW_ANTISPAM_ADD_HEADER を on にすれば、スパム判定されたメールに X-Abmail-Flag: Yes というヘッダが付加されます。
また、cron 等で abmailsreports を運用している場合、かつ、SW_ANTISPAM_ADD_HEADER が off の場合に、隔離スパム報告及び救済用ツールにて、ユーザ要求による隔離されたメールの再送が安全に行なえます。
その他の運用例については、ケーススタディが参考になると思います。
株式会社あいはら ではこの迷惑メール対策ツールの導入支援として、「+abmail」迷惑メール対策サービスを提供しています。詳しくはこちらのサイトを御覧下さい。