フィルタリング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 ;
}
#;