Selfhosting

Photos

Email

  Docker Mail Server Mailu Mailcow Mailinabox iRedMail Modoboa Postal Poste.io Wildduck Stalwart
Docker yes yes   no   no        
                     
                     

Forwarding

When forwarding emails to another domain, the SPF records may lead to failures. For that, “Sender Rewriting Scheme”, short SRS, exists, which rewrites the envelope source address after the forwarding. Docker Mail Server has an option for this (others may as well) -> ENABLE_SRS config option

Mailing Lists

Adding Mailing Lists to a Mail setup seems to be a tad more trouble. Mailman3 seems to be the best thing to go with, and they have some information on running Mailman3 in Docker:

Trouble is: this sucks bigtime. And documentation blows as well.

Different containers

There are 3 container images, which you need two of.

  • maxking/mailman-core - the “backend”, which you will always need
  • maxking/mailman-web - the frontend containing ‘Posterios’, the mailing list management, and ‘HyperKitty’, the list archives
  • maxking/postorius - the frontend with just Posterios, but no HyperKitty. Alternative to the one above. (this is not really explained anywhere)

Compose Files

There are some compose files, but they are all lacking (the same) important bits and pieces. Let’s go with the default file

  • Pinned container versions are outdated -> current version as of writing is 0.5.2
  • The frontend needs some additional environment variables, otherwise it doesn’t start at all and shows no static files
    • SECRET_KEY=<random string> - required by Django
    • SERVE_FROM_DOMAIN=<lists.example.com> - Domain used
    • MAILMAN_ADMIN_USER=admin - user name of initial super admin
    • MAILMAN_ADMIN_EMAIL=listadmin@example.com - email address of initial super admin
    • UWSGI_STATIC_MAP=/static=/opt/mailman-web-data/static - required to serve static files on the http port properly. This is described in the docs, but still frustrating
  • Outbound SMTP server is assumed to be the gateway in the bridge network, which is likely not the case. You need to set it on both containers with env variable SMTP_HOST=<hostname>
  • Container linking is deprecated, and not even needed at all here

Integration

I tried integration with docker-mailserver, and it took me a while

  • There’s a github issue on docker-mailserver referencing this repo, which is terribly outdated, but notes how you configure postfix with the postfix-main.cf file
  • Description in docker-mailman docs (this) is wrong, as docker-mailserver uses virtual maps and dovecot
  • There should be a docker compose example for this whole thing

Permission issue

After creating the first list, an error like Uncaught runner exception: [Errno 13] Permission denied: '/opt/mailman/var/queue/virgin/... popped up in the logs.

Issue seems to be that by default you create the list as root and that breaks things. Should use the mailman user instead. See this thread

References

  • https://www.reddit.com/r/selfhosted/comments/yhboae/docker_mail_server_which_to_choose/

Newsletters

Digital Sovernty

Not necessarily only self-hosting but also more generic “independance from ‘foreign’ tech service providers”


Page last modified: Oct 16 2025 at 12:00 AM.