Go to file
Kailash Nadh 9a88c2ed7b Add support for custom SMTP HELO hostname (for FQDNS) 2020-02-06 15:39:43 +05:30
email-templates Fix default template rendering in Gmail with CSS inlining 2019-07-21 20:45:37 +05:30
frontend Fix 'send_at' option on the UI and bug in starting scheduled campaigns 2020-01-19 20:46:25 +05:30
manager chore: minor refactors based on static checks 2019-10-29 11:03:51 +05:30
media feat: Add blobstore package 2019-10-31 11:25:31 +05:30
messenger Add support for custom SMTP HELO hostname (for FQDNS) 2020-02-06 15:39:43 +05:30
models feat: Add blobstore package 2019-10-31 11:25:31 +05:30
public Fix logo (SVG) font by changing text to path 2019-11-30 11:17:39 +05:30
subimporter Validate the `status` field in create subscriber API 2019-11-30 09:54:46 +05:30
.dockerignore feat: Add blobstore package 2019-10-31 11:25:31 +05:30
.gitattributes Add .gitattributes for github-linguist 2019-07-15 09:34:56 +05:30
.gitignore feat: Add blobstore package 2019-10-31 11:25:31 +05:30
.goreleaser.yml fix: Path for windows build in goreleaser 2019-07-12 15:44:44 +05:30
Dockerfile feat: Add docker demo setup 2019-07-12 14:03:54 +05:30
INSTALL.md fix: docker-compose command 2019-07-20 17:49:41 +05:30
LICENSE Refactor and add new build routines 2019-07-09 15:57:04 +05:30
Makefile fix: buildString having incorrect TZ data 2019-09-06 13:43:49 +05:30
README.md Amend feature text 2019-12-24 14:59:15 +05:30
TODO.md Add TODO 2019-04-07 09:42:50 +05:30
admin.go feat: Add blobstore package 2019-10-31 11:25:31 +05:30
campaigns.go Fix incorrect campaign API response when there are no campaigns 2019-12-06 21:39:18 +05:30
config.toml.sample Add support for custom SMTP HELO hostname (for FQDNS) 2020-02-06 15:39:43 +05:30
docker-compose.yml feat: Add docker demo setup 2019-07-12 14:03:54 +05:30
go.mod Add support for custom SMTP HELO hostname (for FQDNS) 2020-02-06 15:39:43 +05:30
go.sum Add support for custom SMTP HELO hostname (for FQDNS) 2020-02-06 15:39:43 +05:30
handlers.go Fix: perPage logic in `getPagination` 2020-01-17 22:17:14 +05:30
import.go Refactor and fix importer state bugs 2019-04-03 14:08:31 +05:30
install.go Add --yes flag to skip prompts 2019-11-30 16:55:14 +05:30
lists.go chore: minor refactors based on static checks 2019-10-29 11:03:51 +05:30
main.go Add max idle/open params to DB connect 2019-12-05 17:28:22 +05:30
manager_db.go Refactor campaigns query into two: 'query' and 'get' 2019-03-30 12:38:02 +05:30
media.go feat: Add blobstore package 2019-10-31 11:25:31 +05:30
notifications.go Add data privacy export / wipe features (aimed at GDPR compliance). 2019-07-21 19:21:23 +05:30
public.go chore: minor refactors based on static checks 2019-10-29 11:03:51 +05:30
queries.go Fix unclosed DB transactions in subscriber search 2019-12-05 21:27:31 +05:30
queries.sql Fix 'send_at' option on the UI and bug in starting scheduled campaigns 2020-01-19 20:46:25 +05:30
schema.sql Remove stub user features and handlers. 2019-06-26 16:22:47 +05:30
stats.sql Add support for campaign view tracking with {{ TrackView }} pixel tag 2018-11-02 13:20:32 +05:30
subscribers.go Fix unclosed DB transactions in subscriber search 2019-12-05 21:27:31 +05:30
templates.go chore: minor refactors based on static checks 2019-10-29 11:03:51 +05:30
utils.go feat: Add blobstore package 2019-10-31 11:25:31 +05:30

README.md

listmonk

listmonk is alpha software and may change and break. Use with caution. That said, it has been in active use at zerodha.com for several months where it has processed hundreds of campaigns and tens of millions of e-mails.

listmonk is a standalone, self-hosted, newsletter and mailing list manager. It is fast, feature-rich, and packed into a single binary. It uses a PostgreSQL database as its data store.

listmonk-splash

Installation and use

  • Download the latest release for your platform and extract the listmonk binary. For example: tar -C $HOME/listmonk -xzf listmonk_$VERSION_$OS_$ARCH.tar.gz
  • Navigate to the directory containing the binary (cd $HOME/listmonk) and run ./listmonk --new-config to generate a sample config.toml and add your configuration (SMTP and Postgres DB credentials primarily).
  • ./listmonk --install to setup the DB.
  • Run ./listmonk and visit http://localhost:9000.
  • Since there is no user auth yet, it's best to put listmonk behind a proxy like Nginx and setup basicauth on all endpoints except for the few endpoints that need to be public. Here is a sample nginx config for production use.

Running on Docker

You can pull the official Docker Image from Docker Hub.

You can checkout the docker-compose.yml to get an idea of how to run listmonk with PostgreSQL together using Docker.

  • docker-compose up -d app db to run all the services together.
  • docker-compose run --rm app ./listmonk --install to setup the DB.
  • Visit http://localhost:9000.

Alternatively, to run a demo of listmonk, you can quickly spin up a container docker-compose up -d demo-db demo-app. NOTE: This doesn't persist Postgres data after you stop and remove the container, this setup is intended only for demo. DO NOT use the demo setup in production.

Help and docs

Help and documentation (work in progress).

Current features

  • Admin dashboard
  • Multiple public and private lists
  • Fast bulk subscriber import
  • Custom subscriber attributes
  • Subscriber querying and segmentation with ad-hoc SQL
  • Rich Go HTML templates and WYSIWYG editor
  • Media gallery
  • Multi-threaded multi-SMTP e-mail queues for fast campaign delivery
  • HTTP/JSON APIs for everything
  • Clicks and view tracking
  • and more ...

Todo

  • DB migrations
  • Bounce tracking
  • User auth, management, permissions
  • Ability to write raw campaign logs to a target
  • Analytics views and reports
  • Better widgets on dashboard
  • Tests!

Developers

listmonk is free, open source software licensed under AGPLv3. There are several essential features such as user auth/management and bounce tracking that are currently missing. Contributions are welcome.

The backend is written in Go and the frontend is in React with Ant Design for UI. See developer setup to get started.

License

listmonk is licensed under the AGPL v3 license.