oximail. Cette page cartographie la surface ; oximail <commande> --help reste la référence qui fait foi pour les options, et les pages de fonctionnalités expliquent les parcours.
Conventions
--config <chemin>: chaque commande qui touche la base le prend ; défaut/etc/oximail/oximail.toml.--tenant-id <id>(alias--tenant) : défautdefault. Quand une commande prend--account <email>à la place, la recherche par adresse résout sa propre organisation.- Sélection de compte : les commandes acceptent
--account <email>ou--account-id <id>, mutuellement exclusifs. - Les commandes destructrices demandent confirmation. Un
[y/N], sauté seulement par un--yesexplicite (pour les scripts). - Les commandes de réparation simulent par défaut.
dedupe-folders,dedupe-tasks,blob promote-room-blobset leurs semblables affichent leur plan et ne touchent à rien avant--apply. - Un tube fermé termine le verbe comme tout outil Unix. Un verbe qui écrit dans un tube dont le lecteur est parti (
oximail bimi backfill | head) s’arrête sur SIGPIPE, plus sur une panique en sortie 101 ; le serveur lui-même continue d’ignorer le signal.
La carte des commandes
Serveur & installation
| Commande | Rôle |
|---|---|
serve | Lancer le serveur (ce qu’appelle l’unité systemd). |
setup | L’assistant de premier démarrage, en plein écran sur un terminal capable (--tui / --no-tui imposent l’un ou l’autre rendu) ; les sous-commandes dns, dkim, admin, verify, relay-preflight rejouent une étape isolée. |
setup health-timer [--apply] | Installer ou rafraîchir oximail-health.service et oximail-health.timer, qui enregistrent la ronde doctor toutes les 15 minutes sous l’utilisateur du service (doctor --json --record), pour une box installée avant l’existence du timer ; --apply écrit les deux unités et active le timer. |
setup-dkim | Générer une paire de clés DKIM et afficher l’enregistrement DNS. |
firstboot, print-systemd-unit | Aides au provisionnement sans écran. |
setup dns --domain … --hostname … [--cloudflare-api-token-file …] [--replace-mx] [--replace-spf] [--replace-dmarc] [--public-ipv4 auto|forwarded|none] | Relancer l’étape DNS : lit d’abord la zone et ne crée que ce qui manque, sans jamais doubler un enregistrement ; fonctionne sans terminal, où une question sans option qui y réponde garde l’enregistrement existant (code 1) et une IPv4 publique non tranchée arrête tout avant publication (code 2) (publication). |
check-dns | Notation DNS en direct d’un domaine de courrier (authentification) ; --hostname (par défaut [server] hostname) est le nom propre du serveur que ses enregistrements MX, SRV et PTR doivent porter, et un MX de secours n’est interrogé que sur ce dont il a besoin. |
check-config | Valider un fichier TOML sans démarrer le serveur : une clé inconnue est une erreur, une écoute loopback derrière un proxy non reconnu et un MX de secours sans spool de relais sont refusés. |
schema check | Ce binaire accepte-t-il la base ? Sortie 0 oui, 2 plus récente ou illisible ; lecture seule. À lancer avec le binaire précédent avant un retour arrière (exploitation). |
Comptes & organisations
| Commande | Rôle |
|---|---|
account create / create-shared / list | Provisionner les comptes humains et les comptes d’équipe partagés. account create --service déclare un compte de service (un connecteur, pas une personne) : ses octrois ne portent pas d’échéance, doctor ne le compte jamais parmi les départs, et son rôle reste member. |
account set-password / set-role / enable / disable / quota | Cycle de vie et limites. enable --role refuse un rôle que le serveur ne connaît pas, au lieu de dire le compte activé alors qu’il reste bloqué. Sur un compte désactivé, set-role (comme la route REST des rôles et Principal/set en JMAP) est la réouverture : il passe par enable, si bien qu’un compte retenu par une politique est refusé, et que l’annuaire, les mandats et la carte reviennent. |
app-password create|list|revoke | Les mots de passe d’application d’un compte ; create exige --scope, et --read-only fait un mot de passe qui n’ouvre que JMAP, où toute méthode qui écrit répond accountReadOnly quel que soit le périmètre (IMAP, SMTP, CalDAV/CardDAV et SMB le refusent à la connexion). |
account delete [--dsar <ref>] | Mettre en file la machine à phases d’effacement. |
account offboard --account … --forward-to … [--grant-mailbox-to … --grant-until DATE] [--apply] | Un départ en une commande : gel complet (jetons révoqués, envois programmés annulés, iTIP purgé), l’adresse redirigée vers un collègue par un alias exact qui prime sur le compte gelé à la livraison et n’expire jamais de lui-même, un droit de lecture optionnel sur la boîte pour le successeur (au plus un an), et les groupes de distribution dont le partant est membre nommés, pas modifiés. Avec --grant-mailbox-to, le verbe rappelle que l’accès ouvre chaque dossier du courrier du partant, un dossier privé compris, et renvoie au droit du lieu où vous exploitez (privacyReminder, et privacyReminderNational quand une variante nationale en porte un). Simulation par défaut, --json pour la supervision. |
account grant --owner-email … --grantee-email … --collection … --level readOnly|readWrite [--until DATE] [--apply], account revoke | La délégation par l’exploitant d’une collection entière d’un compte à un autre (octrois de compte) : sous [rights] enforce, elle ouvre chaque objet de la collection, en JMAP seulement, et le verbe le dit (opensObjects, faces en --json). --collection Contact est refusé, puisque JMAP ne sert aucun contact sur un compte partagé. Simulation par défaut ; revoke est gardé par --yes. |
account custodian show|reattach | La garde des drives partagés. |
account import --from-backup <dépôt> --identity <fichier> --account <adresse> [--into <adresse>] [--apply] | Ramener d’une sauvegarde le courrier, les contacts, les événements, les tâches, les fichiers du Drive et les notes d’un compte, à côté de ce qu’il contient, sous Restored <jour> (sans hyperviseur). Simulation par défaut. |
account relay add-domain|verify|list|remove-domain|mint-token|revoke-tokens | Les comptes de relais smarthost : les domaines prouvés du tenant pour lesquels un compte relais peut émettre, et les jetons d’enrôlement à usage unique. |
account envelope-domain add|verify|list|remove | Les grants de domaine d’enveloppe (Return-Path différent du From, prouvés par le MX du domaine qui nomme ce serveur). Les deux verbes list montrent en stale un domaine prouvé une fois mais non revérifié depuis 72 heures, et leur --json porte last_verified_ok_at et proof_stale. |
account signing-domain add|verify|list|remove | La signature DKIM déléguée : le relais signe d= le domaine exact du client derrière deux CNAME que celui-ci publie. add est une simulation tant qu’il n’a pas --apply, remove exige --yes, verify sort en 1 tant que la clé ne signe pas ; verify et list acceptent --json. |
account flow create|list|show|set-app-password|set-pool|suspend|resume|delete | Les flux d’envoi : l’unité qui envoie, choisie par l’identifiant de la session. Tout verbe qui écrit est une simulation tant qu’il n’a pas --apply (--yes pour suspend et delete) ; set-pool nomme le pool de sortie d’où part son courrier, --none pour l’adresse par défaut. |
account dedupe-folders / dedupe-tasks | Réparations d’après migration (travail collaboratif). |
tenant create|update|list|delete | Les organisations ; update --default-timezone règle le fuseau de repli du calendrier, update --default-language en|fr|de|it (ou --clear-default-language) la langue dont hérite un compte (multi-tenant). delete ne retire qu’une organisation vide : simulation par défaut, --force supprime, et une organisation qui porte encore des comptes ou des blobs de locataire est refusée quels que soient les drapeaux (sortie 2). |
tenant add-domain --tenant-id … --domain … [--kind web|mail|both|send] [--primary] / tenant remove-domain --domain … --yes | Rattache un domaine à une organisation. --kind send désigne un domaine qui sert à envoyer (un sous-domaine de newsletter ou de bounce) : il n’héberge aucune boîte et n’a besoin ni de MX ni des noms d’autoconfiguration. Une preuve de domaine d’envoi (relais, return-path, DKIM délégué) ne peut être déclarée que sur un domaine enregistré ici, et un domaine qui porte des preuves n’est pas retiré sous elles (relais sortant, envoi en masse). |
tenant identity show|set | L’identité légale déclarée de l’organisation : nature, raison sociale, adresse postale, pays et subdivision d’établissement, autorité de contrôle, contacts ; show donne chaque valeur effective avec sa provenance, set remplace les champs qu’il nomme (--clear <champ>), simulation par défaut, --apply écrit une ligne d’audit. |
admin, alias, rights, token, sessions | Principals d’administration, alias d’adresses, inspection des droits, gestion des tokens et des sessions. rights explain --object … --account … liste les droits qu’un octroi de compte donne sur cet objet, par la traduction même du serveur, rights audit signale une ligne d’octroi écrite en admin avec le niveau appliqué (appliedLevel). |
admin organization list|set|create|set-entity | Les entités du locataire (les employeurs qu’une carte de profil peut citer) : list classe les organisations que portent les cartes (saisie libre, références saines, références pendantes) et montre l’état du compte derrière chaque carte, set rattache une graphie libre à une entité, set-entity --group <id> --value true|false déclare ou retire une entité, create --tenant-id … --name … [--email …] crée un groupe déjà déclaré entité, avec son propre compte d’adossement et, sans --email, une adresse générée qui ne reçoit rien tant qu’on ne l’active pas. Simulation par défaut, --apply écrit. |
admin contact normalize-phones [--tenant-id …] [--limit N] [--apply] [--json] | Met sous leur forme internationale les numéros de téléphone déjà rangés, la forme que tous les écrivains rangent désormais : un numéro national seulement dans une organisation qui a déclaré son propre pays, un numéro non valide jamais. Le rapport compte par forme et n’affiche jamais un numéro ; il nomme ce qu’il a laissé tel qu’écrit (foreignLayout, ambiguous, severalNumbers, …). Simulation par défaut ; --apply écrit chaque fiche dans une transaction avec sa version d’historique et sa ligne de changement, et --limit compte les fiches écrites (1000 par défaut). Sort en 1 tant qu’il reste des numéros ou qu’une fiche a échoué. doctor contact_phone_form avertit tant qu’il en reste. |
admin instance identity show|set | Qui exploite l’instance, les pays où ses données sont traitées (--processing-country, celui du serveur principal d’abord) et le fondement de chaque transfert (--transfer-basis CC=fondement) : les faits dont hérite chaque organisation qui ne déclare pas les siens. Écrits à la console seulement ; la simulation liste les organisations dont l’identité effective changerait. |
admin instance grant|revoke|list | Les opérateurs d’instance, les comptes qui peuvent lire le relevé de santé périodique à travers tous les locataires de la box : grant --account … --by <nom> est refusé pour un compte qui n’est pas un administrateur humain de son locataire ou qui n’a pas de passkey, revoke prend effet sous 30 s ; simulation par défaut, --apply écrit. La console est le seul point d’écriture. |
principal-reconcile | Un coup hors ligne : refrapper les identifiants de principal de la cohorte d’import héritée (--dry-run accepté). |
Courrier, filtrage & collaboratif
| Commande | Rôle |
|---|---|
mailbox, email | Inspecter et gérer dossiers et messages. mailbox recount --account … | --all recalcule les compteurs des dossiers à partir du courrier stocké ; email reindex-bump [--all] met des messages en file pour le worker de réindexation, qui recalcule leur aperçu et leur document de recherche (par défaut ceux qui n’ont pas d’aperçu, tous avec --all ; --unindexed marque à indexer, pour le rattrapage du serveur en marche, les messages absents de l’index validé). email normalize-received-at réécrit les dates de réception qu’un ancien import a stockées dans un autre format que RFC 3339 UTC (elles passaient devant le courrier du jour dans une boîte triée du plus récent au plus ancien) ; simulation par défaut, --apply écrit, sortie 1 quand une valeur n’a pas pu être lue. email backfill-encrypted [--account …] [--apply] donne le mot-clé $encrypted aux messages chiffrés remis avant que le serveur le pose (mots-clés). |
smime verify|backfill | Les signatures S/MIME reçues : backfill marque les messages stockés avant que la vérification existe pour que le serveur en marche les vérifie, verify les revérifie après un changement du magasin de confiance. Toute la box, ou un seul --account ; simulation par défaut, --apply écrit. |
bimi backfill --account … | Donner aux messages déjà en boîte le logo de marque que le résolveur leur aurait donné (configuration) ; simulation par défaut. |
rule | Les règles de filtrage du compte. rule forward-confirmation list --address … trouve chaque confirmation d’une destination de transfert dans toutes les organisations, avec l’empreinte que portent les lignes d’audit ; revoke --address … --apply les supprime et bloque l’adresse pour de bon, à la demande de son titulaire (transférer vers une adresse confirmée). |
queue | La file de remise sortante : lister, inspecter, annuler. |
spam | Corpus et modèle anti-spam, plus le spam check en lecture seule (anti-spam). |
calendar | Verbes de maintenance des agendas. |
migrate | L’outil d’import (--from-imap, --from-jmap, --from-dump, --from-mbox, --from-google-takeout, --from-vcf, --from-ics). |
Conformité
| Commande | Rôle |
|---|---|
journaling list|add|remove|enable|disable | Les règles de journalisation. |
erasure list|undo|prove|replay | Les travaux d’effacement, le tampon de réversibilité, la preuve DSAR, et le rejeu du registre des effacements après une restauration (à blanc par défaut, --apply ; sortie 1 tant que des personnes effacées sont revenues). L’enregistrement d’achèvement que lit prove --dsar vit douze mois ; quand il ne trouve rien, le verbe nomme les trois lectures (pas encore achevé, lancé sans --dsar, ou achevé puis purgé, la tombstone restant sans référence). |
audit-log list|verify|attest | Le journal d’administration : chaque acte d’administration, chaîné par compte et dans la chaîne propre du locataire. |
access-log list|verify | Le journal des accès aux données (activé par locataire) : qui a lu, partagé ou exporté les données d’une autre personne. |
journal list | Les deux journaux lus ensemble, du plus récent au plus ancien, pour une personne : sélection par --account, par --object-type et --object-id, ou par --actor avec --since. Chaque ligne indique son journal, les comptes par leur adresse, l’adresse du client et la session d’appareil. La commande ne prouve rien : ce sont les deux verbes verify qui le font. |
Fédération
Les verbes de la fédération. Chacun de ceux qui écrivent est une simulation tant que--yes (identité, pairs, grants) ou --apply (partages, miroirs) n’est pas passé ; --tenant est nécessaire quand la box héberge plusieurs organisations.
| Commande | Rôle |
|---|---|
federation identity [--realm <domain> --custody <labels>] | Affiche l’identité de cette organisation : les empreintes de racine, la juridiction (son pays d’établissement déclaré) et l’empreinte de transport de [federation]. La première exécution avec --realm est toute la cérémonie : elle crée les racines sœurs (--roots, de 2 à 5, trois par défaut), affiche leurs clés papier une seule fois, et certifie une clé de travail (--valid-days, 365). |
federation pair --realm … --key … --jurisdiction CC [--endpoint … --tls-pin … --address …] --transport-fingerprint … --yes | Épingle une organisation pair : chaque racine qu’elle a lue (--key se répète), sa juridiction, son point d’entrée et ses épingles TLS, une adresse de tunnel facultative. --yes est refusé tant que l’empreinte de transport lue par l’autre administrateur n’est pas confirmée. |
federation peers list|unpair|suspend|resume | Les appairages, avec leur état et le transport enregistré ; unpair suspend sans jamais supprimer, suspend --cause nomme le fait qui manque, resume ne lève qu’une rupture administrative. |
federation grants list|revoke | Les grants de disponibilité, avec leur dernière utilisation ; un administrateur peut en révoquer un (--id), jamais en créer. |
federation shares add|list|remove | Partage un dossier ou un fichier du Drive, en lecture, avec une organisation appairée (--owner-email ou --owner-account-id, --path ou --node, --realm, --expires-at facultatif) ; refus nommés (drive-root, node-trashed, peering-not-active, already-shared, …). --json sur chacun. |
federation mirror add|list|remove | Le compte miroir qui montre, en lecture seule, ce qu’une organisation appairée partage avec ce serveur (--email, --realm, --display-name) ; remove retire la capability et garde le compte. |
federation working-key rotate|repair | Fait tourner la clé de travail avec une clé papier de racine lue sur l’entrée standard ; repair --realm … recertifie une identité dont la chaîne ne se vérifie plus. |
federation roots enrol|retire|delete | Ajoute une racine sœur (--custody), retire une racine compromise (--root ; son séquestre est effacé), ou supprime toute l’identité (--tenant-id … --realm …, après quoi chaque pair épingle de nouveau). |
Sécurité & TLS
| Commande | Rôle |
|---|---|
ban list|add, unban <ip> | Le fail2ban intégré au binaire. |
cert, dane, dkim, tls-rpt, vapid | Certificats, enregistrements TLSA, clés DKIM, TLS-RPT, clés de push web. |
resolver check [--json], resolver ensure [--apply] | Le résolveur validant local de la machine (authentification) : check exécute la sonde même du serveur, serveur arrêté ou non (code 0 fiable, 1 non mesuré, 2 non fiable ou muet) ; ensure compare la configuration d’unbound à celle qu’écrit ce binaire, et --apply la réécrit (identité conservée) et redémarre unbound. |
dane suspend [--for <span> --reason <text> | --end] [--yes] | Tant que le résolveur n’est pas prouvé, le courrier vers les domaines connus pour utiliser DANE attend ; --for (1m à 7d) le laisse partir sans DANE, chaque remise journalisée ; --end y met fin ; sans option, affiche l’état. Essai à blanc sans --yes. |
dane rotate | Changer la clé TLS servie sans fenêtre d’échec DANE : --apply met une clé neuve en attente et publie son épingle 3 1 1 à côté de l’actuelle (fournisseur cloudflare ou rfc2136 avec DANE actif), ou affiche les enregistrements à publier à la main ; le serveur bascule quand l’épingle est visible dans le DNS public sur chaque port épinglé (les ports SMTP 25/465/587, le 25 seul sur un MX de secours) depuis deux TTL. Relancée, la commande montre où en est la rotation, --cancel --apply l’abandonne avant la bascule. Exige [tls] acme_enabled. Sortie 0, 1 quand l’épingle n’est pas publiée sur tous les ports, 2 refus ou échec (TLS & ACME). |
key | Opérations sur les clés au repos (rotation, exercice de séquestre) : voir chiffrement au repos. key escrow --guided rejoue la cérémonie de récupération de l’assistant sur une box installée (la clé de secours montrée une fois, retapée, l’exercice enregistré, la commande scp qui emporte le blob hors de la box) ; key upgrade-escrow --yes transforme un séquestre v1 en un séquestre qui porte aussi le secret d’instance, sous la même clé de secours ; key adopt-identity --yes accepte un secret d’instance changé que doctor a signalé. |
config get-override|list-overrides|set-override|clear-override | Les surcharges d’exécution par locataire (ADR-007) : lire une clé, tout lister, poser (simulation par défaut, --apply ; la valeur est typée JSON, et le verbe imprime le type obtenu pour qu’une chaîne "true" ne soit jamais prise pour un booléen), retirer. Locataire inconnu refusé avant la simulation ; une valeur que l’API d’administration refuserait (un horizon de corbeille hors bornes, des jours négatifs, un interrupteur non booléen, un mode d’espace de noms IMAP inconnu) l’est aussi, simulation comprise, sortie 2 avec les mêmes details (configuration). |
config externalize-secrets | Déplace les secrets encore écrits en ligne dans le TOML ([srs] secret_key, previous_secret_key, [meet] turn_shared_secret) dans des sidecars 0600 propriété de l’utilisateur du service et réécrit chaque ligne sous sa forme _file ; le serveur refuse de démarrer sur un secret en ligne. Simulation par défaut, --apply écrit après avoir sauvegardé le TOML ; un sidecar existant qui porte une autre valeur n’est jamais écrasé ; le résultat est revérifié par tous les validateurs de démarrage (configuration). |
hash-password | Un hachage Argon2id pour les fichiers de configuration. |
passkey list|revoke | Lister et révoquer les passkeys WebAuthn d’un compte : la porte hors bande quand c’est le webmail lui-même qui est compromis. |
Stockage & maintenance
| Commande | Rôle |
|---|---|
backup, restore, verify-backup | Les sauvegardes ; restore refuse une sauvegarde faite par un binaire plus récent et un blob scellé d’avant ADR-148. Sans hyperviseur : backup --to <dépôt> (un répertoire ou s3://bucket/préfixe sous Object Lock, vérifié avant chaque passage ; chiffré en age, incrémental ; --recipient, --dry-run, --json), restore --from <dépôt> --identity <fichier> [--expect-sha256 <hash>] [--with-config], verify-backup --from <dépôt> [--identity <fichier>] [--full [--record]] (sans hyperviseur). |
backup prune --repository <dépôt> --identity <fichier> [--keep-daily|--keep-weekly|--keep-monthly N] [--apply] | Appliquer une rétention à un dépôt de sauvegarde, là où vit l’identité (jamais sur la box). Simulation par défaut. |
backup key generate --out <fichier> [--apply] | Écrire l’identité age qui ouvre les sauvegardes de cette box (0600, jamais sur un fichier existant), avec la clé d’authentification des instantanés de la box ; la sortir de la box. |
backup mark --source hypervisor|external [--apply] | Enregistrer qu’un tiers a pris une copie de la box (l’instantané de l’hyperviseur, depuis son hook vzdump en backup-end, ou un autre outil de l’hôte), dans le marqueur que lit doctor backup_plan. Simulation par défaut. |
relay-spool init|gc|reabsorb | Le spool du relais : créer sa racine sur le volume monté, collecter les orphelins (simulation par défaut), le retirer. |
drive share | Accorder ou révoquer des droits sur un dossier ou fichier du drive d’une équipe vers un principal (le compte de service d’un scanner), simulation par défaut ; account grant --collection FileNode ouvre tout le drive, ce verbe ouvre un nœud. rights audit voit aussi les fichiers. |
drive purge-trash | Détruire ce que la corbeille du Drive garde au-delà d’un horizon, la seule sortie que le balayage des corbeilles emprunte aussi, en respectant les séquestres et en annonçant ce qu’il a retiré. Sans --days, l’horizon propre à chaque locataire, comme le balayage : sa surcharge drive.trash_retention_days, à défaut [drive] trash_retention_days (30) ; une surcharge à 0 ne purge rien. --days fixe un seul horizon pour toute la portée, 0 vide la corbeille. --json ajoute horizonSource (flag ou policy) et tenantHorizons (horizons par locataire). Les quatre autres corbeilles (tâches, contacts, événements, notes) passent par la même sortie. |
tenant update --max-file-versions N | Rétention des versions de fichiers par locataire, appliquée à chaud (10 par défaut, 0 désactive l’historique, plafond d’instance 100). |
calendar availability, calendar backfill-end-dt | Rejouer une réponse de disponibilité pour un incident ; donner aux événements antérieurs leur fin stockée (agenda). |
reindex [--tenant <id>] [--json] | Reconstruire l’index plein texte à partir du courrier, des notes et des messages de chat stockés (les contacts ne sont pas indexés), serveur arrêté : refusé tant qu’un serveur tient l’index. Règle d’abord tout index mis de côté par une reconstruction précédente, puis indexe par lots de 2 048 lignes ; --tenant garde l’index et réécrit les documents de ce tenant. Code 0 terminé, 1 des lignes restent dues, 2 refusé ou en échec (l’index de recherche). |
blob | Maintenance des blobs : verify (--walk part du disque, --quarantine marque un fichier dont l’empreinte ne donne plus le nom), le ramasse-miettes des blobs non référencés blob gc (simulation par défaut, --apply supprime, serveur arrêté), promote-room-blobs. |
sql | Une échappatoire SQL gardée sur la base SQLite ordinaire. |
backfill-*, decode-attachment-names | Remplissages en un coup pour les colonnes nées après les données. |
volume-recover, rollback-guard | Gardes de reprise après sinistre. |
chat-rekey | La mécanique de rechiffrement des identités de chat. |
chat | Maintenance du chat : purge-trash et restore-room pour la corbeille des salons (restore-room --from-backup prend un data.db ou un dépôt de sauvegarde avec --identity) (purge-trash sans --days applique l’horizon de chaque locataire comme drive purge-trash, avec chat.trash_retention_days), recount, scan-hrefs. |
Diagnostics
| Commande | Rôle |
|---|---|
status, health, doctor | Contrôles locaux : processus, ports, configuration, stockage, santé de l’horloge comprise. doctor charge les sections d’extension, présente le jeton des métriques à /metrics, vérifie chaque chaîne d’audit, mesure le volume (at_rest), le spool du relais, l’horizon des changements d’heure et les reliquats de rotation ; une extension peut ajouter des contrôles à la même ronde au lieu d’en ouvrir une seconde. doctor --json donne à chaque contrôle sa family, ses facts datés et, sur un avertissement ou un échec, le verbe remedy (exploitation) ; --reachability ajoute les sondes réseau ; --record stocke la ronde pour HealthReport/get (le travail du timer, refusé en root). |
telemetry status|enable|disable|purge|id | Les rapports communautaires : status [--json] affiche octet pour octet le dernier rapport envoyé et sort en 1 quand le canal ne peut pas fonctionner (aucune réponse enregistrée, dernier envoi en échec, retrait, point d’envoi refusé) ; enable [--crashes-only] et disable enregistrent la réponse, --apply écrit, sans redémarrage ; purge --apply demande au récepteur d’effacer ce que cette installation a envoyé ; id --show-id affiche l’identifiant que portent les rapports. |
setup verify | Sortie 0 / 1 dégradé / 2 en échec ; nomme qui renouvelle le certificat et ce que la box doit joindre. |
log level, log elevate --directives … --duration-secs N, log revert | Le niveau de journalisation en vigueur, une élévation bornée (60 à 3600 s, qui revient d’elle-même), le retour anticipé. Ces verbes exigent le serveur en marche : le niveau est un état du processus, pas une donnée sur disque. log tail rend le journal une ligne lisible par événement, clé d’épisode d’abord, et lit journald à la place. |
log trace --account … | --peer-ip … --duration-secs N, log trace-status, log trace-stop | Le projecteur de trace protocolaire (ADR-140 R2) : un compte ou un pair, 60 à 900 s, 0600 sur le tmpfs, caviardé, purgé à l’arrêt (API d’administration). |
erasure list --json | Chaque travail d’effacement avec sa phase, ses horodatages, son erreur et ses compteurs persistés (champs additifs) ; une erreur de lecture du magasin sort en 2. |
Deux comportements des verbes de maintenance
sql route sur la forme du statement, pas sur son premier mot. Il reniflait auparavant le préfixe : une CTE, WITH ... SELECT, était donc prise pour une mutation, exécutée, ses lignes jetées, et rapportée en 0 rows affected. Un statement qui retourne des données rapporté comme une écriture réussie est exactement l’échec muet que ce projet interdit, et c’est plus grave encore sur un verbe auquel les scripts font confiance. Chaque statement est désormais préparé puis routé selon qu’il retourne des colonnes, ce qui rend correct au passage VALUES, EXPLAIN et INSERT ... RETURNING, tandis qu’un WITH ... INSERT reste sur le chemin d’écriture et se voit compté. Une entrée multi-statements garde la sémantique de lot (tout s’exécute, arrêt à la première erreur, les écritures antérieures tiennent) et compte désormais par statement. Les lignes de résultat vont sur stdout, les comptages sur stderr : la sortie reste redirigeable.
blob gc ne collecte pas un blob non référencé récent. Entre le téléversement d’un client et le /set qui le nomme, un blob est non référencé par protocole (RFC 8620 §6.1). Le ramasse-miettes ignore tout ce qui est non référencé et plus jeune qu’une fenêtre de grâce de 24 heures, lue sur l’horodatage du fichier lui-même : un horodatage illisible ou situé dans le futur conserve le fichier. Le résumé compte séparément les « non référencés mais en grâce », pour que le nombre soit visible au lieu d’être sous-entendu.