1 |
douglas |
811 |
#!/usr/bin/perl |
2 |
|
|
# False Positive |
3 |
|
|
# |
4 |
|
|
# Douglas Thrift |
5 |
|
|
# |
6 |
|
|
# $Id$ |
7 |
|
|
|
8 |
|
|
use strict; |
9 |
|
|
use warnings; |
10 |
|
|
|
11 |
douglas |
924 |
use IMAP::Client; |
12 |
douglas |
811 |
use Mail::SpamAssassin; |
13 |
|
|
|
14 |
douglas |
829 |
my $debug = 0; |
15 |
douglas |
811 |
|
16 |
douglas |
829 |
for my $arg (@ARGV) |
17 |
douglas |
811 |
{ |
18 |
douglas |
829 |
if ($arg eq "-debug") |
19 |
|
|
{ |
20 |
|
|
$debug = 1; |
21 |
|
|
} |
22 |
|
|
else |
23 |
|
|
{ |
24 |
|
|
print "Usage: $0 [-debug]\n"; |
25 |
|
|
|
26 |
|
|
exit 1; |
27 |
|
|
} |
28 |
douglas |
811 |
} |
29 |
|
|
|
30 |
douglas |
924 |
my $imap = new IMAP::Client; |
31 |
douglas |
811 |
|
32 |
douglas |
924 |
$imap->onfail('ABORT'); |
33 |
|
|
$imap->debuglevel(1) if ($debug); |
34 |
|
|
$imap->capability_checking(1); |
35 |
|
|
$imap->connect(PeerAddr => 'mail.douglasthrift.net', ConnectMethod => 'STARTTLS'); |
36 |
douglas |
829 |
|
37 |
douglas |
912 |
{ |
38 |
|
|
my $user = getpwuid $<; |
39 |
|
|
|
40 |
|
|
open PASS, "$ENV{HOME}/.CreditCardReminder.pass" or die "$0: $!\n"; |
41 |
|
|
|
42 |
|
|
my $pass = <PASS>; |
43 |
|
|
|
44 |
|
|
chomp $pass; |
45 |
|
|
close PASS; |
46 |
|
|
|
47 |
douglas |
924 |
$imap->authenticate($user, $pass); |
48 |
douglas |
912 |
} |
49 |
|
|
|
50 |
douglas |
924 |
$imap->select('Spam.False Positive'); |
51 |
|
|
|
52 |
|
|
my $messages = $imap->uidsearch('UNFLAGGED'); |
53 |
|
|
|
54 |
|
|
if (defined $messages) |
55 |
douglas |
829 |
{ |
56 |
douglas |
924 |
my $assassin = Mail::SpamAssassin->new($debug ? {debug => 'all'} : {}); |
57 |
|
|
my %fetch = $imap->uidfetch($messages, {}, 'INTERNALDATE'); |
58 |
douglas |
829 |
|
59 |
douglas |
924 |
for my $message (values %fetch) |
60 |
douglas |
829 |
{ |
61 |
douglas |
924 |
$imap->append('INBOX', $assassin->remove_spamassassin_markup($assassin->parse($message->{BODY}->{BODY})), '"' . $message->{INTERNALDATE} . '"'); |
62 |
|
|
$imap->uidstore($message->{UID}, '+FLAGS.SILENT', '\Flagged'); |
63 |
douglas |
829 |
} |
64 |
|
|
} |
65 |
|
|
|
66 |
douglas |
924 |
$imap->logout; |