It's time to admit it. Mailman3 is a hot mess.

Like many people, I used mailman2 for mailing lists extensively for a long time. mailman2 was written in Perl, which for those of you who know me, is definitely not my favourite programming language, but, it pretty much worked. It wasn't beautiful in its web UI, but it worked.

Quite some time ago, as mailman was on a trajectory to deprecate mailman2, I switched in mailman3, on Debian, using Debian packages. The last stable mailman2 release was four years ago (at the time of writing), and mailman3 is 10 years old this year (2025).

Mailman3 is written in Python, which I like. The front-end in Python Django, which I've used and written in extensively. I love Debian. The package maintainers are clearly great people, working hard as volunteers in no doubt, their limited spare time.

And yet.

The whole project feels like a total mess. I have to admit it. It just doesn't seem to be getting better. There's the mailman3 core, there is Hyperkitty, there is Postorious, and probably more bits I've forgotten. It's spread over many packages. Don't ask me to tell you exactly which each bit does, because it's really not that clear. Postorius seems to be a Django interface to the whole thing.

Performing the migration from mailman2 and mailman3 was not that easy, and I'm not alone in finding it so. I worked hard to get the system working, and it ... did, at first.

It's just not stable...

Almost every Debian (testing) update breaks it. Not once or twice, but almost all the time. Now, I know some people will say the clue is in the name, but Debian testing is notoriously pretty stable all the same. So what happens when it goes wrong? You usually find out because you start getting a slew of Python traceback errors triggered by cron jobs in your inbox. Once a minute. Your whole inbox fills with it. You can spend hours tracking the error, while the emails continue to pour in. You can disable the cron jobs, which I have had to do more than once, waiting for the error to be fixed.

The problem is, you often end up waiting in vain. You end up pouring through source code, Google results, and patching the software in the running system. If the next packages fix that problem, there's a high probability there will be another causing a slew of different but similar emails into your inbox.

The User Interface doesn't work - properly.

Well, it does, sort of. But pull down menus don't work. Google will show you people have been wrestling with that problem for, in some cases, five years. This seems to be mismatched dependencies in bootstrap. So I spent a good chunk of an hour relinking those pending an upstream fix. Only that didn't work, because there's another copy of the old bootstrap in another folder.

It's exhausting

Do I have the skills to fix these issues as they occur. Yes, mostly. Do I have the time? No. mailman2 used to just work. Well, I encountered gremlins with it in upgrades sometimes, but they were much easier, and crucially, quicker, to fix.

I feel bad ranting about free software written and packaged by volunteers; they are all clearly working really hard, but sadly the end result is almost impossible to reliably use without investing far too many hours for me.

Mailman3 - as I said, it just feels like a hot mess. I've waited years in the hope that it would stabilise but it never really seems to. It might be trying to Debian package a Django app outside a Python venv is just too difficult on too many component pieces. I've certainly experienced that issue myself with stock packaged Debian django.

Maybe the packaging would be easier to maintain by separating it out from that. Or maybe it can only work on Debian Stable. I'm not convinced about that either, though.

Follow me!

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.