[Date Prev][Date Next][Thread Prev][][Date Index][Thread Index]

Re: SPAMs are removed from archive



>> On Sat, 29 Jun 2002 01:57:21 +0900
>> ukai@debian.or.jp (Fumitoshi UKAI) said as follows:

>> DISTRIBUTE_FILTER_HOOK が呼び出される時点では,MailListMemberP 関数
>> はうまく動かないようです.

> $START_HOOK を使いましょう

これはどうやって使うフックなんだろう,としばらく悩みましたが,通常は
「$PERMIT_POST_FROM eq "anyone"」な状態にしておき,制限に引っ掛かるよ
うなメールに限って「$PERMIT_POST_FROM = "members_only"」することによっ
て,投稿制限を実現できました.現在の設定をメール末尾に示します.

この設定だと,制限に引っ掛かったメールは「NOT MEMBER article」で管理者
宛に届きます.単に捨ててしまうにはどうしたらいいか分からなかっただけな
のですが,完全に捨ててしまうと,白井さんのような例 [emacs-w3m:03579] 
で困るでしょうから,適当な妥協点かなと思っています.

;; 最近の RFC だと,Message-Id は必須へッダに変更されたんじゃなかった
;; かなあ,という気はするのですが.

ただ,どの制限に引っ掛かったのかという記録が残らないのが不便なのですが,
この点を改善するにはどうすれば良いでしょうか?

また,これらのエラーメールにはその原因となったメールが添付されてくるの
ですが,これを MIME の message/rfc844 形式で添付するように設定できない
ものでしょうか.現在は,

NOT MEMBER article from foo@bar

Original mail as follows:

   From owner-emacs-w3m@karin.namazu.org  Sun Jun 30 06:42:54 2002
   Return-Path: <owner-emacs-w3m@karin.namazu.org>
   Delivered-To: emacs-w3m@namazu.org

というように,空白でインデントされて直接書き込まれているので,元々のメー
ルを回復するのには,ちょっと手間が必要なんです.

;; 毎度のことですが,このメールは設定確認を兼ねています.

-- 
土屋 雅稔  ( TSUCHIYA Masatoshi )

$START_HOOK =q%
  unless( &MailListMemberP($From_address) ){
      my $list   = quotemeta($MAIL_LIST);
      my $mailer = join('|', map(quotemeta($_),
                                 qw/ CSM Caretop Cleansoft DiffondiCool
                                     HTMail QuickSender SpireMail
                                     Trade-Navigator deboio htmmx jpfree / ));
      my $domain = quotemeta($DOMAINNAME);
      if ( ($Envelope{'h:To:'} !~ /$list/i)
           && ($Envelope{'h:Cc:'} !~ /$list/i) ) {
          # Not addressed to mailing list.
          $PERMIT_POST_FROM = "members_only";
      } elsif ( $Envelope{'h:X-Mailer:'} =~ /^\s*$mailer\b/ ) {
          # Posted with spamming tool.
          $PERMIT_POST_FROM = "members_only";
      } elsif ( ($From_address !~ /[.\@]$domain$/)
                && ($Envelope{'h:message-id:'} =~ /[.\@]$domain>$/) ) {
          # From address conflicts its message-id.
          $PERMIT_POST_FROM = "members_only";
      }
  }
%;