diff --git a/README.md b/README.md index 64a466a..b048040 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,20 @@ +# 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 by using the HyperLogLog algorithm to store learned mails + [![Build Status](https://travis-ci.org/carlostrub/sisyphus.svg?branch=master)](https://travis-ci.org/carlostrub/sisyphus) [![Go Report Card](https://goreportcard.com/badge/github.com/carlostrub/sisyphus)](https://goreportcard.com/report/github.com/carlostrub/sisyphus) [![GoDoc](https://godoc.org/github.com/carlostrub/sisyphus?status.svg)](https://godoc.org/github.com/carlostrub/sisyphus) @@ -5,7 +22,57 @@ [![Codebeat](https://codebeat.co/badges/64615809-e3c4-4267-a049-eaec20ad63b5)](https://codebeat.co/projects/github-com-carlostrub-sisyphus-master) [![Coverage](https://gocover.io/_badge/github.com/carlostrub/sisyphus?0 "Coverage")](http://gocover.io/github.com/carlostrub/sisyphus) -# sisyphus -Intelligent, easy to configure Spam cleaner +## 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](https://en.wikipedia.org/wiki/Bayesian_inference) 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](https://en.wikipedia.org/wiki/HyperLogLog) 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.](https://github.com/carlostrub/sisyphus/releases) + +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. -This software is work in progress. Wait for more to come. +## License +Sisyphus is licensed under the 3-Clause BSD license. See the LICENSE file for +detailed information.