85.1.48. pepsi-archive

search, export, purge and repair the mailing-list archive

Section du manuel:

1

85.1.48.1.1. Nom

pepsi-archive - l’outil de l’opérateur pour les archives des listes de diffusion de Pepsi.

85.1.48.1.2. Synopsis

pepsi-archive [OPTIONS-GLOBALES] search QUERY [–list ADDRESS] [–limit N]
pepsi-archive [OPTIONS-GLOBALES] show LIST MESSAGE-ID|HASH
pepsi-archive [OPTIONS-GLOBALES] export –list ADDRESS [–since TS] [–until TS]
pepsi-archive [OPTIONS-GLOBALES] purge –list ADDRESS ID [–forget]
pepsi-archive [OPTIONS-GLOBALES] expire –list ADDRESS –before TS
pepsi-archive [OPTIONS-GLOBALES] reindex [–list ADDRESS]
pepsi-archive [OPTIONS-GLOBALES] recount [–list ADDRESS]
pepsi-archive [OPTIONS-GLOBALES] rebuild-threads [–list ADDRESS]
pepsi-archive [OPTIONS-GLOBALES] import –list ADDRESS [–skip-bad] [–rejects FILE] [–no-rebuild] FILE…

85.1.48.1.3. Description

pepsi-archive est l’outil en ligne de commande de l’opérateur pour les archives des listes de diffusion. Il se connecte par la section partagée [pepsi-postgres] et, lorsqu’il est lancé en root, continue sous le compte de service pepsi. Il n’est pas setuid et ne doit pas le devenir.

Les archives sont une réimplémentation de HyperKitty de GNU Mailman 3 : leur modèle de données, leurs règles de fils de discussion, leur hachage de Message-ID et leur schéma d’URL sont ceux d’amont, copyright la Free Software Foundation et ses contributeurs, afin que les liens d’archives d’un site migré continuent de fonctionner. Le chapitre Archives du manuel dit à quoi chacun des deux mécanismes de recherche est bon et ce qu’une purge supprime et ne supprime pas.

85.1.48.1.4. Celle pour laquelle il existe

purge est la commande pour laquelle cet outil existe : retirer d’archives publiques un message que quelqu’un a envoyé par accident. Elle supprime le message, ses pièces jointes et ses votes, renumérote le fil, répare les compteurs et écrit une ligne event_log nommant qui l’a fait.

Elle laisse une pierre tombale : le Message-ID, conservé pendant [pepsi-list] TOMBSTONE_RETENTION jours (90 par défaut), durant lesquels les archives refusent de stocker ce message à nouveau. Il n’y a exactement que deux façons pour un message purgé de revenir — une nouvelle remise et un import relancé — et les deux sont des accidents. --forget saute la pierre tombale.

85.1.48.1.5. Commandes

search QUERY

Recherche en tant qu’opérateur, qui voit toutes les listes. --list restreint la recherche, ce qui est à la fois plus rapide (une seule partition) et meilleur (le dictionnaire de langue propre à la liste). La sortie indique quel mécanisme a répondu, et le signale lorsque la liste n’indexe pas les corps de messages pour la recherche de sous-chaînes.

show LIST ID

Affiche un message archivé. ID peut être un Message-ID, un hachage de Message-ID, ou une URL d’archive qui en contient un.

export --list ADDRESS

Écrit les archives de la liste sur la sortie standard sous forme de mbox mboxrd, du plus ancien au plus récent. --since et --until prennent des horodatages RFC 3339.

purge --list ADDRESS ID [--forget]

Voir ci-dessus.

expire --list ADDRESS --before TIMESTAMP

Supprime tout ce qui est antérieur à l’horodatage, par lots. Par lots parce que le prédicat est une date alors que le partitionnement se fait par liste, de sorte qu’il ne peut pas élaguer des partitions : une seule instruction sur une année d’une liste active maintiendrait une longue transaction. La même suppression s’exécute de façon planifiée comme balayage de rétention de pepsi-list tasks --once (l’unité pepsi-list-tasks.timer), pour chaque liste dotée d’une rétention ; voir ARCHIVE_RETENTION ci-dessous.

reindex [--list ADDRESS]

Reconstruit search_text et trgm_text. C’est ainsi qu’un changement de palier de trigrammes prend effet, dans les deux sens et sans changement de schéma.

recount [--list ADDRESS]

Reconstruit les colonnes de compteurs à partir des lignes elles-mêmes. La réparation pour l’unique manière documentée de les casser : écrire directement dans les tables des archives.

rebuild-threads [--list ADDRESS]

Rattache les réponses dont le parent est arrivé après elles, et renumérote chaque fil. Amont laisse ces fils scindés à jamais ; ceci est la réparation.

import --list ADDRESS [--skip-bad] [--rejects FILE] [--no-rebuild] FILE…

Importe un ou plusieurs fichiers mbox dans une liste. La voie universelle, et l’autre moitié de l’aller-retour avec export — qui est le test le moins coûteux possible des deux.

Les réparations sont dans le lecteur, non dans un script séparé dont un opérateur devrait se souvenir : une ligne de corps commençant par From `` ne scinde pas un message (un séparateur doit suivre une ligne vide *et* porter une année à quatre chiffres) ; un ``Message-ID manquant est engendré de façon déterministe à partir des octets mêmes du message, de sorte que relancer un import interrompu produit le même identifiant plutôt qu’un doublon ; <abc@host> (added by postmaster@…) est réparé ; un Date manquant se rabat sur la ligne d’enveloppe mbox ; un Subject replié est joint ; et Content-Length est abandonné, parce qu’il décrivait un découpage qui n’existe plus une fois le message sorti de la mbox.

Les fils sont rattachés et renumérotés à la fin, automatiquement. Sinon, un import dans le désordre les laisse scindés — ce qui arrive avec le mode par lots d’amont, et que personne ne remarque pendant des années.

Un message qui ne peut pas être importé est signalé, dans --rejects lorsqu’un fichier est nommé et sur la sortie d’erreur standard sinon, et la commande se termine avec un code non nul à moins que --skip-bad ne dise que la perte est attendue. Relancer est sans danger : chaque message est idempotent sur son Message-ID, de sorte que la reprise s’appuie sur le contenu plutôt que sur l’horodatage d’un fichier.

85.1.48.1.6. Configuration

[pepsi-list]

SEARCH_TRIGRAM

Plafond du site pour le palier de recherche de sous-chaînes : off, short (par défaut) ou full. Une liste choisit jusqu’à ce plafond avec pepsi-list list set-ext.

TOMBSTONE_RETENTION

Durée de conservation d’une pierre tombale de purge, en jours (90 par défaut). Le balayage qui retire celles qui ont expiré s’exécute dans pepsi-list tasks --once.

ARCHIVE_RETENTION

La rétention des archives du site en jours, appliquée par le balayage de rétention de pepsi-list tasks --once : le archive_retention_days propre à une liste (réglé avec pepsi-list list set-ext) l’emporte, 0 compris ; une liste qui n’en a pas utilise cette valeur, dont la valeur par défaut est 0 ; et 0 conserve tout.

ARCHIVE_PARTITIONS

Utilisé par pepsi-setup(1), qui crée les partitions, et comparé à celles-ci par pepsi-list check. Fixé à l’installation : PostgreSQL n’a pas de repartitionnement en ligne.

85.1.48.1.7. Code de sortie

Non nul en cas d’échec de configuration ou de base de données, ou lorsque le message nommé n’existe pas. Un verbe qui n’a rien trouvé à faire n’est pas un échec.

85.1.48.1.8. Voir aussi

pepsi-list(1), pepsi-stage-list-post(1), pepsi-stage-list(1), pepsi-setup(1), pepsi.conf(5).