Skip to main content
Tout ce qu’on peut demander au serveur sans passer par l’API HTTP est une sous-commande 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éfaut default. 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 --yes explicite (pour les scripts).
  • Les commandes de réparation simulent par défaut. dedupe-folders, dedupe-tasks, blob promote-room-blobs et leurs semblables affichent leur plan et ne touchent à rien avant --apply.

La carte des commandes

Serveur & installation

Comptes & organisations

Courrier, filtrage & collaboratif

Conformité

Sécurité & TLS

Stockage & maintenance

Diagnostics

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. blobs 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.

Où s’arrête la CLI

La CLI couvre le provisionnement, la maintenance et la réparation. L’administration des données au quotidien (surcharges de configuration à l’exécution, liste des bannissements en HTTP, vérification de version) existe aussi sur l’API REST d’administration, et les règles de journalisation se gèrent tout autant en JMAP d’administration. CLI et API sont des adaptateurs minces au-dessus de la même orchestration : une opération se comporte à l’identique quel que soit son point d’entrée.