[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]