|
|||||||||||||||||||||||||||
On Mon, 23 Oct 2000, Michael wrote:
> From: "Hanne Munkholm" <sslug@sslug>
>
> >Mnja. Eller man kunne melde sig af misc i en tid. Det
> >er bare synd hvis det skulle være nødvendigt.
>
> Ja iiihhh hvor er det synd for dig. Tænkt sig, at du skulle gøre så meget
> som at lave et filter der smider mine indlæg væk, elelr at du rent faktisk
> skulle undlade at læse indholdet af mine indlæg.
Nu gider jeg simpelthen ikke høre mere på jeres brokkeri over hinanden. Så
nu har jeg lavet et filter, der klarer det for jer.
Og hvis I ikke holder op, så risikerer I at ryge i _mit_ filter. Sgu!
/Ole
#!/usr/bin/perl
#
# michael-filter.pl
# 20001024 Ole Tange <sslug@sslug>
#
# Filtrer mail væk, som kommer fra generende person eller
# som er en follow-up/reply i en tråd, hvor den generende person
# har deltaget med et tidligere indlæg (og tråden derfor et blevet
# totalt afsporet)
#
# Put flg. i .procmailrc
# (ret /home/tange/michael-filter.pl til fuld sti til denne fil)
# :0 fhbw
# | formail -s /home/tange/michael-filter.pl
#
# Known bugs: Der er et lockingproblem, så hvis du læser din mail i pine
# mens der filtreres mail væk, så skal du genstarte pine
# Option 'w' til procmail burde løse det, men gør det ikke.
use GDBM_File;
tie(%blacklist, 'GDBM_File', 'blacklist-msgid', 1, 0700);
while(<>) {
$header.=$_;
/^$/ and last;
/From / and next;
if(/^(\S+):\s*(.*)/) {
$lastheader=$1;
$lastheader=~tr[A-Z][a-z];
push(@{$header{$lastheader}},$2);
} elsif (/^\s+(.*)/) {
push(@{$header{$lastheader}},$1);
} else { warn(":$_:") }
}
$body=join("",<>);
$from=${$header{'from'}}[0];
$msgid=${$header{'message-id'}}[0];
# if 'From: Michael': blacklist += msg-id
$from=~/sslug@sslug/ and do {
$blacklist{$msgid}++;
};
# for 'References' {
for (@{$header{'references'}},
@{$header{'in-reply-to'}}) {
# if Ref in blacklist: blacklist += msgid
if($blacklist{$_}) { $blacklist{$msgid}++; }
}
# if not $blacklist{$msgid} print mail
if(not $blacklist{$msgid}) { print $header,$body; }
untie(%blacklist);
|
||||||||||||||
|
||||||||||||||