The notmuch-web package

[Tags: gpl, library]

An email client for the notmuch email indexer (http://notmuchmail.org), built using Yesod. This project implements a web server and uses bootstrap and jquery for the UI. The client is fully functional, with searching, viewing, and composing email messages.


[Skip to ReadMe]

Properties

Versions0.1.0, 0.1.0.1, 0.1.1, 0.1.2, 0.1.2.1, 0.2.0
Change logNone available
Dependenciesaeson, attoparsec, attoparsec-conduit, base (==4.*), blaze-builder, blaze-markup, bytestring, case-insensitive, clientsession, conduit, containers, data-default, directory, email-validate, filepath, hamlet, hjsmin, http-conduit, http-types, lifted-base, mime-mail, monad-control, notmuch-web, old-locale, process, process-conduit (==0.5.*), pwstore-fast, random, shakespeare-css, shakespeare-js, shakespeare-text, template-haskell, text, time, transformers, unordered-containers, vector, wai, wai-extra, warp, yaml, yesod, yesod-auth, yesod-core, yesod-default, yesod-form, yesod-platform (>=1.1.6 && <1.2), yesod-static [details]
LicenseGPL
AuthorJohn Lenz <lenz@math.uic.edu>
MaintainerJohn Lenz <lenz@math.uic.edu>
StabilityExperimental
CategoryWeb
Home pagehttps://bitbucket.org/wuzzeb/notmuch-web
Source repositoryhead: hg clone https://bitbucket.org/wuzzeb/notmuch-web
Executablesnotmuch-web
UploadedFri Mar 8 04:03:54 UTC 2013 by JohnLenz
DistributionsDebian:0.2.0
Downloads1006 total (45 in last 30 days)
Votes
0 []
StatusDocs not available [build log]
All reported builds failed as of 2015-06-05 [all 1 reports]

Modules

Flags

NameDescriptionDefaultType
devTurn on development settings, like auto-reload templates.DisabledAutomatic
library-onlyBuild for use with "yesod devel"DisabledAutomatic

Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info

Downloads

Maintainers' corner

For package maintainers and hackage trustees

Readme for notmuch-web-0.1.0.1

Notmuch Web Client

This project is an email client for notmuch written in Haskell and Yesod. The code implements a web server and uses bootstrap and jquery for the UI. The current features are

Install

Binaries

One nice feature of GHC (the Haskell compiler) is the ability to statically link binaries to not require Haskell to be installed. I have therefore built the latest release; you can find the tarballs on the download page. The only prerequisites are glibc, libgmp, and zlib.

Source, latest released version

To compile the latest release from source, install the Haskell Platform, run "cabal update", then run "cabal install notmuch-web". This will install the latest release from hackage. The binary will then appear at ~/.cabal/bin/notmuch-web and the configuration files (see below) are in ~/.cabal/share/notmuch-web-version

Source, from bitbucket

To compile from bitbucket, install the Haskell Platform, run "cabal update", then run "cabal install yesod-platform". Next, clone from bitbucket and within the notmuch-web directory, run "cabal install --only-dependencies". You can now run "yesod devel" to start the development server or use the package.sh script to build a tarball.

Keter

Although I haven't used it, you might investigate keter for automatic building and deployment. See this blog post and this one for more information.

Configuration

When launching the notmuch-web binary, it expects several files to be located in two subdirectories of the current directory. No other configuration or install is needed, so you can copy the notmuch-web binary and these two folders anywhere, even deploy on computers with no Haskell installed.

First, an unmodified copy of the "static" folder must be in the current directory. The "static/tmp" directory can be periodically cleared, it is used to speed up serving of generated javascript and css (by using the sendfile syscall). If the files in static/tmp don't exist notmuch-web will create them, so it is helpful to clean out "static/tmp" after an upgrade. The other subfolders and files in static must be left unchanged.

Second, a (modified) copy of the "config" folder must be in the current directory. The config folder must contain:

Settings

notmuch-web has four modes: Development, Testing, Staging, and Production. The mode is specified on the command line when launching notmuch-web. The settings.yml file is split into four sections, one for each mode and notmuch-web will only load settings from the matching section of settings.yml. Using yaml references a collection of default settings are copied into each section of the configuration.

The default settings.yml file is well commented so I won't explain it here. The only required setting that must be edited before notmuch-web will run is "hashed-password", the hash of the password to access (see pwstore for the format). You can generate the hashed password by running "notmuch-web --make-password". Other settings like "from-address" and "approot" should be set as well for proper operation.

Running

To run, execute "notmuch-web Production". This will start the server listening on the configured port. notmuch-web accesses notmuch by launching the "notmuch" binary found in the PATH, so you must make sure the user running notmuch-web has notmuch in the PATH, is able to access the email directory, and has a valid notmuch configuration. You might need to set the NOTMUCH_CONFIG environment variable before launching notmuch-web.

I use a systemd unit to start notmuch-web as my login user at boot, having notmuch-web listen on port 3000. I then run nginx with SSL on port 443, and have nginx reverse proxy to notmuch-web.

SSL

Currently, notmuch-web does not implement SSL (although since Yesod/Warp supports SSL we could support it without too much work so it is on the TODO list). Therefore, you will want to reverse-proxy notmuch-web. I use nginx.