Sorry, this page is japanese only. last updated at 2002/08/21
exefilter ver 2.0の説明
ver 2.1 2002/08/21 exefilter-2.1.tgz
自分の必要とする機能以外のデバッグが充分ではありません。
また、SAVEDIRの自動EXPIRE機能は付けるのをやめました。
crontabとfindで処理してください。
インストール等は、旧バージョンの説明を参照してください。
exefilter 起動オプション
exefilter [-vt] [-c <rulefile>] [-p <socketname>] [<file> ...]
-p <socketname>
milterモードで起動する。
指定されない場合は、ストリームフィルタモードになる。
-v 読みこんだルールを表示する。
-t ストリームモードで、REJECT/DROPをメールとして出力する。
-c <rulefile>
標準以外のルールファイルを指定する。
標準は、/etc/mail/exefilter.rul
<file> ストリームモードで、フィルタするファイル。
複数指定可。単独メール、または、unix mailbox形式のファイル
<file>の指定がない場合は、標準入力。
ルールファイルの説明
標準位置は、/etc/mail/exefilter.rul
以下の書式で、必要なだけルールを記述する。
なお、'#'から行末までは、コメントとなる。
1行が長くなる場合は、適当な区切りで改行し、次行はTABかスペースで始めること。
普通の添付ファイル用の記述と、単独ファイルのメール用の記述を区別しなければならない。
[- ]extension[,exension][?rule[&rule]]:action[,action]
extension:
フィルタする拡張子。'.'は、有っても無くてもかまわない。
複数指定可。
'*'は、全ての添付ファイルを対象とする。
単独ファイルのメール用のルールは、行頭を"- "で始める。
action: OK, REJECT, DROP, DELETE, RENAME, MSG <string>, SAVE
ルールにマッチした場合の動作。
OK: 該当添付ファイルは、そのまま通す。
REJECT: メールの受信を拒否する。送信者にエラーが返る。
DROP: メールを捨てる。送信者、受信者ともになにも来ない。
DELETE: 該当添付ファイルを削除する。
RENAME: 該当添付ファイルの拡張子を'.'から、'_'に置きかえる。
例: .exe -> _exe
MSG <string>:
メールの本文テキストにメッセージを追加する。
SAVE: オリジナルメールをシステムに保存する。(注)
単独ファイルのメールに対しては、RENAME,DELETE,MSGは使用できない
rule: [!]header:<string>
headerは、通常のメールヘッダーを記述する。
指定ヘッダーに、<string>が含まれている場合にactionを適用する。
<string>のチェックは、英字大小を区別しない。
最初の文字が'!'の場合は、含まれていない場合にactionを適用する。
stringとして、<>を指定した場合は、対象ヘッダーが、"<>"であるか、
空、もしくは、対象ヘッダーそのものがない場合を示す。
特殊なルールとして、
$envelope-from エンベロープ送信者
$envelope-to エンベロープ受信者
$texttype メール本文のContent-Type
$texttype:iso-2022-jpでJISでMSGが書けるか
チェックできる。
$preext .doc.exe のような二重拡張子のチェック
docの部分を','で区切って記述する。
$content-type 該当添付ファイルのに対応する Content-Type
audio/x-wav; 等でexeを添付しているメールを処理できる
フィルターオプション
その他、ルールファイルには、オプションも記述する。
SAVEDIR = <savedir>
セーブディレクトリを指定する。
SAVEを使う場合は必ず指定すること。
milterの場合は、通常、root.daemonで書きこまれる。
ID_STR = <string>
exefilterがメールの内容を変更した場合に追加するヘッダーに、
指定の文字列を付け加える。
X-Mail-Filter: filterd by exefilter-2.x;\n\t<string>
といったヘッダーが追加される。
フィルタのポリシーを記述したWEBページのURL等を書いておくと
良いと思う。
SAVEEXPIRE = <hours>
未搭載)SAVEメールの保存期間(時間)
crontabとfindで処理してください。
文字列の扱い
スペースを含む文字列を指定する場合は、""で括る。
ただし、スペースを含む拡張子はシステムとして認識できない。
MSG の文字列のみ、改行を含むことができる。
MSGの文字列中で、改行し、次行をTABで始める。
次行の行頭のTABは(全て)取り除かれてメールに付け加えられる。
なお、文字列中に、'"'を含めたい場合は、""と2つ書くことで、
一つの"に置き換えられる。
注)JISコードを記述するときのために、"""も一つの"に置き換えます。
ルールでエラーが出た部分に'□'を追加することでJISとして問題のない
文字列で記述できます。
真に'□'が必要な場合は、□□□と三つ並べなければいけません。
添付ファイルごとに記述順にルールを評価し、最初にマッチしたactionを行います。
exe : REJECT
exe ? from:myname : OK
といった場合、先に一つ目のルールでREJECTしてしまうため、二つ目のルールは
意味がありません。
$envelope-from:<> なメールは、拒否してはいけません。
"User unknown"等のエラーメールは、通常 $envelope-from:<> です。
$envelope-to: To: Cc: には複数のアドレスが含まれている場合があるので、注意
特に、$envelope-to:でルールを指定した場合に他の人宛てのメールにもルールが適用
される場合があります。
(注)SAVEは、その時点の状態のメールを保存します。
複数の添付ファイルがあり、一つ目をDELETEし、二つ目でSAVEが指定された
場合は、一つ目の添付ファイルがDELETEされた状態でSAVEされます。
確実にオリジナルファイルを保存するためには、すべてのDELETEとRENAMEの
ルールに、SAVEを付けて下さい。
ルールファイルの記述例
注)例です。実用的なものばかりではありません。
------------------------------------------------------------
# general option
SAVEDIR = /var/backup/mail/
ID_STR = "see http://www.mydomain/mail-policy.html"
# 単独のファイルのみのメール用のルール
# REJECT,DROP,OK と SAVE のみ可
- exe, bat, lnk, pif, scr, vbs, vbe, shs
? $preext:doc,xls,txt,zip,avi,asf,wmv,wma,mov,qt,mpg,mpeg,mp3,ra,ram
: DROP #二重拡張子のファイルは捨てる。
- exe, com, bat, lnk, pif, scr,
vbs, vbe, shs
: REJECT # 単独の危ないファイルは拒否
# multipartもしくは、本文にuuencodeで添付してあるメール用ルール
* ? from:<> : DROP # 誰から来たのか名乗らない添付付きメールは捨てる
# 注)$envelope-from は使わない。
# $envelope-to, To: Cc: には複数のアドレスが含まれている場合があるので、注意
* ? $envelope-to:myname@mydomain : OK # 自分宛てのもの(domain付き)は全て受け取る
* ? !$envelope-to:@ & $envelope-to:myname : OK # 自分宛てのもの(domainなし)は全て受け取る
exe, bat, lnk, pif, com, scr, vbs, vbe, shs
? $preext:doc,xls,txt,zip,avi,asf,wmv,wma,mov,qt,mpg,mpeg,mp3,ra,ram
: DROP #二重拡張子の添付つきメールは捨てる
bat, lnk, pif, com, scr,
vbs, vbe, shs : DELETE #一般的でない危ないファイルは削除
exe ? $envelope-from:<> & $content-type:audio/ : DELETE # <>からの偽装exeは削除
exe ? $envelope-from:<> & $content-type:video/ : DELETE # <>からの偽装exeは削除
exe ? $content-type:audio/ : REJECT # 偽装exeは拒否
exe ? $content-type:video/ : REJECT # 偽装exeは拒否
exe ? x-mailer:<> : DELETE # メーラー不明なexeは、削除
exe ? !x-mailer:"Becky!" : RENAME # Becky以外からの添付ファイルは拡張子をつぶす
# Beckyで、自ドメイン内のexeは、許可する。
exe ? x-mailer:"Becky!" & from: @mydomain & to:@mydomain : OK
exe ? !from:<> : RENAME, SAVE # From:があるexeは、拡張子を変え、元を保存
# Outlook, OutlookExpressからのexeは、名前を変え、説明を追加
exe ? x-mailer:outlook : RENAME,
MSG "メールフィルタが添付ファイルのファイル名を変えました。
保存するときに、_exeを.exeにしてください。
添付ファイルを開く前に必ずウィルスチェックすること"
# 本文が日本語の場合は、日本語でウィルスチェックを促す
lzh, zip, cab, rar, doc, xls ? $texttype:iso-2022-jp
: MSG "添付ファイルを開く前に必ずウィルスチェックすること"
# 本文が日本語以外の場合は、英語でウィルスチェックを促す
lzh, zip, cab, rar, doc, xls
: MSG "Please virus check before you use attached file."
テスト運用
ストリーム型のフィルタリングを行えますので、Ver1.xより簡単にテストできるようになりした。
1.portsでmilter対応のsendmailをインストールします。
sendmail.cf, mailer.conf等は、変更しなくてOKです。(標準のsendmailが使われます)
2.exefilterをコンパイルします。
3.お好みのルールを作成し、/etc/mail/exefilter.rulに置きます。
4.テストの結果を受け取るためのアカウントを一つ作成します。
ここでは、testとします。
5.ウィルス等が良く来るアカウントに.forwardを作成し、exefilterを通してtestに転送します。
ここでは、mynameとします。
mynameの.forwardの記述
\myname
"|/usr/local/libexec/exefilter -t | /usr/sbin/sendmail -ftest test"
SAVEを使う場合は、SAVEDIRは、myname権限で書きこみ出来ないといけません。
注)外からメールを受ける前に、自分で充分テストすること。
exefilterそのものに問題がある場合は、送信者に迷惑をかける場合があります。
また、該当ユーザーでexefilterを普通に起動して、ルールファイルのチェックをしてください。
6.mynameに色々とまずそうなメールを送ります。
testのメールにフィルタリングの結果が残ります。
本来REJECT/DROPされるメールは、本文がREJECT/DROPしたこと示すメールとして残ります。
注)$envelope-from、$envelope-toの扱いに注意
$envelope-fromはFrom:、$envelope-toはTo:と同じになると思います。
7.充分なテストでOKならば、sendamil.cfを書き換え、exefilterをmilterモードで運用します。
なお、適当なmailboxを持ってきて、exefilterに食わせてもテストできます。
例)./exefilter -t -c test.rul test.mbox > result.mbox
お薦めしないこと
MSG機能は、メール本文を改変します。
alternativeなメールでは、textとhtmlの両方を改変します。
特にhtmlの場合は、解析(</bodyを探すだけですが)できなかった場合は、MSGの追加をしません。
必要以上に注意を促すと、注意を無視するのが人の常です。
MSGを使わずにすむ方法(ユーザーの啓蒙)を先に考えましょう。
ご意見、ご感想、改善案などは、hagi@nandemo.gr.jpまで
Copyright (c) 2001 Hagihara, Takayuki