Curie

Webmail server

This project is maintained by traut

About

Curie is designed to be a GMail replacement

Overview

Installation (dev instance)

These are the steps to configure local dev Curie instance:

1. Requirements:

2. Download and run bootstrap.sh. It will create local instance in the current directory (download/configure Solr, checkout/configure Curie).

curl https://raw.github.com/traut/curie/master/bin/bootstrap.sh | bash
If the last line of the output is "To start all the processes use run-all.sh" then everything is fine and you can try running workers and services.

3. To run Solr, the workers and Curie webserver run run-all.sh:

$ ./curie/front/bin/run-all.sh
There is a high probability that this will not work out of the box. You can find more info in ./curie-*.log files. Try running the demons manually, maybe in screen session.

4. To create a new user account, you would have to go into node shell and call users.addAccount function:


~$ cd curie/front/
~/curie/front$ node
> users = require('./users.js')
{ addAccount: [Function: addAccount],
  signIn: [Function: signIn],
  getAccountEmails: [Function: getAccountEmails],
  getAccountDetails: [Function: getAccountDetails] }
> users.addAccount('login', 'password', [{ fullname : 'James Bond', email : 'james@bond.com' }, { fullname : 'Bruce Wayne', email : 'bruce.wayne@wayne.com'}]);
undefined
> 15:09:35.675 - info: [users] Account 5 created with 2 email addresses
~/curie/front$
    

5. Now you should be able to go to http://localhost:8080/ and sign in with credentials you provided

Components

Workers

ScriptDescription
watcher.py
Watcher catches changes in Maildir, moves files to a storage dir and pushes events to "inbox" queue. Event is just a string - a path to a raw email blob.
parser.sh
Parser (java code) parses email messages, creates *.raw.json and *.parsed.json files (according to schemas) next to a raw email file.
indexer.py
Reads *.parsed.json files and pushes updates to a Solr instance.
labeler.py
Reads pre-defined filters (global and user specific) and adds labels to a doc in Solr index