[PREVIOUS CHAPTER] [NEXT CHAPTER]
5 ContentHandler

5.1	フィルタルールの事例

multipart の各ブロックに対し処理を行なうので、良く考えないと
期待と違う動作をします。

◯ text/plain と text/html からなるメールの html 部分を落す

  &ADD_CONTENT_HANDLER('multipart/.*', 'text/html', 'strip+notice');


◯ 普通のテキストメール はOK
	text/plain + text/html は html 部分を叩き落す
	text/plain + text/html + それ以外(謎の添付ファイル) は
	最初の text/plain 以外は落す。

  &ADD_CONTENT_HANDLER('multipart/.*', 'text/plain', 'allow');
  &ADD_CONTENT_HANDLER('multipart/.*', 'text/html', 'strip+notice');
  &ADD_CONTENT_HANDLER('multipart/.*', '.*/.*', 'strip');


5.2	解説 by the original author 

Author: t-nakano@marimo.org

# [Example]
# add them at the last of config.ph (but before the last "1;").
#

&ADD_CONTENT_HANDLER('multipart/.*', 'text/plain',   'allow');
&ADD_CONTENT_HANDLER('multipart/.*', '.*/.*',        'reject');
&ADD_CONTENT_HANDLER('text/plain',   '.*/.*',        'allow');
&ADD_CONTENT_HANDLER('!MIME',        '.*/.*',        'allow');


&ADD_CONTENT_HANDLER(type, subtype, action);
	type		メール全体のMIMEタイプ
	subtype		multipartの時のそれぞれのブロックのタイプ
	action		マッチした時に起こすべきアクション

例
  &ADD_CONTENT_HANDLER('multipart/.*', 'text/plain',   'allow');
  MIME multipartのメールがきたら text/plain の部分だけを通す

  &ADD_CONTENT_HANDLER('multipart/.*', '.*/.*',        'reject');
  MIME multipartのメールがきたらすべて拒否


'/' で区切って perl の正規表現で表記できます。
!MIME は MIME 以外(その他)です。

各パート毎にその動作を指定できます。動作は、

allow			配信許可

	allow はそのエンティティの multipart を分解してしまいます。
	つまり allow にすると multipart でないメールになります。

allow+multipart		許可し、multipart のエンティティは multipart
			のまま残す

	allowと異なりこの場合はmultipart はそのまま通します。

strip			該当パートは削除

	つまり一部分切り落として配送されます

strip+notice		該当エンティティは切り落とし投稿者に返される

	1. 一部分切り落として配送される (stripと同じ)
	2. 投稿者に切り落としたと知らせる

reject			このパートがあればメール配信拒否

	つまり、一箇所でもマッチする場所があればメール全体を拒否

が選択できます。


[PREVIOUS CHAPTER] [NEXT CHAPTER]