Skip to content


Upgrading to 0.4.0 Release

Some configurations in the release are backwards incompatible with what was working before.

Web server configuration

With 0.4.0 version, we added Port mapping from host's Port 8000/8080 to mailman-web container's port 8000/8080. Make sure you have this in your docker-compose.yaml

    - "" # HTTP
    - "" # uwsgi

You should update your web server to proxy


Update the Nginx configuration to look like this, notice the actual URL for proxy_pass is the only thing that has changed along with some options like uwsgi_read_timeout and include uwsgi_params that have been removed from the previous version.

    location / {
          proxy_set_header Host $host;
          proxy_set_header X-Forwarded-For $remote_addr;

For other web servers like Apache2, update the URL accordingly.

Note that if you are using uwsgi_pass instead of proxy_pass then you should update the URL accordingly to

MTA configuration

MTA configuration needs updating to ensure that all IPs from the subnet is added to mynetworks in Postfix configs.

Please verify that the network configuration generated by the containers look like this:

$ docker exec mailman-core cat /etc/mailman.cfg
# This file is autogenerated at container startup.
class: mailman.database.postgresql.PostgreSQLDatabase
url: postgres://mailman:mailmanpass@database/mailmandb
sleep_time: 10s

port: 8001
admin_user: restadmin
admin_pass: restpass
configuration: /etc/gunicorn.cfg

incoming: mailman.mta.postfix.LMTP
outgoing: mailman.mta.deliver.deliver
lmtp_port: 8024
smtp_port: 25
configuration: /etc/postfix-mailman.cfg

class: mailman_hyperkitty.Archiver
enable: yes
configuration: /etc/mailman-hyperkitty.cfg

Note that lmtp_host and webserver hostname can be different than before since new containers don't have static IP addresses. They are automatically parsed from the output of "ip route" command from inside mailman-core container.

You can verify that the IP address of the containers by running the following commands, note that the output can be different and it is fine if that is the case.

$ docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mailman-core
$ docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mailman-web

Mailman Core

v1.1.1 (released Aug 9 2017)

  • The MM_HOSTNAME now defaults to output of hostname -i instead of mailman-core. This is the hostname Core binds to for Webservice.
  • Added pymysql to the image to use MySQL as database.
  • The default settings for using SQLITE are now more sane.
  • Postfix's transport maps are generated at the container startup now even when there is no lists exist.

Mailman Web

v1.1.1 (released Aug 9 2017)

  • The default search_index for whoosh now exists on persistent storage at /opt/mailman-web-data
  • Move to using Alpine instead of Debian for this image, python2.7:alpine-3.6 image is now the base image
  • Django compressor is now using sassc from alpine repo.
  • Default value of SECRET_KEY is now removed. It is MUST to set SECRET_KEY environment variable to run this image now.
  • If a SERVE_FROM_DOMAIN environment variable is defined, the default Django's site is renamed to this domain. The SITE_ID remains same so there is no change required to serve this domain.
  • If MAILMAN_ADMIN_USER and MAILMAN_ADMIN_EMAIL environment variables are defined a Django Superuser is created by default. The password for this user would have to be reset on the first login.
  • Fix cron configuration which would run them in wrong order.
  • Removed facebook as default social auth provider in the
  • Uwsgi now listens on port 8080 for uwsgi protocol and 8000 for http protocol.
  • Threads are enabled by default in the uwsgi configuration now.
  • Hyperkitty updated to v1.1.1