]> Sergey Matveev's repositories - public-inbox.git/blob - Documentation/dc-dlvr-spam-flow.txt
d151d272d0aea390d6f08260ef06fe7a8ce738b6
[public-inbox.git] / Documentation / dc-dlvr-spam-flow.txt
1 dc-dlvr spam/ham training system flow
2 -------------------------------------
3
4 An overview of the Maildir + inotify-based spam training system Eric
5 uses on his mail server.  This idea may be implemented for kqueue-based
6 systems, too.
7
8 The idea is to use inotify (via incron) to watch for new files appearing
9 in Maildirs.  We only want to train seen messages as ham, and old (but
10 not necessarily seen) messages as spam.  The overall goal of this is to
11 allow a user to train their filters without leaving his favorite mail
12 user agent.
13
14 Every message written to Maildir involves a rename, so we only
15 have incron watch for IN_MOVED_TO events.
16
17 The generic flow is as follows, all for a single Unix user account:
18
19     incron -> report-spam +-> sendmail -> MTA -> dc-dlvr -> spamc -> spamd
20                           |
21                           V
22                          ...
23
24 For public-inbox, Eric uses a separate Unix account ("pi") to add a
25 layer of protection from fat-fingering something.  So his report-spam
26 script delivers to a second recipient for training, the "pi" user:
27                          ...
28                           |
29                           +-> sendmail -> MTA -> dc-dlvr
30                                                     |
31                                                     V
32                                             ~pi/.dc-dlvr.pre
33                                                     |
34                                                     V
35                                            public-inbox-learn
36
37 public-inbox-learn will then internally handle the "spamc -> spamd"
38 delivery path as well as removing the message from the git tree.
39
40 * incron - run commands based on filesystem events: http://incron.aiken.cz/
41
42 * sendmail / MTA - we use and recommend use postfix, which includes a
43                    sendmail-compatible wrapper: http://www.postfix.org/
44
45 * spamc / spamd - SpamAssassin: http://spamassassin.apache.org/
46
47 * report-spam / dc-dlvr - distributed with public-inbox in the scripts/
48   directory: git clone https://public-inbox.org/public-inbox.git