public-inbox.git  about / heads / tags
an "archives first" approach to mailing lists
blob 325f57183d2a14bb1365f45af1c949c246c79e22 1714 bytes (raw)
$ git show v1.4.0:scripts/report-spam	# shows this blob on the CLI

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
 
#!/bin/sh
# Copyright (C) 2008-2014, Eric Wong <e@80x24.org>
# License: GPLv3 or later <http://www.gnu.org/licenses/gpl-3.0.txt>
# Usage: report-spam /path/to/message/in/maildir
# This is intended for use with incron or similar systems.
# my incrontab(5) looks like this:
#  /path/to/maildir/.INBOX.good/cur IN_MOVED_TO /path/to/report-spam $@/$#
#  /path/to/maildir/.INBOX.spam/cur IN_MOVED_TO /path/to/report-spam $@/$#

# gigantic emails tend not to be spam (but they suck anyways...)
bytes=$(stat -c %s $1)
if test $bytes -gt 512000
then
	exit
fi

# Only tested with the /usr/sbin/sendmail which ships with postfix
# *** Why not call spamc directly in this script? ***
# I route this through my MTA so it gets queued properly.
# incrond has no concurrency limits and will fork a new process on
# every single event, which sucks with rename storms when a client
# commits folder changes.  The sendmail executable exits quickly and
# queues up the message for training.  This should also ensure fairness
# to newly arriving mail.  Instead of installing/configuring
# another queueing system, I reuse the queue in the MTA.
# See scripts/dc-dlvr for corresponding trainspam/trainham handlers,
# which are for my personal bayes training, and scripts/dc-dlvr.pre
# for the pispam/piham handlers for training emails going to public-inbox

DO_SENDMAIL='/usr/sbin/sendmail -oi'
PI_USER=pi

case $1 in
*[/.]spam/cur/*) # non-new messages in spam get trained
	$DO_SENDMAIL $PI_USER+pispam <$1
	exec $DO_SENDMAIL $USER+trainspam <$1
	;;
*:2,*S*) # otherwise, seen messages only
	case $1 in
	*:2,*T*) exit 0 ;; # ignore trashed messages
	esac
	$DO_SENDMAIL $PI_USER+piham <$1
	exec $DO_SENDMAIL $USER+trainham <$1
	;;
esac

git clone https://public-inbox.org/public-inbox.git
git clone http://7fh6tueqddpjyxjmgtdiueylzoqt6pt7hec3pukyptlmohoowvhde4yd.onion/public-inbox.git