mailman3/README.md

57 lines
2.8 KiB
Markdown

# mailman3
> https://docs.mailman3.org
A mailing list management system.
<!-- metadata -->
* **Category**: Apps
* **Status**: 1, alpha
* **Image**: [`maxking/mailman-*`](https://github.com/maxking/docker-mailman)
* **Healthcheck**:
* **Backups**:
* **Email**:
* **Tests**:
* **SSO**:
<!-- endmetadata -->
## Mailu integration
This configuration is intended to be used with a [Mailu](https://git.autonomic.zone/coop-cloud/mailu) instance which is setup **on the same VPS**. A shared volume (Mailman core generated aliases for mail delivery) and a shared network (Mailu and Mailman can then see each other) are used to ensure that the postfix service in the Mailu stack can handle incoming and outgoing mail for Mailman.
This configuration assumes the following:
- a working Mailu instance (e.g. `mail.example.com`)
- a MX and SPF domain record for your mailing list domain (e.g. `lists.example.com`) ponting to your Mailu instance for incoming mail (e.g. `mail.example.com`)
- the `mailman-core` container IP range configured in the `RELAYNETS` environment variable on the Mailu side for outgoing mail relaying (ensure you do not an open relay using a tool like [mxtoolbox](https://mxtoolbox.com))
- overlay networks configured for both the Mailu and Mailman3 stacks (see `SMTP_HOST` and `SMTP_NETWORK` in the [.env.sample](./.env.sample) and `MAILMAN_CORE_NETWORK` [in the Mailu config](https://git.autonomic.zone/coop-cloud/mailu/src/branch/main/.env.sample))
- a shared volume between your Mailman3 and Mailu stack which exposes the Mailman generated aliases to Mailu (see `MAILMAN_CORE_VOLUME` [in the mailu config](https://git.autonomic.zone/coop-cloud/mailu/src/branch/main/.env.sample))
## Basic usage
1. Set up Docker Swarm, [`abra`], and [`coop-cloud/mailu`]
2. Deploy [`coop-cloud/traefik`]
3. `abra app new mailman3 --secrets` (optionally with `--pass` if you'd like
to save secrets in `pass`)
4. `abra app config YOURAPPDOMAIN` - be sure to change `$DOMAIN` to something that resolves to
your Docker swarm box
5. `abra app deploy YOURAPPDOMAIN`
6. Open the configured domain in your browser to finish set-up
## Creating users / superusers and running manage.py in general for posterous.
1. Go to the `web` container `abra app run lists.example.com web bash`
2. Set up the enivronment for the `manage.py` to work:
a. `export SECRET_KEY=$(cat /run/secrets/django_secret_key)`
b. `export DATABASE_PASSWORD=$(cat /run/secrets/db_password)`
c. `export DATABASE_URL="postgres://${DATABASE_USER}:${DATABASE_PASSWORD}@${DATABASE_HOST}/${DATABASE_NAME}"`
3. Then `manage.py` should work. For example, create a superuser with `python3 manage.py createsuperuser`.
[`abra`]: https://git.autonomic.zone/autonomic-cooperative/abra
[`coop-cloud/traefik`]: https://git.autonomic.zone/coop-cloud/traefik
[`coop-cloud/mailu`]: https://git.autonomic.zone/coop-cloud/mailu