69. pepsi-list

Mailinglisten, ihre Mitglieder und ihre Verwalter anlegen und verwalten.

69.1. Aufgabe

pepsi-list ist das Kommandozeilenwerkzeug des Betreibers für Pepsis Mailinglisten-Subsystem. Es verbindet sich über den gemeinsamen Abschnitt [pepsi-postgres] und liest seinen eigenen Abschnitt [pepsi-list] für die wenigen Einstellungen, die dem Server und nicht einer Liste gehören. Als root gestartet wechselt es vor dem Verbinden auf das Dienstkonto pepsi, sodass kein sudo -u pepsi nötig ist. Es ist nicht setuid und darf nicht dazu gemacht werden. Referenz: pepsi-list(1).

Dieses Subsystem ist eine Neuimplementierung von GNU Mailman 3; siehe Mailinglisten, wo das ausführlicher steht und benannt ist, was von upstream übernommen wurde.

69.2. Was es verwaltet

  • Domains – die Maildomains, in denen Listen angelegt werden dürfen. Eine hier zu registrieren ist von [pepsi-ingress] ACCEPTED_DOMAINS getrennt, und eine Liste in einer Domain, die ingress nicht annimmt, ist eine Liste, deren Post bei RCPT abgewiesen wird.

  • Listen – das Anlegen aus einem Stil und jedes der 99 Attribute, die die REST-API von GNU Mailman 3.3.10 offenlegt. list show gibt sie alle aus; list show --explain ergänzt die Erläuterung zu jedem.

  • Mitglieder und Verwalter – die vier Rollen (member, owner, moderator, nonmember). Ein Verwalter erhält ein Benutzerkonto, weil er sich an der Verwalteroberfläche anmeldet; ein gewöhnlicher Abonnent braucht keines.

  • Sperren – je Liste oder serverweit, als Adresse oder als mit ^ verankerter regulärer Ausdruck.

  • Pepsi-eigene Einstellungen je Liste – list set-ext. Sie sind für die REST-API absichtlich unsichtbar; Mailinglisten erklärt, warum.

69.3. Zwei Dinge, die es absichtlich nicht tut

Es fragt nicht um Erlaubnis. members add meldet eine Adresse ohne Bestätigung an. Genau dafür ist ein Kommandozeilenwerkzeug da – eine Mitgliederliste zu migrieren, einen Fehler zu beheben – und genau deshalb ist es gefährlich: der Bestätigungsablauf existiert, damit eine Adresse belegt, dass sie dort sein will. Diesen Ablauf treiben die -join-Adresse und das Webformular an; hier ist dessen Unterkante.

``owner reset-password`` gibt das Passwort aus, statt es zu versenden. Der Kommandozeilenweg muss funktionieren, wenn die Post kaputt ist, und genau dann greift ein Betreiber danach. Der gewöhnliche Weg, ein Passwort zu ändern, ist der Web-Zurücksetzungsablauf unter /lists/reset, der einen Link versendet.

69.4. Einen Server prüfen

pepsi-list check prüft, was in der Produktion stumm bleibt. Ein falsch gesetztes Stage-Ziel scheitert laut, sobald die erste Nachricht es erreicht; eine Liste ohne Verwalter sammelt einfach zurückgehaltene Nachrichten, die niemand sieht, und eine Liste, die mehr Trigramm-Indizierung verlangt, als der Server erlaubt, bekommt einfach weniger. Jeder Befund trägt eine Abhilfe.

$ pepsi-list check
error: announce@lists.example.org: has no owner
    `pepsi-list owner add announce@lists.example.org <address>`, or set
    [pepsi-list] SITE_OWNER so its notices reach somebody
note: site: archive search: full text and trigram (substring, fuzzy)

69.5. Konfiguration

Siehe den Abschnitt [pepsi-list] in pepsi.conf(5) und Mailinglisten dazu, was jede Option entscheidet.