| dc-dlvr spam/ham training system flow |
| ------------------------------------- |
| |
| An overview of the Maildir + inotify-based spam training system Eric |
| uses on his mail server. This idea may be implemented for kqueue-based |
| systems, too. |
| |
| The idea is to use inotify (via incron) to watch for new files appearing |
| in Maildirs. We only want to train seen messages as ham, and old (but |
| not necessarily seen) messages as spam. The overall goal of this is to |
| allow a user to train their filters without leaving his favorite mail |
| user agent. |
| |
| Every message written to Maildir involves a rename, so we only |
| have incron watch for IN_MOVED_TO events. |
| |
| The generic flow is as follows, all for a single Unix user account: |
| |
| incron -> report-spam +-> sendmail -> MTA -> dc-dlvr -> spamc -> spamd |
| | |
| V |
| ... |
| |
| For public-inbox, Eric uses a separate Unix account ("pi") to add a |
| layer of protection from fat-fingering something. So his report-spam |
| script delivers to a second recipient for training, the "pi" user: |
| ... |
| | |
| +-> sendmail -> MTA -> dc-dlvr |
| | |
| V |
| ~pi/.dc-dlvr.pre |
| | |
| V |
| public-inbox-learn |
| |
| public-inbox-learn will then internally handle the "spamc -> spamd" |
| delivery path as well as removing the message from the git tree. |
| |
| * incron - run commands based on filesystem events: http://incron.aiken.cz/ |
| |
| * sendmail / MTA - we use and recommend postfix, which includes a |
| sendmail-compatible wrapper: http://www.postfix.org/ |
| |
| * spamc / spamd - SpamAssassin: http://spamassassin.apache.org/ |
| |
| * report-spam / dc-dlvr - distributed with public-inbox in the scripts/ |
| directory: git clone https://public-inbox.org/public-inbox.git |