Three open-source tools let you run newsletters from a server you control, and the main thing that sets them apart is how mail leaves that server. listmonk and Keila manage lists and campaigns, then hand each message to an SMTP relay or a service such as Amazon SES, so it goes out from the relay's servers. BillionMail installs a mail server of its own and sends from the machine's IP, which takes an open outbound port 25 and a PTR record set by your host. All three are AGPL-3.0. Keila is the only one also sold as a hosted service, and BillionMail hasn't shipped a release since December 2025.
A list manager behind a relay, or a full mail server
listmonk is a single Go binary, server and admin UI included, backed by PostgreSQL. It passes every message to one or more SMTP servers set in its configuration, and since v6.2.0 it picks the server from the sender address or domain. Its docs only cover SMTP delivery, with Amazon SES used as an SMTP provider, plus HTTP "messengers" for SMS, push notifications or community gateways to Resend and Mailersend.
Keila has no mail server either. Each sender goes through an SMTP server or the AWS SES, SendGrid, Mailgun or Postmark APIs, and the README suggests a small newsletter can simply go out through your own mailbox. Send with Keila, the company's own delivery service, is only available on the hosted plan.
BillionMail is a complete mail server with a campaign tool on top. One Compose stack brings Postfix for SMTP, Dovecot for IMAP and POP3, Rspamd for spam filtering and the Roundcube webmail, so the same machine also hosts mailboxes for the domains you add. The project pitches this as a way to stop wiring those pieces together by hand.
For campaigns, all three expose a transactional sending API: /api/tx in listmonk, POST /messages in Keila since 0.30.0, and single or batch sends behind an X-API-Key header in BillionMail. Segmentation is where they differ most. listmonk filters subscribers with SQL expressions run by PostgreSQL, including on free-form JSON attributes. Since 0.18.0, Keila can segment contacts by how they interacted with past campaigns, and BillionMail filters by tags, with exclusions.
Deliverability: what stays on your plate
With listmonk or a self-hosted Keila, you authenticate your domain at the relay and in your DNS zone. listmonk's settings and docs never mention SPF, DKIM or DMARC. Keila documents those records for its hosted plan only, as four CNAMEs pointing at its servers and a DMARC record set to p=none, and states that the instructions won't work on a self-hosted instance. Keila Cloud also rewrites sender addresses on shared domains: test@mailbox.org goes out as test.mailbox.org@keilamails.com, and the original address takes the replies.
Bounces are also yours to wire up in listmonk. Bounce processing is off after install; turning it on takes a POP3 mailbox behind the sender address or a dedicated Return-Path, or webhooks from Amazon SES, SendGrid, Postmark and other relays, which land on public routes of the instance. Sending speed is adjustable to stay under a relay's quotas: by default 10 workers send up to 10 messages a second each, and an optional sliding window caps volume at 10,000 messages an hour out of the box. Even with a relay, the docs warn that some hosts, Hetzner among them, block outbound ports 25 and 465.
With BillionMail, mail leaves from your server's IP, and keeping that IP's reputation clean is up to you. Outbound port 25 has to be open, and the docs note that most cloud servers block it by default, naming AWS EC2 and DigitalOcean. The IP's PTR record is set at the hosting provider or network operator, not in the tool. The UI walks you through SPF, DKIM and DMARC, checks whether the domain or IP sits on a blocklist (since v4.8), and can dedicate one outbound IP to each domain (since v4.4). To get off a blocklist, the docs point to Spamhaus's removal process. If port 25 stays closed or the IP is poorly rated, BillionMail can itself route through a relay, AWS SES, Mailgun or another, one per domain.
What each tool needs to run
Read from the repositories and documentation on 7 October 2026.
| Tool | Licence | What you run | Sending | Hosted plan | Latest release |
|---|---|---|---|---|---|
| listmonk | AGPL-3.0 | one Go binary, PostgreSQL 12 or later | one or more external SMTP servers | none, third-party hosts | v6.2.0, 26 Jun 2026 |
| Keila | AGPL-3.0 or later, except the extra/ directory | one container and PostgreSQL; a reverse proxy that passes WebSockets | SMTP, AWS SES, SendGrid, Mailgun, Postmark | Keila Cloud, €8 to €256 a month | 0.30.3, 6 Sep 2026 |
| BillionMail | AGPL-3.0 | seven containers, including Postfix, Dovecot, Rspamd, PostgreSQL and Redis; at least 1 core, 1 GB of RAM and 20 GB of disk | its own Postfix from the server's IP, or one relay per domain | none announced | v4.9, 11 Dec 2025 |
listmonk comes down to two services, the binary and PostgreSQL, which the repository's docker-compose.yml starts together, running migrations on every boot. Its docs set no memory minimum. The project's site cites a campaign of over 7 million emails sent on a fraction of one CPU core with RAM peaking at 57 MB, a figure from the project itself. At that scale, admin pages that count subscribers can take tens of seconds to load, and a setting caches those numbers.
Keila's installation docs name a single dependency for its image: PostgreSQL. Configuration requires a SECRET_KEY_BASE of at least 64 characters and an SMTP server for system emails, and sign-up stays open until you set DISABLE_REGISTRATION=true. The Compose file in the repository says it's meant for local testing, not production, and no memory requirement is documented.
BillionMail exposes nine ports (25, 465, 587, 110, 143, 993, 995, 80 and 443) and only installs on Linux amd64 or arm64. Its Go core mounts the Docker socket read-only. The install.sh script generates a random admin login and passwords, then turns on a firewall. The Docker route starts from an env_init file where the admin login is billion/billion and the PostgreSQL and Redis passwords sit in the public repository; the README asks you to change them before the first start.
Where the projects stand
listmonk has been around longest: repository created in June 2019, v1.0.0 in May 2021, then three releases in 2026, v6.0.0 on 2 January, v6.1.0 on 29 March and v6.2.0 on 26 June. The last commit landed on 3 October. The repository owner, knadh, has 1,422 commits; the next human contributor has 32. Each of the three 2026 releases fixes flaws specific to instances with several users, and rolling back to an older version means restoring the database from before the migration.
Keila, whose repository dates from January 2021, is still at 0.x. Version 0.30.3, released on 6 September 2026, is its ninth of the year, after a gap of almost ten months between 0.17.1 in March 2025 and 0.18.0 in January 2026. One developer authored 1,234 of the 1,388 commits on the main branch. A/B tests and marketing automations sit on the website's roadmap, not in the software.
BillionMail, maintained by aaPanel, shipped 21 releases between April and December 2025, and v4.9 from 11 December is still the latest. Its default branch took 74 more commits from February to April 2026, then two in June adding single sign-on from aaPanel, and none since. The repository has 227 open issues.
Licences and paid plans
listmonk, Keila and BillionMail are all under AGPL-3.0: anyone who modifies one of them and runs it as a network service has to offer the modified source to its users. Keila's licence adds "or any later version" and leaves out the logo and the extra/ directory. That directory holds the code specific to Keila Cloud, covering billing, accounts and Send with Keila, published for information only since 0.18.0; its README forbids using or modifying it.
Keila pitches itself as an open-source alternative to Mailchimp and Brevo, and it's the only one of the three with a hosted version for sale. Keila Cloud runs in Germany and France, has no free plan, and offers six plans priced by sending volume, from €8 a month for 2,000 emails to €256 for 250,000. listmonk has no paid plan and no hosting from the project; its docs point to third-party hosts such as PikaPods, Elestio and Cloudron. BillionMail lists no pricing and no hosted plan.
