qmail filter


What's this?

Instead of delivering message directly from dot-qmail, send it via qmfilter via. The qmfilter program scans the message by calling checker programs. If checker programs detect some pattern, qmfilter notifies you the arrival of suspicious message and refrains from sending message to the real recipient, and put suspicious message in the repository. Of course qmfilter send the message to you if no suspicious patterns found in it. Messages in the repository are saved at least 7 days.

dot-qmail ファイルから直接自分宛にメッセージを送る代わりに qmfilter を噛ましてから送ろう。qmfilter は、あらかじめ指定したチェックプログラム を使ってメッセージを検査し、怪しいパターンがあったらちみにはメッセージを 送らずに、倉庫にしまってなんか怪しいのが来たことだけ伝える。怪しいパター ンが無ければちみに送る。倉庫にしまったメッセージは最低7日間は保存される。

How to install

Extract archive qmfilter-*.**.tar.gz into some directory. You'll got qmfilter-*.** directory. Move and rename that direcotory to some static name; ~/Mail/qmfilter for example. Register your main mail address.

% cd ~/Mail/qmfilter
% echo owner=george@hogehoge.domain > .qmfilterrc

qmfilter-*.tar.gz を展開し、出てきたディレクトリを ~/Mail/qmfilter にリネームする。そしたら↑みたいにして、自分のメイルアドレスをインストー ルしたディレクトリの.qmfilterrc ファイルにかきこむ。 owner=メイルアドレスってな感じ。

How to setup an address

Suppose your mail address is controled by the dot-qmail file ~/.qmail and the contents of that file is as follows.


First, add the suffix "-real" (or other suffix you prefer) to the dot-qmail file.

% mv .qmail .qmail-real

Put the line to invoke qmfilter with real recipient address in ~/.qmail

| ./Mail/qmfilter/qmfilter user-real

本来のメイルを受け取る dot-qmail ファイルをリネームして、後ろに -real とかをつける(-realじゃなくてもいい)。

% cd
% mv .qmail .qmail-real

元の dot-qmail ファイルには、qmfilter を呼び出すコマンドを書く。 qmfilterの引数には、-real のほうのアドレスを書く。

% echo "| ./Mail/qmfilter/qmfilter user-real" > .qmail

こうすることで、qmfilterによるチェックに合格したものだけが user-real に配送される。

How to configure

By default, qmfilter supplies pattern check for most likely annoying messages such as `multipart/alternative' of Klezes. You can add any check program to ./checkers/ directory. If you make a checker program ./checkers/html, that is called with one argument points to mesage file.

checkers/html $msgfile

checkers/html program should inspect the contents of $msgfile and exit non-zero if the file contains annoying pattern, and exit 0 if not. Below is the sample script to check if the file is `text/html' message. Do not forget to chmod +x to the script.


sed '/^$/q' "$1" | egrep -i '^Content-type: +text/html' && exit 1
exit 0

デフォルトでは qmfilter は、本格的なチェックはしない。というより、イ ンストールディレクトリにあるcheckers/ ディレクトリにチェッ クプログラムをユーザ自身がインストールして使うようになっている。

たとえば「text/html なメイルは全部イラン!」と思ったら、


sed '/^$/q' "$1" | egrep -i '^Content-type: +text/html' && exit 1
exit 0

みたいなファイルを作って checkers/html とかに保存して chmod +x しておく。何個作っても良い。このスクリプトのどれかが 0以外の値で exit したらそのメイルはゴミ箱行き、全部のスクリプトが exit 0 したら user-real さん宛に配送する。


These variables in ~/.qmfilterrc (or ./.qmfilterrc) control the behaviour of qmfilter.

instant If set, send a filtering report mail instantly at each arrival of SPAM(?) mail. (eg. instant=yes) By default, qmfilter sends you the arrival of SPAM(?) once at a day. For this reason, you must have a permission to use "at" command.

~/.qmfilterrc の中で以下の変数をセットすることにより qmfilterの動作を変えることが出来る。

instant この変数をセットするとSPAMらしきめいるの到着と同時に その知らせをownerに送るようになる(例.instant=yes)。 デフォルトでは、1日に1度まとめて送る。なのでatコマンドの使用権が必要。

Fingerprint16 = FF F9 FF CC E0 FE 5C F7 19 97 28 24 EC 5D 39 BA