フィルタリング2 内容により一部削除したり警告したりする方法

1回だけ投稿を許す(主に応募・申請用途) 
HTMLメールはstripして、添付ファイルがあるものは投稿を拒否
USE_ENVELOPE_FILTER で、警告を与えるだけで投稿は許して良い
BADTRANS 対策(送信者に警告)


●1回だけ投稿を許す(主に応募・申請用途)
【fml-help:01009】

$SENDER_LIST = "$DIR/senders";  # 多重投稿チェック用のアドレスリスト
$START_HOOK = q#
  my $ORG_REJECT_ADDR_LIST = $REJECT_ADDR_LIST;
  $REJECT_ADDR_LIST = $SENDER_LIST;
  if (&RejectAddrP($From_address) || &RejectAddrP($UnixFrom)){
    <必要ならログに書いたり、メールを送ったりする処理を書く>
    $DO_NOTHING = 1;
  }else{
    &Append2($From_address, $REJECT_ADDR_LIST);
    &Append2($UnixFrom, $REJECT_ADDR_LIST)
      if $From_address ne $UnixFrom;
  }
  $REJECT_ADDR_LIST = $ORG_REJECT_ADDR_LIST;
#;


●HTMLメールはstripして、添付ファイルがあるものは投稿を拒否
【fml-support:09089】

&ADD_CONTENT_HANDLER('multipart/.*', 'text/html', 'strip');
#
$USE_DISTRIBUTE_FILTER = 1;
$DISTRIBUTE_FILTER_HOOK .=q#
if($e{'Body'} =~ /Content-Disposition:\s*attachment/i) {
      return 'THIS ML NOT PERMIT ATTACHMENT';
   }
#;


●USE_ENVELOPE_FILTER で、警告を与えるだけで投稿は許して良い
【fml-support:08774】

$USE_DISTRIBUTE_FILTER = 1;
$START_HOOK = q#
   if ($USE_DISTRIBUTE_FILTER) {
        &EnvelopeFilter(*e, 'distribute');
        undef $DO_NOTHING;
    }
#;
#Description: EnvelopeFilter() の結果だけは利用するけど:-)
#             $DO_NOTHING をリセットしてしまえばひっかかってもひかからなくても
#             この後普通のMLプロセスになるから


●BADTRANS 対策(送信者に警告)
【fml-help:01300】

#管理者への通知もこれになってしまいますが
$USE_DISTRIBUTE_FILTER = 1;
$FILTER_NOTIFY_REJECTION = 1;
$DISTRIBUTE_FILTER_HOOK .= q#
  my($extension) = 
'lnk|hta|com|pif|vbs|vbe|js|jse|exe|bat|cmd|vxd|scr|shm|dll';
  my($message) = "Your mail seems to be infected by a VIRUS!" ;
  if ($e{'Body'} =~ /(filename|name)=.*\..{3}\.($extension)/i) {
    &DEFINE_FIELD_OF_REPORT_MAIL('Subject','VIRUS detected!') ;
    &DEFINE_FIELD_OF_REPORT_MAIL('From',$ML_FN) ;
    $Envelope{'Addr2Reply:'} =~ s/^_//;
    return $message ;
  }
#;