No description
Find a file
2016-04-10 20:26:20 -07:00
config Added VERP support 2016-04-10 20:26:20 -07:00
lib Added VERP support 2016-04-10 20:26:20 -07:00
public Added screenshots 2016-04-04 18:40:34 +03:00
routes Added VERP support 2016-04-10 20:26:20 -07:00
services Added VERP support 2016-04-10 20:26:20 -07:00
setup Initial import 2016-04-04 15:36:30 +03:00
test Initial import 2016-04-04 15:36:30 +03:00
views Added VERP support 2016-04-10 20:26:20 -07:00
.eslintrc.js Initial import 2016-04-04 15:36:30 +03:00
.gitignore Added VERP support 2016-04-10 20:26:20 -07:00
app.js Initial import 2016-04-04 15:36:30 +03:00
Gruntfile.js Initial import 2016-04-04 15:36:30 +03:00
index.js Added VERP support 2016-04-10 20:26:20 -07:00
LICENSE Initial import 2016-04-04 15:36:30 +03:00
package.json Added VERP support 2016-04-10 20:26:20 -07:00
README.md Added VERP support 2016-04-10 20:26:20 -07:00

Mailtrain

Mailtrain is a self hosted newsletter application built on Node.js (v5+) and MySQL (v5.5+ or MariaDB).

Features

Mailtrain supports subscriber list management, list segmentation, custom fields, email templates, large CSV list import files, etc.

Subscribe to Mailtrain Newsletter here (uses Mailtrain obviously)

Cons

  • Alpha-grade software. Might or might not work as expected
  • Awful code base, needs refactoring
  • No tests
  • No documentation

Requirements

  • Nodejs v5+
  • MySQL v5.5 or MariaDB
  • Redis (optional, used for session storage only)

Installation

  1. Download and unpack Mailtrain sources
  2. Run npm install in the Mailtrain folder to install required dependencies
  3. Copy config/default.toml as config/production.toml and update MySQL settings in it
  4. Import SQL tables by running mysql -u MYSQL_USER -p MYSQL_DB < setup/mailtrain.sql
  5. Run the server NODE_ENV=production npm start
  6. Open http://localhost:3000/
  7. Authenticate as admin:test
  8. Navigate to http://localhost:3000/settings and update service configuration
  9. Navigate to http://localhost:3000/users/account and update user information and password

Using environment variables

Some servers expose custom port and hostname options through environment variables. To support these, create a new configuration file config/local.js:

module.exports = {
    www: {
        port: process.env.OPENSHIFT_NODEJS_PORT,
        host: process.env.OPENSHIFT_NODEJS_IP
    }
};

Mailtrain uses node-config for configuration management and thus the config files are loaded in the following order:

  1. default.toml
  2. {NODE_ENV}.toml (eg. development.toml or production.toml)
  3. local.js

Running behind Nginx proxy

Edit mailtrain.nginx (update server_name directive) and copy it to /etc/nginx/sites-enabled

Running as an Upstart service in Ubuntu 14.04

Edit mailtrain.conf (update application folder) and copy it to /etc/init

Bounce handling

Mailtrain uses webhooks integration to detect bounces and spam complaints. Currently supported webhooks are:

  • AWS SES create a SNS topic for complaints and bounces and use http://domain/webhooks/aws as the subscriber URL for these topics
  • SparkPost use http://domain/webhooks/sparkpost as the webhook URL for bounces and complaints
  • SendGrid use http://domain/webhooks/sendgrid as the webhook URL for bounces and complaints
  • Mailgun use http://domain/webhooks/mailgun as the webhook URL for bounces and complaints

License

GPL-V3.0