Usage & Enterprise Capabilities
Key Benefits
- Blazing Fast Delivery: Multi-threaded concurrency models in Go enable sending massive volumes concurrently.
- Single Binary Deployment: No need to configure PHP-FPM, Ruby, or complex web stacks. Dropping the binary on a Linux server is sufficient.
- Multi-SMTP Routing: Configure multiple SMTP providers (e.g., Postmark for transactional, SES for newsletters) and route campaigns dynamically.
- Developer-Friendly: Complete REST API coverage ensures easy integration with custom web apps (e.g., auto-subscribing users upon sign-up).
Production Architecture Overview
- Listmonk Core: A single compiled Go binary containing both the Web UI and the delivery engine.
- PostgreSQL Database: The only external requirement, storing subscribers, campaigns, and metrics.
- Reverse Proxy / SSL: An Nginx or Caddy server sitting in front of Listmonk to handle SSL termination and map a domain name to the application port.
- External SMTP: The required transactional email service (AWS SES, Mailgun, SendGrid) to deliver the outbound messages.
Implementation Blueprint
Implementation Blueprint
Prerequisites
# Update and install PostgreSQL
sudo apt update
sudo apt install postgresql postgresql-contrib nginx -yDatabase Setup (PostgreSQL)
# Switch to postgres user
sudo -u postgres psql
# Create DB and user
CREATE DATABASE listmonk;
CREATE USER listmonkuser WITH PASSWORD 'super_secure_password';
GRANT ALL PRIVILEGES ON DATABASE listmonk TO listmonkuser;
\qApplication Installation
# Download and install via curl
mkdir ~/listmonk && cd ~/listmonk
wget https://github.com/knadh/listmonk/releases/download/v3.0.0/listmonk_3.0.0_linux_amd64.tar.gz
tar -zxvf listmonk_3.0.0_linux_amd64.tar.gz
# Make it executable
chmod +x listmonkConfiguration and Initialization
config.toml file../listmonk --new-configconfig.toml, specifically the [db] and [app] sections:[app]
address = "127.0.0.1:9000"
# Keep this secure
admin_username = "admin"
admin_password = "super_secure_admin_password"
[db]
host = "localhost"
port = 5432
user = "listmonkuser"
password = "super_secure_password"
database = "listmonk"./listmonk --installRunning as a Systemd Service
systemd./etc/systemd/system/listmonk.service:[Unit]
Description=listmonk newsletter manager
After=network.target postgresql.service
[Service]
Type=simple
User=root
# Adjust this path to where your binary and config.toml reside
WorkingDirectory=/root/listmonk
ExecStart=/root/listmonk/listmonk
Restart=always
[Install]
WantedBy=multi-user.targetsudo systemctl daemon-reload
sudo systemctl enable listmonk
sudo systemctl start listmonkConfiguring the Reverse Proxy (Nginx)
/etc/nginx/sites-available/listmonk:server {
listen 80;
server_name notify.mycompany.com;
location / {
proxy_pass http://127.0.0.1:9000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}sudo ln -s /etc/nginx/sites-available/listmonk /etc/nginx/sites-enabled/
sudo systemctl reload nginxConfiguring Throttling and SMTP in the UI
Settings -> SMTP).- Log into
https://notify.mycompany.comusing the admin credentials. - Add your Amazon SES or equivalent credentials under SMTP.
- In Settings -> Performance, configure your throughput:
- Concurrency: The number of independent threads dispatching mail. (e.g., 5-10 for SES).
- Message rate: The maximum number of emails to send per second. Match this roughly to your provider's SLA (e.g., 14/sec for new SES accounts).
Production Integrations
POST request to https://notify.mycompany.com/api/subscribers from your Node.js or Python backend whenever a user signs up.// Example Node.js subscriber insertion
const axios = require('axios');
axios.post('https://notify.mycompany.com/api/subscribers', {
email: "newuser@example.com",
name: "John Doe",
status: "enabled",
lists: [1], // ID of your main newsletter list
attribs: {
source: "signup_form",
tier: "free"
}
}, {
auth: { username: 'admin', password: 'super_secure_admin_password' }
});Recommended Hosting for Listmonk
For systems like Listmonk, we recommend high-performance VPS hosting. Hostinger offers dedicated setups for open-source tools with one-click installer scripts and 24/7 priority support.
Get Started on HostingerExplore Alternative Marketing Infrastructure
WordPress
WordPress is a powerful open-source content management system (CMS) for building websites and blogs. It is production-ready, scalable, and highly extensible with plugins and themes.