unsubbed.co

Postorius

Postorius is a Python-based application that provides web user interface to access GNU Mailman.

GPL-3.0 Free docs.mailman3.org

Self-hosted mailing list management, honestly reviewed. No marketing fluff, just what you get when you deploy the full GNU Mailman 3 stack.

TL;DR

  • What it is: A Django-based web management interface for GNU Mailman 3 — the free software mailing list engine that powers hundreds of open-source project lists [2][4].
  • Who it’s for: Sysadmins and technical teams who need to self-host a mailing list server (newsletters, discussion lists, announcement lists) at scale without paying for hosted services. Not for non-technical founders. Not a standalone product.
  • Cost savings: Hosted mailing list services like Groups.io charge $20–55/mo for larger lists. A self-hosted Mailman 3 + Postorius stack runs on a $10–20/mo VPS with unlimited lists and subscribers — but setup requires real Linux sysadmin work.
  • Key strength: Part of the most mature free software mailing list infrastructure in existence. The Mailman project has been running since 1998 under the Free Software Foundation. If you need to run mailing lists at the GNU/Apache/Python Software Foundation scale, this is what you use [2][4].
  • Key weakness: Postorius is not a product you deploy in an afternoon. It’s one component in a six-part stack that requires Postfix (or Exim), Apache or Nginx, uWSGI, a working database, and a running Mailman 3 core daemon — all correctly wired together [3][4]. There is no independent review coverage of this tool because the audience is entirely infrastructure engineers.

What is Postorius

Postorius is the web front-end for GNU Mailman 3. On its own, it does nothing. It’s a Django application that connects to a running Mailman 3 core via REST API and gives list administrators and subscribers a browser interface instead of command-line management [4].

To understand Postorius, you have to understand what GNU Mailman 3 is. Mailman 3 is not one piece of software — it’s a suite of six components that together form a complete mailing list system [3]:

  • Mailman Core — the delivery engine that actually handles email
  • Postorius — the web UI for list management (this review’s subject)
  • HyperKitty — a web archiver for list messages
  • mailman-hyperkitty — a plugin connecting Core to HyperKitty
  • django-mailman3 — shared Django modules for Postorius and HyperKitty
  • mailmanclient — Python bindings for Mailman’s REST API

Postorius specifically provides the management layer: creating and deleting mailing lists, managing subscriber lists, configuring list settings (moderation, digest mode, spam filters), and handling subscription requests from users [2][4].

The project is maintained by the Free Software Foundation and hosted on GitLab (not GitHub). It was started as a Google Summer of Code project in 2010 and 2011. It requires Python 3.9+, Django 4.2+, and GNU Mailman 3.3.10+ [2].

The license is GPL-3.0 on the overall project, with the Postorius component specifically under the Lesser GPL v3 [website documentation].


Why people choose it

There are no independent product reviews of Postorius. The available documentation is installation guides and official docs. That absence of reviews is itself a signal: this is infrastructure tooling used by people who already know they need a self-hosted mailing list server and are choosing GNU Mailman because of its reputation and FSF backing, not because a blog post convinced them.

The case for the full Mailman 3 + Postorius stack comes down to three things:

Institutional credibility. GNU Mailman has powered mailing lists for major open-source projects (Python, GNU, Apache, Debian) for nearly three decades. When you need a mailing list system that handles 100,000+ subscribers with proper bounce processing, spam filtering, and DMARC compliance, Mailman’s track record is hard to argue with [3].

Cost at scale. Groups.io charges $20/mo for lists under 500 members and $55/mo for larger lists. Listserv (the proprietary competitor) has commercial licensing that runs into thousands of dollars per year. A self-hosted Mailman 3 instance running on a $15/mo VPS handles unlimited lists and unlimited subscribers at the same fixed cost [3].

Software freedom. Postorius and Mailman are Free Software under copyleft licenses. No vendor lock-in, no subscription, no terms-of-service changes that affect your list archives [2][4].

What people do not choose Postorius for: newsletter marketing to customers, one-way broadcast email to opt-in lists, or anything resembling what Mailchimp or ConvertKit do. The mental model is community discussion lists and project announcement lists, not email marketing campaigns.


Features

Postorius covers the administrative surface of a running Mailman 3 installation:

List management:

  • Create, configure, and delete mailing lists through a browser [4]
  • Set list owners and moderators
  • Configure moderation policies (hold all, hold non-members, auto-approve members)
  • Manage list settings: digest mode, reply-to munging, subject prefix, archiving behavior
  • Mass subscription and unsubscription tools

Subscriber management:

  • Member roster with delivery settings per subscriber
  • Subscription request approval queue for moderated lists
  • Bounce management interface
  • Ban list management

User account features:

  • User registration and password management
  • Subscriber self-service: change delivery mode, change address, unsubscribe
  • Multi-list management from a single account

Integration with the Mailman stack:

  • Connects to Mailman Core via REST API (configured with URL, user, password in settings) [4]
  • Works alongside HyperKitty for list archives — same Django project, shared templates
  • Domain management for multi-domain setups

What Postorius does not include: email template designers, analytics/open-rate tracking, campaign scheduling, A/B testing, or any of the features that differentiate email marketing platforms. It manages the infrastructure of a mailing list, not the content strategy.


Pricing: SaaS vs self-hosted math

Postorius (and GNU Mailman 3):

  • Software license: $0 (LGPL/GPL) [website documentation]
  • VPS to run it on: $10–20/mo for a dedicated mail server (needs more RAM than a typical app VPS — 2–4GB minimum when running Postfix, Mailman Core, Django, and a database)
  • SMTP reputation: your server’s IP needs to be warmed up and not blacklisted. This is a real operational cost.

Groups.io for comparison:

  • Free: 1 group, 250 members max
  • Basic: $20/mo per group
  • Premium: $55/mo for up to 10,000 members across multiple groups
  • Higher tiers available for larger lists

Google Groups:

  • Free, but feature-limited, no archiving control, tied to Google infrastructure

Listserv (L-Soft):

  • Commercial licensing, typically $1,000+/year for small installations, significantly more for large ones

Concrete savings math: If you’re running 5 mailing lists with 2,000 total subscribers across them on Groups.io, that’s roughly $100/mo ($55/mo per group × 2 groups at that member count). On a self-hosted Mailman 3 instance on a $15/mo VPS, the same setup costs $15/mo — $1,020/year saved.

The catch: that $85/mo delta buys you Groups.io’s managed spam filtering, IP reputation management, bounce handling, and deliverability infrastructure. When you self-host, you own all of that. A server that ends up on a spam blacklist stops delivering email entirely, and getting de-listed takes real effort.


Deployment reality check

The installation documentation and community guides tell a consistent story: this is not a quick deployment [1][2][3][4].

The Debian package route (recommended for new installs) is the least painful path. A single command apt install mailman3-full mailman3-web installs the entire stack, and the Debian-packaged version includes pre-configured Apache and Postfix integration [3]. Even so, you still need to:

  • Configure Postfix with the correct virtual alias maps for Mailman
  • Set site_owner in /etc/mailman3/mailman.cfg [3]
  • Configure the Django settings_local.py with database credentials, SECRET_KEY, ALLOWED_HOSTS, MAILMAN_REST_API_URL, and email backend settings [4]
  • Run database migrations and collect static files [2][4]
  • Set up HTTPS with a real TLS certificate (the ArchWiki explicitly flags that Postorius must run over TLS in production to avoid exposing passwords) [4]
  • Configure your reverse proxy (Nginx or Apache) with the correct uwsgi upstream [4]

The manual/virtualenv route (for non-Debian systems or custom setups) involves setting up separate Python virtual environments for different components, cloning multiple GitLab repositories, and manually wiring together Mailman Core, mailmanclient, and Postorius [1]. The 5-minute setup guide from the docs acknowledges this is a multi-repository, multi-virtualenv operation [1].

What can go wrong:

The ArchWiki notes that Postorius and HyperKitty share a static file URL namespace by default, causing conflicts when run on the same domain — you need to manually set STATIC_URL to avoid collisions [4]. The Mailman REST API credentials must be synchronized between Mailman’s configuration and Postorius’s Django settings, and a mismatch silently breaks the management interface [4]. Email deliverability from a new server IP is its own problem entirely — Mailman can be configured and running while your outgoing email lands in spam for weeks.

Realistic time estimate: An experienced Linux sysadmin familiar with Django deployment and Postfix configuration: 2–4 hours to a working, TLS-secured production instance on Debian 11/12 using the package route [3]. A developer comfortable with Linux but new to mail server setup: a full day, with troubleshooting. A non-technical founder with no Linux server experience: not recommended without professional help.


Pros and Cons

Pros

  • Free Software with a 27-year track record. GNU Mailman has been the backbone of open-source project mailing lists since 1998. It handles scale, edge cases, and mail standards that newer tools haven’t encountered yet [website documentation][3].
  • No per-subscriber or per-message pricing. Run 50 lists with 100,000 subscribers combined — the VPS cost is fixed regardless of list activity [3].
  • Full control over your list archives. HyperKitty stores all list history on your own server. You own the data and can export or migrate it freely [3].
  • Proper bounce and spam handling. Mailman Core includes mature bounce detection and DMARC handling that took years of real-world mail traffic to develop [3].
  • Debian package makes it manageable. The mailman3-full package handles dependency coordination and provides sensible defaults that work for most setups [3].
  • LGPL license on Postorius means you can embed or integrate it without copyleft propagation concerns [website documentation].

Cons

  • Not a standalone product. You cannot deploy Postorius without the rest of the Mailman 3 stack. It’s a management UI for infrastructure you must separately operate [2][4].
  • Email deliverability is entirely your responsibility. Self-hosting a mail server means managing IP reputation, SPF/DKIM/DMARC records, and blacklist monitoring. Groups.io and hosted services handle this invisibly. You don’t get that with self-hosting [3].
  • No independent review coverage. Every search for “Postorius review” returns installation documentation. This tool has no community of non-technical adopters writing about their experience. That’s not necessarily bad — it means the audience is infrastructure engineers who evaluate tools differently — but it means no crowdsourced troubleshooting or UI feedback [sources 1–4 are all documentation].
  • Configuration is spread across multiple files. Django settings, Mailman Core config, WSGI config, and web server config must all be kept in sync manually [4][3].
  • Zero stars on the merged profile. The project has no GitHub presence — it lives on GitLab and has no easy public star count to gauge community health.
  • Django version dependency chains can become a problem. The documentation acknowledges that supported Django versions may be out-of-date in guides and you must check setup.py for the current supported version [2]. Keeping a Django app on a server patched against security vulnerabilities is ongoing work.
  • TLS is non-negotiable for production — no shortcuts, which adds a layer of setup that some VPS tutorials skip [4].

Who should use this / who shouldn’t

Use Postorius + GNU Mailman 3 if:

  • You’re running a community, open-source project, or organization that already operates mailing lists and is paying for a hosted service that’s scaling in cost.
  • You have a sysadmin (staff or contractor) who is comfortable with Django deployment, Postfix, and Linux server operations.
  • You need full ownership of your subscriber data and list archives, and the idea of a vendor having access to your membership list is a compliance or trust problem.
  • You’re migrating from Mailman 2 and want the modern web UI that Postorius provides on top of the same underlying architecture.

Skip it (stay on Groups.io or similar) if:

  • You want email list management and you’re not prepared to manage a mail server. Deliverability problems alone can consume days of debugging.
  • You’re a non-technical founder without a technical co-founder or sysadmin budget. This is not a weekend project for someone new to Linux.
  • You need email marketing features — open rate tracking, visual template builders, A/B testing, campaign scheduling. Postorius manages discussion and announcement lists, not marketing campaigns.
  • Your lists are small and the cost of a hosted service is under $30/mo. The operational overhead of self-hosting doesn’t pay off at that scale.

Skip it (use Listmonk instead) if:

  • You want self-hosted email campaigns with subscriber management, open/click tracking, and a modern UI. Listmonk is built for that use case, deploys via Docker in 20 minutes, and has an active GitHub community. Postorius is not that tool.

Alternatives worth considering

  • Listmonk — self-hosted email newsletter and list management with analytics, templating, and modern UI. Deploys via Docker. For one-way broadcast email to subscribers, this is a better choice than Mailman.
  • Groups.io — managed hosting for Mailman-style discussion groups. No server setup, handles deliverability, $20–55/mo. Appropriate if you want the functionality without the operations.
  • Sympa — another mature open-source mailing list manager (Perl-based), the main Mailman alternative in academic and institutional contexts. More complex, less frequently recommended for new deployments.
  • Discourse — if the underlying need is community discussion and mailing list is a legacy delivery mechanism, Discourse handles both web threads and email-in/email-out. More resource-intensive but designed for communities that also want a web forum.
  • Mailchimp free tier — if the need is newsletters (one-way) and the list is under 500 contacts, the free tier covers it without any server management.

Bottom line

Postorius is the right tool for a narrow use case: organizations that need to operate mailing lists at scale, want full data ownership, and have the technical staff to run a properly configured mail server. The GNU Mailman project has been handling mailing lists for serious open-source infrastructure for nearly three decades, and Postorius is the modern web interface for that proven backend.

For anyone outside that narrow band — non-technical founders, small teams, newsletter operators — the operational overhead is not worth it. Email deliverability is a specialty skill, Django app maintenance is ongoing work, and the six-component stack requires consistent attention. The money you save on Groups.io’s subscription fee gets eaten by the hours you spend on bounce management and DMARC debugging within the first quarter.

If you’re already running GNU Mailman 2 and need to upgrade, or you’re an organization with an actual sysadmin running community mailing lists, Postorius is the correct path. For everyone else, the honest recommendation is to use a managed service — or if you specifically want self-hosted email marketing rather than discussion lists, look at Listmonk instead.

If the full Mailman 3 stack is right for your situation but the setup is the blocker, that’s exactly the kind of one-time infrastructure work that upready.dev deploys for clients.


Sources

  1. GNU Mailman 3.0.3+ Documentation“Set up Postorius in five minutes”. https://docs.mailman3.org/projects/mailman/en/release-3.0/src/mailman/docs/WebUIin5.html
  2. Postorius 1.3.13 Documentation“Installation”. https://docs.mailman3.org/projects/postorius/en/latest/setup.html
  3. LinuxCloudVPS Blog“How to Install Mailman3 on Debian 11”. https://www.linuxcloudvps.com/blog/how-to-install-mailman3-on-debian-11/
  4. ArchWiki“Postorius”. https://wiki.archlinux.org/title/Postorius

Primary sources: