upgrade mailman to mailman 3
Mailman 2 was removed from Debian bullseye, we need to either upgrade to Mailman 3 or get rid of it. This is part of the 2022-Q1/Q2 OKRs and the %"Debian 11 bullseye upgrade" milestone.
upgrade procedure: https://docs.mailman3.org/en/latest/migration.html
as part of %"TPA-RFC-71: emergency email deployments, phase B", we proposed to make a new install on a new VM (mailman-01?).
# current status
VM (`lists-01`) has been installed, mailman 3 setup, all mailing lists are in the progress of being migrated, see below for details.
update: all lists migrated, everything in order. next step is to finish service docs, followup tickets in #41853, #41850, #41852
# checklist
- [x] install mailman3 through Puppet
- [x] test the site:
- [x] registration and login (web)
- [x] create a list (web)
- [x] create a list (cli)
- [x] invites (web)
- [x] subscribe (email)
- [x] subscribe (web)
- [x] reply (email)
- [x] subscribe other users
- [x] unsubscribe (email)
- [x] unsubscribe (web)
- [x] signup (web)
- [x] password reset (web)
- [x] archives (not working!)
- [x] private archives
- [x] reply from web (or turn off)
- [x] translations (french not working, not a blocker for launch)
- [x] delete a list (test2, cli)
- [x] delete a list (web)
- [x] fix issues found in testing
- [x] cron job fires garbage to www-data every minute (https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1051617)
- [x] www-data@ alias delivers locally (!?)
- [x] fix schleuder routing to keep sending mail to mta.tails
- [x] redeploy with PostgreSQL? (sqlite is not recommended and we've seen locking issues)
- [x] send reminders to mailing lists
- [x] tor-project
- [x] tor-relays (moderated)
- [x] act (moderated)
- [x] tor-consensus-health (moderated)
- [x] tpa-team
- [x] tor-announce (moderated)
- [x] tor-dev (moderated)
- [x] tor-qa (moderated)
- [x] tor-board
- [x] add notice on status.tpo
- [x] archive the old site:
- [x] update https://wiki.archiveteam.org/index.php/Mailman/2
- [x] crawl site starting from last crawl in september, using `(1\d{3}|20[0-1]\d|2020)` as an exclude, last full job is from 2021, so we crawl up to (and including) 2020, see https://archive.fart.website/archivebot/viewer/job/20211101142707clpzk, last job took about 2 days to run
- [x] sync a copy of the public mail archives to https://archive.torproject.org/websites/lists.torproject.org/pipermail/
- [x] add rewriting rules from mailman2 on lists-01, for `cgi-bin/mailman`
- [x] copy over archives and lists
- [x] check lists for readiness (done, emailed list owners for pending requests, digests will be flushed before migration
- [x] convert one test list
- [x] route @lists.tpo to lists-01 for test list
- [x] convert tpa-team, reroute
- [x] remove authentication on lists-01
- [x] confirm tpa-team works properly
- [x] post-testing issues:
- [x] add DKIM records to DNS
- [x] add DMARC munging https://gitlab.com/mailman/mailman/-/issues/1181
- [x] strip incoming DKIM sigs
- [x] schedule a more precise maintenance window
- [x] final migration (maintenance window)
- [x] convert all lists
- [x] anti-censorship-alerts
- [x] anti-censorship-team
- [x] board-executive
- [x] board-finance
- [x] board-legal
- [x] board-marketing
- [x] dei
- [x] dir-auth
- [x] eng-leads (note: no archives)
- [x] global-south (733 subscriptions ignored)
- [x] ~~mailman~~ N/A
- [x] meeting-planners (7 held messages ignored)
- [x] membership-advisors (71 held messages ignored)
- [x] metrics-alerts
- [x] network-health (1 held message ignored)
- [x] onion-advisors
- [x] onionspace-berlin
- [x] onionspace-seattle
- [x] ooni-bugs
- [x] ooni-dev
- [x] ooni-operators
- [x] ooni-talk
- [x] regional-nyc
- [x] research-response
- [x] tbb-commits
- [x] tbb-dev
- [x] team-leads
- [x] test
- [x] tor-access
- [x] tor-alums
- [x] tor-announce
- [x] tor-board (no archive)
- [x] tor-boardmembers-only (no archive)
- [x] tor-censorship-events
- [x] tor-commits (indexer in batch(1), 216717 emails!)
- [x] tor-community-team
- [x] tor-consensus-health (indexer in batch(1))
- [x] tor-dev
- [x] tor-employees (no archive)
- [x] tor-gsoc (indexer in batch(1), as well as all other lists below, unless otherwise noted)
- [x] tor-internal
- [x] tor-l10n (8 held messages ignored)
- [x] tor-meeting
- [x] tor-mirrors
- [x] tor-network-alerts
- [x] tor-onions (28 held messages ignored)
- [x] tor-operations (no archives)
- [x] tor-packagers
- [x] tor-project
- [x] tor-qa
- [x] tor-relays (large, 5 held messages ignored)
- [x] tor-relays-universities
- [x] tor-research-safety (no archives)
- [x] tor-svninternal
- [x] tor-team (no archives)
- [x] tor-test-network (no archives)
- [x] tor-users
- [x] tor-vpn
- [x] tpa-team
- [x] translation-admin (13 held messages ignored)
- [x] wtf (no archives)
- [x] www-team
- [x] clear out `/srv/mailman` (mm2 copy) on `lists-01` to make room for the rest
- [x] change `lists` CNAME record to point to `lists-01`
- [x] redirect lists.tpo/pipermail to https://archive.torproject.org/websites/lists.torproject.org/pipermail/ (only effective after DNS gets switched to lists-01)
- [x] mark maintenance as done on status.tpo
- [ ] post-launch:
- [x] remove mailman2 mailing lists passwords from password manager
- [x] move postgresql to `/srv`
- [x] make sure indexers complete
- [x] resync archive.torproject.org pipermail archive
- [x] notify owners about their lost pending messages
- [x] notify everyone about lost private archives, new user accounts, new features, etc
- [x] silence warning from daily cron job (`INFO Enqueued 29`, see https://gitlab.com/mailman/hyperkitty/-/issues/295)
- [x] silence django exceptions by email (e.g. `Subject: [Django] ERROR (EXTERNAL IP): Internal Server Error: /mailman3/postorius/lists/`)
- [x] remove eugeni DKIM record from lists.tpo (~~make sure the queue is empty of lists messages on eugeni first~~, delegated to #40987)
- [x] delete old lists archives from lists-01
- [x] write a plugin to replace built-in styles so DMARC mitigation works out of the box (or patch the debian package, see #41853)
- [x] add missing postgresql -> mailman3 -> mailman3-web service dependency
- [x] write service docs
- [x] copy the mbox archives to lists-01, unaccessible
- [x] copy the public .mbox files to archive-01
- [x] setup a mailman2.torproject.org alias for people to peruse old settings and approve messages
- [x] cleanup ~Lists issues
- [x] consider [ARC signing](https://docs.mailman3.org/projects/mailman/en/latest/src/mailman/handlers/docs/arc_sign.html) (delegated to https://gitlab.torproject.org/tpo/tpa/team/-/issues/41852)
- [ ] french translations not working, even though they are [marked at 96% done on weblate](https://hosted.weblate.org/projects/gnu-mailman/#languages) and mailman3 *should* [support translation](https://docs.mailman3.org/en/latest/translation.html), with regular commits... this is possibly fixed in trixie
- [x] after a delay, retire mailman from eugeni, (delegated to the eugeni upgrade, #40694)
issue