
Show HN: Listmonk – Fast self-hosted newsletter and mailing list manager - v512
https://github.com/knadh/listmonk
======
knadh
Author here. To give some context on why listmonk was built, at work
(regulated financial business), we have to deliver e-mails, mostly important
updates, to 1.5mn+ customers regularly. We used phpList for the longest time
and then tried MailTrain and Sendy before finally deciding to reinvent the
wheel after running into a number of issues, of which, a few important ones
are mentioned below.

\- Performance. Unreasonably long amounts of time to send out e-mails. phpList
degraded to the point of taking several days to process a campaign. listmonk
can spawn N goroutines (~threads) and push e-mails to multiple SMTP servers.
On a commodity ec2 instance, we're able to send 1.5mn+ e-mails in a couple
hours.

\- Subscriber imports were extremely slow. Direct integration to keep
subscribers in sync with external CRMs was cumbersome. Direct DB inserts were
complicated due to the complex table structures. listmonk imports 10k
records/sec into a Postgres DB on a commidty ec2 instance.

\- Segmentation. Often, we have to rapidly segment users by custom attributes
and conditions and relay an update to them. listmonk supports SQL expressions
to segment users on their attributes that are defined as arbitrary JSON maps
(thanks to Postgres JSONB type).

\- Unavailability of dynamic templates. listmonk templates support Go template
expressions so it's possible to write logic in messages to make them dynamic.

I would like to add that listmonk is still work in progress and requires a
number of essential features before it can come out of alpha.

~~~
jonifico
Amazing work, congratulations! I'm gonna give it a try, we have been using
Phplist so far (we send like 500k daily emails).

Are you guys using returnpath' senderscore or a similar certification to send
that amount of emails ?

~~~
samat
Could you please elaborate on how to use returnpath to deliver large
quantities of emails? Isn’t it solely informational service?

~~~
theIV
Return Path has a certification service that certain providers use as a signal
to the “legitimacy” of the sender (don’t know if that was the best
phrasing...).

[https://returnpath.com/solutions/email-deliverability-
optimi...](https://returnpath.com/solutions/email-deliverability-
optimization/ip-certification/)

------
samtuke
phpList CEO here. Listmonk looks awesome - great to see more freedom of choice
for Open Source Marketers.

Not sure what SMTP setup you had with phpList, but sending 1.5m messages on a
VPS should take less than a day with the right Postfix tweaks.

~~~
knadh
Hey, thanks for phpList! We were on it for the longest time, and personally, I
first used it some 14 years ago.

We did try several things; Postfix tweaks, SES / Postal SMTPs, rate changes in
the phpList config etc., but nothing seemed to work. This, along with the
other factors (segmentation, dynamic templating), lead to listmonk.

------
OzzyB
This is relevant to my interests +1

This looks like the free/open-source version to Sendy based on more modern
tech like Golang/Docker/etc I've been hoping for, congrats on your alpha
release!

~~~
knadh
Thank you. It was a bit of a surprise to me that Sendy had no viable open
source alternatives. phpList is okay, but is quite dated and has a number
performance issues.

~~~
PatrolX
I've also been a Sendy user for a long time for non-critical applications, and
I don't like the fact they hide their code so a tool like this is long overdue
and much needed.

------
hemancuso
Projects like this seem like a great idea, but deliverability seems like a big
concern that is hard to measure unless you have a reasonable amount of
experience.

What are best practices for using/selecting an ESP if you were to use a
project like this and want to ensure reasonable deliverability?

~~~
knadh
Author here. We've been using listmonk in production at our company (regulated
financial business) to deliver e-mail updates including regulatory ones for
over 6 months. We host our own SMTP instances using Postal[1] on EC2 instances
and have never had any issues with deliverability. If it's legitimate e-mail,
I don't think it's much of an issue.

PS: Postal SMTP is awesome.

[1] [https://github.com/atech/postal](https://github.com/atech/postal)

~~~
rolltiide
> If it's legitimate e-mail, I don't think it's much of an issue.

starting to sound hopelessly naive

you deliver email updates to fund LPs that aren't unilaterally marking you as
spam for no reason

~~~
0xffff2
>that aren't unilaterally marking you as spam for no reason

This sounds hopelessly naive to me. If the receiver marks it as spam, it's
spam. By definition. Work harder to only send emails to people who want them.

~~~
cat199
Really?

Spam is unsolicited commercial email.

if I sign up on a site, click the 'yes email me' button, and then mark the
email as spam when I get it, I am the one acting incorrectly, not the sender
who is literally doing what I instructed them to do..

~~~
webbie917
Actually, cold emails (without permission) aren't spam. What makes an email
spam is: 1) misleading subject line 2) misleading message 3) lack of simple
(not requiring login or extra steps) unsubscribe link, and a couple other
factors.

People forget subscribing and hit "Spam", which has an impact on the sender
reputation and affects future deliverability for that sender.

~~~
thedufer
That's a very narrow definition of spam that you're only going to hear from
spammers (your profile is utterly unsurprising after reading this comment).
Unfortunately for you, end-users are going to mark as spam based on their own
much more reasonable definition.

~~~
webbie917
It's not my definition, that's how the CAN-SPAM Act of 2003 (applicable to US
only) defines spam and most marketers are familiar with since it's been around
for 15 years. Of course the laws are different in Europe and Canada.

One of the factors I didn't mention in previous comment is presence of
physical mail address.

Not sure what "unfortunately for me" is in reference to - BigMailer isn't a
platform for cold emails (there are plenty others that specialize in cold
email campaigns) and Amazon SES doesn't give a free pass on the practice
either.

------
justkez
Looks great! Do you have any plans to support third-party sending APIs (e.g.
SES)? I see the reference to SMTP.

I've been looking for a good solution for ad-hoc email campaigns (w/
templates) and for sending "systems" emails to an audience of _customers_.

I currently look after lists on both MailChimp and EmailOctopus and get
frustrated by the flat pricing for the size of the list and not how you engage
with the list (e.g. I'd love to see: store your list for $X/mo, or pay $X +
(list size * $Y) in the months when you email the list).

~~~
knadh
You can use SES's SMTP interface with listmonk. With some added effort, you
can self-host an SMTP server and achieve better throughput, and depending on
the volume, cost reduction. We've been running our own Postal SMTP instances
successfully.

~~~
lostmymind66
Are you talking about hosting your own smtp server?

The issue is that you need to put lots of effort into getting off of
blacklists, or your email won't be delivered.

------
OJFord
Does the AGPL licence mean that every email (the recipient being a 'network
user') needs a 'sent with listmonk, source code is here' footer?

~~~
onli
Why would it? That's not part of the license.

Besides, that an email is produced by an AGPL software does not make it
covered by the AGPL. That should be exactly the same legal situation as with
open source text editors.

~~~
OJFord
That's what I'm trying to understand, it was an honest question.

So, who does need to be provided with a copy? Just the 'administrators', the
people using it to send email?

What about if I modify it and repackage it as monklist or whatever, and charge
people to use it. I must give them the source code for listmonk too, and,
since another requirement is same licence, the source for my modified version?
i.e. monklist couldn't be closed source, but myapp that happens to use
listmonk unmodified for sending emails can be?

~~~
onli
Okay. IANAL, but software licenses I had to research a lot, so let's see
whether I can explain it and if my understanding is correct.

Maybe look at [https://tldrlegal.com/license/gnu-affero-general-public-
lice...](https://tldrlegal.com/license/gnu-affero-general-public-
license-v3-\(agpl-3.0\)) first. The AGPL GNU page
[https://www.gnu.org/licenses/agpl-3.0.en.html](https://www.gnu.org/licenses/agpl-3.0.en.html)
also covers questions and has an explanation. I think the summary covers it
already:

> _It requires the operator of a network server to provide the source code of
> the modified version running there to the users of that server. Therefore,
> public use of a modified version, on a publicly accessible server, gives the
> public access to the source code of the modified version._

So the license requirement is for the users of the software directly. They
need to get access to the modified source.

> _So, who does need to be provided with a copy? Just the 'administrators',
> the people using it to send email?_

If that is a closed group said group. If it's the public the public. So in
your case yes, the administrators.

You could make the argument (it has been tried before with editors) that the
email is part of listmonk, but reasonably it would not stand. At first look
there is more weight behind the argument that accessing the email is a form of
network access between the user and listmonk, vie email, but I don't think
that would hold up either, given the implications with regards of what is a
software and what is a product.

> _What about if I modify it and repackage it as monklist or whatever, and
> charge people to use it. I must give them the source code for listmonk too,
> and, since another requirement is same licence, the source for my modified
> version?_

I don't think that you have to give the original source of listmonk, but you
have to give users - including those who access the software on a server, like
in a SaaS scenario - access to the source code of monklist, yes.

> _i.e. monklist couldn 't be closed source, but myapp that happens to use
> listmonk unmodified for sending emails can be?_

There it gets murky. There are different understandings of when a software
with different parts becomes one thing and thus the AGPL and GPL apply, and
afaik that's not very well tested in court. That said, yes, if myapp just uses
listmonk and is not a modified version of listmonk and listmonk is not an
integral component of it, then myapp is not influenced at all by the AGPL.
AGPL talks about "modified versions of software", myapp would be no such
thing.

~~~
OJFord
Thanks!

------
webbie917
Pretty cool. Does the tool process bounces, complaints, and unsubscribes, e.g.
auto removes from future mailings?

Have you considered using a hosted platform that uses Amazon SES rather then
hosting Sendy or other tools yourself? I own BigMailer and our clients with
established SES accounts (high daily rate limits > high limit per sec) see 1m
emails go out in a little over 1 hour.

I always wonder why people choose to host email software in house and it seems
like the requirement for direct integration with in-house system(s) is one of
the biggest considerations when choosing in-house vs. off-the-shelf solution.

~~~
knadh
listmonk does have unsubscription and blacklisting, although not bounce
processing (yet. todo.)

listmonk is a replacement for Sendy. You can connect your SES account to it
using the SES SMTP interface.

Integration with in-house DBs was a top reason for us.

~~~
webbie917
Thanks for the answers.

Try to implement bounce processing soon - an average list decays at 2% per
month (3% for B2B lists) so in a few months, the bounce rate can be high
enough for mail box providers to start blocking your emails due to attempts to
send to large number of invalid email addresses. Especially sensitive issue
with your list size and sending volume.

There might be a couple more useful nuggets in this article on email
deliverability best practices [https://www.bigmailer.io/blog/improve-email-
deliverability-b...](https://www.bigmailer.io/blog/improve-email-
deliverability-best-practices/)

------
good-idea
This looks great and is maybe exactly what I'm looking for! I have a couple
questions:

I don't see anything in the docs about supplying an unsubscribe link. I don't
see an endpoint in the API that could be used with an anchor tag in the footer
of the email. Is this something that is supported?

And: my client is concerned about email/spam regulations, which I'm very
unfamiliar with. Is there anything I'd need to look out for in this regard?

~~~
knadh
Thank you :) listmonk supports unsubscription and blacklisting. The default
template that ships with it has an {{ UnsubscribeURL }} tag in the footer. I
just realised that it's not in the documentation (work in progress). Will add.

------
zachruss92
This is pretty cool. I have been using a competitor's software, Mautic for
quite some time. I am excited to see where this goes!

------
sukh
Not much to add. Had a quick glance at the code and set it up. Nice work on
the single binary install and UI!

------
paulcarroty
Upvote for AGPL v3.

------
goberoi
Totally random question: how did you pick the name?

~~~
knadh
I can't quite recollect, but I think the thought process was along the lines
of "hassle free, peaceful list management".

