48 lines
1.8 KiB
Markdown
48 lines
1.8 KiB
Markdown
# town mailing list manager
|
|
|
|
our little bespoke town engine. it runs on a janky procmail script
|
|
|
|
|
|
## setup
|
|
|
|
our system is very particular to running on public unix systems and probably
|
|
wouldn't be advisable for anything with external mail.
|
|
|
|
we have our local mail set up so that it's impossible to spoof the
|
|
envelope sender of an email with `local_login_sender_maps` in postfix;
|
|
the list handles this to make the emails look pretty and to evade spoofing
|
|
|
|
the software works on the assumption that everything lives in the home dir
|
|
of a user named `list`.
|
|
our list account needs two directories, `lists/` and `archive/`.
|
|
our scripts can autopopulate everything here, but you can also do manual
|
|
configuration in `lists/` to change access control to certain mailing lists.
|
|
|
|
copy procailrc to `~/.procmailrc` and set up `~/.forward` to filter all mail
|
|
through it:
|
|
|
|
```
|
|
|/usr/bin/procmail
|
|
```
|
|
|
|
if you want to have any special read-only mailing lists, you can populate
|
|
`lists/LISTNAME.senders` with a list of allowed senders, one on each line
|
|
|
|
a user can subscribe by naming the lists they want to subscribe to in a
|
|
`.townlists` file in their home directory
|
|
rather than checking these lists every post, we populate some internal
|
|
subscription lists with `make_lists.sh`, which should run on a cron job.
|
|
|
|
## assumptions
|
|
- mailing list names are `[a-z0-9_]{1,16}`
|
|
- we check this in the .townlists files and in sending
|
|
- everything lives in our home directory
|
|
- `lists/` and `archive/` directories exist
|
|
- usernames don't contain special characters
|
|
- i don't actually know which ones would be an issue
|
|
but town doesn't usually allow anything too crazy anyway
|
|
|
|
### subscriptions
|
|
- everyone we care about lives in /home and their usernames correspond to the directories
|
|
- list subscriptions are stored per-line in `.townlists`
|