config | ||
lib | ||
public | ||
routes | ||
services | ||
setup | ||
test | ||
views | ||
.eslintrc.js | ||
.gitignore | ||
app.js | ||
Gruntfile.js | ||
index.js | ||
LICENSE | ||
package.json | ||
README.md |
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
- Download and unpack Mailtrain sources
- Run
npm install
in the Mailtrain folder to install required dependencies - Copy config/default.toml as
config/production.toml
and update MySQL settings in it - Import SQL tables by running
mysql -u MYSQL_USER -p MYSQL_DB < setup/mailtrain.sql
- Run the server
NODE_ENV=production npm start
- Open http://localhost:3000/
- Authenticate as
admin
:test
- Navigate to http://localhost:3000/settings and update service configuration
- 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:
- default.toml
- {NODE_ENV}.toml (eg. development.toml or production.toml)
- 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