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¶
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.
--listrestreint 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
--listADDRESS Écrit les archives de la liste sur la sortie standard sous forme de mbox
mboxrd, du plus ancien au plus récent.--sinceet--untilprennent des horodatages RFC 3339.- purge
--listADDRESS ID [--forget] Voir ci-dessus.
- expire
--listADDRESS--beforeTIMESTAMP 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 ; voirARCHIVE_RETENTIONci-dessous.- reindex [
--listADDRESS] Reconstruit
search_textettrgm_text. C’est ainsi qu’un changement de palier de trigrammes prend effet, dans les deux sens et sans changement de schéma.- recount [
--listADDRESS] 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 [
--listADDRESS] 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
--listADDRESS [--skip-bad] [--rejectsFILE] [--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-IDmanquant 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é ; unDatemanquant se rabat sur la ligne d’enveloppe mbox ; unSubjectreplié est joint ; etContent-Lengthest 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
--rejectslorsqu’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-badne dise que la perte est attendue. Relancer est sans danger : chaque message est idempotent sur sonMessage-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_TRIGRAMPlafond du site pour le palier de recherche de sous-chaînes :
off,short(par défaut) oufull. Une liste choisit jusqu’à ce plafond avecpepsi-list list set-ext.TOMBSTONE_RETENTIONDuré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_RETENTIONLa rétention des archives du site en jours, appliquée par le balayage de rétention de
pepsi-list tasks --once: learchive_retention_dayspropre à une liste (réglé avecpepsi-list list set-ext) l’emporte,0compris ; une liste qui n’en a pas utilise cette valeur, dont la valeur par défaut est0; et0conserve tout.ARCHIVE_PARTITIONSUtilisé 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).