2
0
mirror of https://github.com/carlostrub/sisyphus synced 2024-10-31 09:20:15 +00:00
Go to file
2017-09-16 22:57:49 +02:00
docs more docs 2017-03-16 20:58:24 +00:00
sisyphus small fixes on application help page, removing an unused variable 2017-09-16 22:47:41 +02:00
test/Maildir Only accept large unicode characters as individual words 2017-09-16 22:07:36 +02:00
.coveralls.yml add coveralls 2017-03-14 21:11:39 +00:00
.gitignore gitignore 2017-09-16 21:49:52 +02:00
.travis.yml travis cache 2017-09-16 22:57:49 +02:00
appveyor.yaml add line above appveyor.yaml 2017-03-08 07:54:51 +00:00
CHANGELOG.md - we go 12factor 2017-09-16 22:33:24 +02:00
classify_test.go fix test 2017-06-05 16:25:44 +00:00
classify.go glide up. load mails correctly before learning or classifying them. 2017-06-05 13:33:32 +00:00
daemon.go glide up. load mails correctly before learning or classifying them. 2017-06-05 13:33:32 +00:00
database_test.go make gometalinter happier 2017-05-13 22:34:54 +00:00
database.go glide up. load mails correctly before learning or classifying them. 2017-06-05 13:33:32 +00:00
glide.lock Glide up 2017-09-16 21:14:58 +02:00
glide.yaml Glide up 2017-09-16 21:14:58 +02:00
learn_test.go fix tests 2017-06-05 14:13:27 +00:00
learn.go glide up. load mails correctly before learning or classifying them. 2017-06-05 13:33:32 +00:00
LICENSE Initial commit 2017-02-20 23:12:05 +01:00
mail_test.go Only accept large unicode characters as individual words 2017-09-16 22:07:36 +02:00
mail.go Only accept large unicode characters as individual words 2017-09-16 22:07:36 +02:00
Makefile add send-coverage 2017-05-17 21:29:54 +00:00
mkdocs.yaml update initial docs 2017-03-08 08:23:38 +00:00
README.md clarify README 2017-06-05 17:39:02 +00:00
sisyphus_suite_test.go separate out command and package 2017-04-15 20:23:26 +00:00

Sisyphus: Intelligent Junk Mail Handler

As we all know too well, many mails we receive are undesired for various reasons. Sometimes, we just do not want to be part of a scam, sometimes we really prefer no to have this latest joke mail sent by our beloved friends -- even though we are happy to exchange serious messages with them.

Sisyphus is a junk mail handler of the latest generation. It has the following features:

  • requires zero configuration, neither on the server nor on the client
  • works with any MTA and any client
  • learns about your preferences based on all messages in your inbox and your junk folder
  • can handle multiple mail accounts with independant junk mail preferences
  • is fully daemonized, runs smoothly in the background
  • requires minimal resources, e.g. learning over 3000 mails requires only 2MB of storage

Build Status Go Report Card GoDoc Documentation Codebeat Coverage

How it works

Sisyphus analyzes each mail in the inbox and the junk folder and uses its subject and text to improve the learning algorithm. Whenever a new mail arrives in the Maildir/new directory, Sisyphus classifies this mail based on its content. Junk mails are then moved automatically to the Maildir/.Junk directory, while good mails are left untouched.

Technically, Sisyphus applies a classic Bayesian Update algorithm to classify mails. However, in contrast to many traditional junk mail filters, classification is based on all mails ever received. This includes mails that are classified by the user as junk by moving them manually into the junk folder, or mails that have been correctly classified by Sisyphus previously. This is only possible with limited resources by applying the HyperLogLog algorithm to store the learned mails.

The learned information is stored in a local database called sisyphus.db which is located in each Maildir directory.

Install

Sisyphus can be installed by downloading the released binary package.

To build from source, you can

  1. Clone this repository into $GOPATH/src/github.com/carlostrub/sisyphus and change directory into it
  2. Run make build

This will leave you with ./sisyphus in the sisyphus directory, which you can put in your $PATH. (You can also take a look at make install to install for you.)

Usage

Sisyphus help can be started by running

# sisyphus help

To start sisyphus, do

# sisyphus --maildir PATHTOMAILDIR  run

To run it in the background, do

# sisyphus --maildir PATHTOMAILDIR  start

See the help for more details.

License

Sisyphus is licensed under the 3-Clause BSD license. See the LICENSE file for detailed information.