listmonk
listmonk is a self-hosted newsletter and mailing-list manager distributed as a Go binary and container image.
Why consider listmonk?
A fast, self-hosted newsletter and mailing list manager distributed as a single binary.
Learn listmonk by building
Practical setup notes, real use cases, and copy-ready examples in one focused guide.
Introduction
Operating a newsletter or managing email subscribers typically relies on third-party SaaS platforms. These platforms often charge based on subscriber count, which can become expensive as an audience grows. listmonk provides an alternative approach by allowing users to manage their own mailing lists and campaigns on their own infrastructure.
listmonk is a self-hosted newsletter and mailing list manager. Rather than relying on a heavy stack of dependencies, it is packaged as a single binary app. This design simplifies the deployment process, making it suitable for both hobbyists and organizations that want direct control over their communication channels and subscriber data.
The application requires a PostgreSQL database to store data. By pairing the binary with a standard relational database, listmonk manages complex segmentation, bounce processing, and campaign scheduling efficiently.
Core Concepts and Deployment
When setting up listmonk, administrators interact primarily with the single executable. The architecture is straightforward: the application connects to a PostgreSQL instance and exposes an administrative web interface alongside a public API.
If you choose the direct binary method, you begin by generating the default settings. You can install listmonk by downloading the release binary and generating a default configuration file. The official command to create this config.toml file is:
./listmonk --new-configOnce this template is available, you must provide your specific PostgreSQL credentials. Because the application manages its own schema, once configured, a specific installation command must be run to initialize the database tables:
./listmonk --installAfter the tables are created, executing ./listmonk starts the server. Administrators can then access the web dashboard to import subscribers, construct templates, and dispatch emails. The platform supports dynamic content using the Go templating language, allowing you to inject subscriber attributes directly into messages.
Containerized Workflow
For environments that standardize on containers, the official documentation also offers a Docker Compose approach. This method abstracts the binary and database provisioning into a single definition file.
When using Docker, the configuration variables are typically mapped via environment variables rather than a config.toml file. This pattern makes it easier to inject secrets, such as the initial super admin credentials and the SMTP server details, without writing them to disk. The application supports various SMTP providers, meaning you can plug in any standard mail delivery service to handle the actual transmission of the newsletters.
Whether deployed via the binary or Docker, listmonk presents a clean interface for tracking campaign performance. It records standard metrics such as opens, link clicks, and bounces, giving operators the visibility they expect from a professional newsletter service while retaining complete data ownership.
Related tools
More options with a similar category or technology profile.
MISP
Open source threat intelligence and cyber security information sharing platform.
Zulip Mobile
Official React Native mobile application for Zulip organized team chat.
Wire Server
End-to-end encrypted enterprise team communication, conferencing, and file sharing platform.
Signal Server
Enterprise-grade end-to-end encrypted messaging server infrastructure powering Signal.