No description
Find a file
2016-04-20 20:17:53 +03:00
config Added SQL upgrade script 2016-04-19 12:05:13 +03:00
lib Added PGP pubkey download button 2016-04-16 14:09:23 -07:00
public Added PGP pubkey download button 2016-04-16 14:09:23 -07:00
routes Added PGP pubkey download button 2016-04-16 14:09:23 -07:00
services Send encrypted messages to users with GPG key set 2016-04-16 10:11:10 -07:00
setup added sqldump and sqldrop commands 2016-04-20 20:17:53 +03:00
test Initial import 2016-04-04 15:36:30 +03:00
views updated public key download link 2016-04-17 12:13:02 +02: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 added max post size option 2016-04-12 22:36:55 -07:00
Gruntfile.js Initial import 2016-04-04 15:36:30 +03:00
index.js Allow starting as root and downgrading once the server is listening 2016-04-15 21:40:59 -07:00
LICENSE Initial import 2016-04-04 15:36:30 +03:00
nitrous-post-create.sh Updated nitrous install script 2016-04-14 22:12:21 -07:00
nitrous.json Add nitrous.io Quickstart configs and update README 2016-04-12 09:14:02 +00:00
package.json added sqldump and sqldrop commands 2016-04-20 20:17:53 +03:00
README.md added sqldump and sqldrop commands 2016-04-20 20:17:53 +03:00
README.nitrous.md Add nitrous.io Quickstart configs and update README 2016-04-12 09:14:02 +00: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 Mailtrain files using git: git clone git://github.com/andris9/mailtrain.git and open Mailtrain folder cd mailtrain
  2. Run npm install in the Mailtrain folder to install required dependencies
  3. Copy config/default.toml as config/production.toml and update MySQL and any other settings in it
  4. Import SQL tables by running npm run sql (invokes mysql command in the background, so you should have it installed. If you can't use this command, then you can import the database file yourself). If MySQL configuration in config file is not correct then this command fails.
  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

Upgrade

  • Replace old files with new ones by running in the Mailtrain folder git pull origin master
  • Upgrade MySQL tables by running npm run sql

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

Nitrous Quickstart

You can quickly create a free development environment for this Mailtrain project in the cloud on www.nitrous.io:

Nitrous Quickstart

In the IDE, start Mailtrain via Run > Start Mailtrain and access your site via Preview > 3000.

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

Additionally Mailtrain (v1.1+) is able to use VERP-based bounce handling. This would require to have a compatible SMTP relay (the services mentioned above strip out or block VERP addresses in the SMTP envelope) and you also need to set up special MX DNS name that points to your Mailtrain installation server.

License

GPL-V3.0