79. pepsi-quota¶
Postfach-Quotas je Konto verwalten und abgleichen.
79.1. Rolle¶
pepsi-quota ist die Operatorschnittstelle zur Tabelle pepsi.mailbox_quota: den Postfachgrenzen je Konto, die pepsi-stage-relay-to-maildir durchsetzt, und der Belegungsabrechnung, aus der sowohl diese Stage als auch pepsi-ingress arbeiten. Es ist keine Stage.
Jeder Datensatz ist auf das passwd-Login geschlüsselt, nicht auf eine E-Mail-Adresse und nicht auf eine uid. Ein Login ist das, womit pepsi-ingress einen Umschlagempfänger zur RCPT-Zeit vergleichen kann, ohne Aliase aufzulösen — was es nicht darf und auch nicht kann, da die Alias-Abbildung und die passwd-Datenbank zur Zustell-Stage gehören —, und es bleibt ein Datensatz, wenn mehrere Adressen ein Postfach erreichen.
Referenz: pepsi-quota(1).
79.2. Unterbefehle¶
set LOGIN SIZE [
--messagesN] — gibt einem Konto seine eigene Grenze (2G,500M, eine Byte-Zahl odernonefür ausdrücklich unbegrenzt, was der Weg ist, ein einzelnes Konto von einer standortweiten Quota auszunehmen).unset LOGIN — lässt die eigene Grenze des Kontos fallen, sodass es wieder den standortweiten Standardwert erbt. (Nicht dasselbe wie
set … none.)show LOGIN / list [
--full] — die Grenzen und die Belegung eines Kontos oder jedes abgerechnete Konto, älteste Messung zuerst (--fullbeschränkt die Auflistung auf jene, die ihre Grenze erreicht oder überschritten haben).measure LOGIN — vermisst ein Postfach jetzt neu.
reconcile [
--all] — vermisst die Konten neu, die ihre Grenze erreicht oder überschritten haben;--allvermisst auch jene neu, deren Messung lediglich veraltet ist.remove LOGIN — vergisst die Grenzen und die Abrechnung des Kontos; die nächste Zustellung legt den Datensatz neu an.
79.3. Drei Schichten¶
- Richtlinie
[pepsi] MAILBOX_QUOTAist der Standardwert des Standorts (fehlt er, bedeutet das unbegrenzt), je Konto durchpepsi-quota setüberschrieben und dort, wo das Dateisystem eines durchsetzt, durch die Grenze des Kernels weiter verschärft.- Messung
Nur pepsi-helper-maildir-writer(1) kann eine vornehmen: Es ist der einzige Prozess, der zum Benutzer wird, und ein
Maildirhat den Modus0700.measureundreconcileführen es aus; nichts anderes hier berührt ein Postfach.- Schätzung
Die Zähler
used_* + since_*. Pepsis eigene Zustellungen erhöhen sie, und nichts zieht jemals ab, denn nichts sagt Pepsi, wenn ein Benutzer Mail über IMAP löscht.
Die Schätzung ist daher eine obere Schranke der tatsächlichen Belegung, und genau das macht sie als Auslöser sicher — „könnte dieses Konto nahe an seiner Grenze sein? dann messen“ — und als Urteil unsicher. Daher die Regel: Nichts lehnt eine Nachricht auf eine Schätzung hin ab, sondern nur auf eine Messung hin.
79.4. Warum reconcile existiert¶
Ein Konto an seiner Grenze wird von pepsi-ingress bei RCPT abgelehnt. Nehmen Sie an, sein Eigentümer leert danach das Postfach über IMAP. Nichts sagt es Pepsi — und da jede Nachricht abgelehnt wird, läuft nie eine Zustellung, die eine frische Messung vornähme. Das Postfach bliebe für immer geschlossen.
Zwei Dinge verhindern das, und beide werden gebraucht. pepsi-ingress lehnt nur auf eine Messung hin ab, die jünger ist als [pepsi] MAILBOX_QUOTA_MAX_AGE (standardmäßig 15 Minuten), sodass eine veraltete Zahl die Nachricht durchlässt und der Zustellpfad erneut nachsieht. Und pepsi-quota reconcile vermisst die Konten neu, die an ihrer Grenze sind — ein billiger Lauf gerade deshalb, weil es nur diese sind. Das Paket startet es aus pepsi-quota-reconcile.timer (alle zehn Minuten, von pepsi.target per Wants= eingebunden); fügen Sie daneben keinen Cron-Job hinzu. Auf einer Quellinstallation ohne systemd ist das Äquivalent:
*/10 * * * * pepsi pepsi-quota -c /etc/pepsi/pepsi.conf reconcile
79.5. Privilegien¶
Installiert set-group-id auf pepsi-maildir (Modus 2550, Eigentümer pepsi:pepsi-maildir — ausführbar nur für den Eigentümer, sodass kein anderer lokaler Benutzer an das setgid-Bit kommt), aus demselben Grund wie pepsi-stage-relay-to-maildir: measure/reconcile führen den Helper 4750 root:pepsi-maildir aus, und das Dienstkonto pepsi ist bewusst kein Mitglied dieser Gruppe. Als root ausgeführt, gibt es vor dem Verbinden mit der Datenbank die Privilegien auf pepsi ab und behält dabei diese eine Gruppe — sodass sich das Werkzeug von Hand genauso verhält wie aus seinem Timer, wo das setgid-Bit die Gruppe liefert und keine Abgabe stattfindet.
79.6. Siehe auch¶
pepsi-stage-relay-to-maildir, pepsi-ingress, pepsi-status, pepsi-quota(1), pepsi-helper-maildir-writer(1), pepsi.conf(5).