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