#pApiAuth
nextxch-cli リファレンス: コマンド、スキーマ キャッシュ、jq クエリ & GitOps IaC
nextxch-cli を使用すると、ドメイン、メールボックス、配布リスト、エイリアス、スコープ付き API キー、送信 SMTP ルート (TLS オーバーライドを含む)、IP ウォーミング、Reputation Shield、DNS ゾーンを、ターミナルや CI/CD パイプライン (Ansible、GitLab CI、GitHub Actions) から直接管理できます。0 ms のクラスター ホット リロードで、再起動は不要です。
初期状態で PATH にプリインストール: Windows の .msi インストーラー (C:\Program Files\nextxch\nextxch-cli.cmd)、Debian/Ubuntu の .deb パッケージ (/usr/bin/nextxch-cli)、install.sh (/usr/local/bin/nextxch-cli)、OCI イメージのいずれも nextxch-cli を自動的に登録します。シークレットがプロセス引数に現れないよう、資格情報は必ず NEXTXCH_API_KEY (または NEXTXCH_TOKEN) で渡してください。
1. 呼び出し、環境変数、認証 & 終了コード
メール ホスト上でも、任意の管理用ワークステーションや CI ランナーから HTTPS 経由でリモートでも、まったく同じように動作します。
# Linux / macOS / GitLab CI / GitHub Actions:
export NEXTXCH_URL="https://mail.firma.de"
export NEXTXCH_API_KEY="smk_01968f2a_..." # Alias: NEXTXCH_TOKEN
# PowerShell (Windows Server / Admin-Workstation):
$env:NEXTXCH_URL = "https://mail.firma.de"
$env:NEXTXCH_API_KEY = "smk_01968f2a_..."
# Docker-Host ohne lokalen Wrapper (direkt im Container):
docker exec -i nextxch nextxch-cli describe
# Interaktive Erst-Anmeldung vor dem ersten API-Key (fragt Passwort verdeckt ab, nur ohne 2FA):
nextxch-cli --url https://localhost --insecure -u admin@firma.de create ApiKey \
--set label="Ansible Prod" --set role=ServerAdmin --set allowedCidrs=10.0.0.0/8 --set expiresInDays=90
# Hilfe zu jedem Unterbefehl direkt im Terminal + definierte Exit-Codes für Skripte:
nextxch-cli --help
nextxch-cli help create
# Exit-Codes: 0 = Erfolg · 1 = HTTP-/Auth-/Server-Fehler · 2 = Ungültige CLI-Parameter / JSON
2. スキーマの検出 (describe)、フィルター付きクエリ (query) & jq パイプライン
--json を指定すると、get は 1 つのコンパクトな JSON オブジェクトを出力し、query は jq や PowerShell でそのまま処理できる改行区切り JSON (NDJSON) をストリーミングします。
# Alle 12 verfügbaren Objekttypen oder die Felder eines einzelnen Typs anzeigen:
nextxch-cli describe
nextxch-cli describe Route
nextxch-cli describe TransactionalSend
# Einzelnes Objekt oder globale Singleton-Konfiguration lesen:
nextxch-cli get Domain firma.de
nextxch-cli get SmtpQueue --json | jq '{paused: .outboundQueuePaused, tls: .outboundTlsCertValidation}'
# Gefilterte Tabellen-Abfrage mit Spaltenprojektion:
nextxch-cli query Account --filter domain=firma.de,isActive=true --fields email,role,quotaMb,twoFactorEnabled
# NDJSON-Pipeline (Bash + jq): Alle aktiven Admin-Konten ohne 2FA auflisten:
nextxch-cli query Account --filter isActive=true --json \
| jq -r 'select(.role != "User" and .twoFactorEnabled == false) | "\(.email)\t\(.role)"'
# PowerShell-Pipeline auf Windows Server: Postfächer > 80 % Quota finden:
nextxch-cli query Account --json | ForEach-Object { $_ | ConvertFrom-Json } |
Where-Object { $_.quotaMb -gt 0 -and ($_.usedBytes / 1MB) -gt ($_.quotaMb * 0.8) } |
Select-Object email, quotaMb, @{N="UsedMB";E={[math]::Round($_.usedBytes/1MB,1)}}
3. オブジェクトの作成、パッチ適用と削除 (create、update、delete · @file.json & stdin)
スカラー、ブール値、数値、カンマ区切りの配列は --set key=value で自動的に変換されます。入れ子の JSON ペイロードは --data @file.json または stdin (-) で渡します。
# 1. Domain mit Dual-DKIM (RSA-2048 + Ed25519) und 10 Jahren GoBD-Aufbewahrung anlegen:
nextxch-cli create Domain \
--set name=firma.de \
--set dkimSigningMode=Dual \
--set retentionLockMode=Compliance \
--set retentionDays=3650
# 2. Benutzerpostfach, Verteilerliste & Datenschutz-Alias anlegen:
nextxch-cli create Account/User --set email=buchhaltung@firma.de --set displayName="Buchhaltung" --set password='...' --set quotaMb=15360
nextxch-cli create Account/List --set email=rechnung@firma.de --set members=buchhaltung@firma.de,archiv@firma.de
nextxch-cli create Alias --set address=info@firma.de --set target=buchhaltung@firma.de --set description="Zentrale"
# 3. Scoped API-Key für Webshop/ERP (nur /api/v1/send, feste Absenderadresse & Subnetz-Filter):
nextxch-cli create ApiKey \
--set label="Shopware Produktion" \
--set role=User \
--set senderAddress=bestellung@firma.de \
--set defaultCategory=transactional \
--set allowedCidrs=10.20.0.0/16,198.51.100.12/32 \
--set expiresInDays=180
# 4. Ausgehende Route / TLS-Ausnahme für Partner-MX mit RemoteCertificateNameMismatch (Auto DNS-MX):
nextxch-cli create Route --set domain=neff.me --set tlsMode=StartTlsIgnoreCert --set description="Shared-MX TLS Override"
# 5. IP-Warming & Reputation Shield aktivieren oder JSON per Pipe (stdin) übergeben:
nextxch-cli update TransactionalSend --set preset=warming_28d
nextxch-cli update ReputationShield --set preset=recommended
echo '{"junkScoreThreshold":4.2,"clamAvEnabled":true}' | nextxch-cli update SpamGuard --data -
4. ライブ DNS チェック、BIND ゾーン エクスポート & 宣言型 GitOps (snapshot & apply --dry-run)
.ndjson プランの各行はべき等な操作 (upsert または delete) を表します。Git のコード レビュー向けに # と // のコメントがネイティブにサポートされています。
# Öffentliche DNS-Einträge live gegen die konfigurierten DKIM/DMARC/TLSA-Werte prüfen & als BIND-Zone speichern:
nextxch-cli dns firma.de --live
nextxch-cli dns firma.de --bind --output firma.de.zone
# Aktuellen Serverzustand als versionierbaren NDJSON-Plan exportieren (ohne Geheimnisse für Git):
nextxch-cli snapshot Domain Account Alias Route TransactionalSend ReputationShield --output infra/mail-prod.ndjson
# Beispiel für deklarative Zeilen in infra/mail-prod.ndjson (inkl. Kommentaren & gezieltem Löschen):
# {"op":"upsert","type":"Domain","key":"firma.de","fields":{"name":"firma.de","dkimSigningMode":"Dual","retentionDays":3650}}
# {"op":"upsert","type":"Route","key":"neff.me","fields":{"domain":"neff.me","tlsMode":"StartTlsIgnoreCert","enabled":true}}
# {"op":"delete","type":"Alias","key":"alt-kampagne@firma.de"}
# CI/CD Pull-Request Check (verändert NICHTS in der Datenbank, Exit-Code != 0 bei Fehlern):
nextxch-cli apply --file infra/mail-prod.ndjson --dry-run
# Nach Freigabe idempotent auf Produktion anwenden:
nextxch-cli apply --file infra/mail-prod.ndjson
設定、既定値 & ベスト プラクティス
| 設定 / 場所 | 説明 | 既定値 | 本番環境のベスト プラクティス |
|---|---|---|---|
Globale Flags & Umgebungsvariablen |
サーバー URL (--url / NEXTXCH_URL)、API キー (--api-key、--token / NEXTXCH_API_KEY、NEXTXCH_TOKEN)、Basic 認証 (-u/-p)、JSON モード (--json)、検証環境用 TLS (--insecure / -k)、色 (--no-color / NO_COLOR)、HTTP トレース (--debug / NEXTXCH_DEBUG=1) を制御します。 | URL: http://localhost |
自動化スクリプトでは必ず NEXTXCH_URL と NEXTXCH_API_KEY をエクスポートし、--json を指定してください。--insecure (-k) はローカルのステージング ラボに限って使用してください。 |
describe [Type] (Schema & Offline-Cache) |
12 種類のサーバー オブジェクトすべてを一覧表示するか、特定のオブジェクトのすべてのフィールド、型、列挙値を確認します。スキーマは X-Nextxch-Schema-Version に基づいてローカルにキャッシュされます。 | Lokaler XDG/AppData-Cache |
新しいポリシーをスクリプト化する前に nextxch-cli describe <Type> を実行してください (例: nextxch-cli describe TransactionalSend)。最低限必要なロール: ComplianceAuditor。 |
get <Type> [IdOrName] [--json] |
名前、メール、スラッグ、または GUID で単一のコレクション オブジェクトを取得するか、グローバルなシングルトン ポリシーを読み取ります ('singleton' は自動的に推定されます)。 | Kartenansicht / 1-Zeilen-JSON |
シングルトンの場合は ID を省略します: nextxch-cli get SpamGuard または nextxch-cli get ReputationShield --json。 |
query <Type> (Alias: list) |
カンマ区切りの AND フィルター (--filter k=v,k2=v2)、列の射影 (--fields a,b,c)、--limit N でコレクションを検索します。--json を指定すると厳密な NDJSON (1 行に 1 つの JSON オブジェクト) を出力します。 | Tabelle / NDJSON-Stream |
セキュリティ監査に最適: nextxch-cli query Account --json | jq -r 'select(.twoFactorEnabled==false) | .email' で 2FA 未設定のアカウントを一覧表示します。 |
create <Type[/Variant]> & update <Type> (Alias: patch) |
新しいコレクション項目を作成するか、既存のオブジェクト / シングルトンの個々のフィールドを、変更しないプロパティを上書きせずに更新します (0 ms のクラスター ホット リロード)。 | --set k=v · @file.json · stdin |
スカラー / 配列フィールドは --set key=value (配列はカンマ区切り) で、複雑な入れ子のポリシーは --data @policy.json または標準入力 (--data -) で渡します。 |
delete <Type> <IdOrName> (Alias: rm) |
ドメインやアカウントを安全にソフト無効化し、セカンダリ エイリアスやカスタム ルートを削除し、スコープ付き API キーを即座に失効させます。 | Schutz vor Selbstlöschung |
組み込みのロックアウト ガードにより、現在認証に使用している API キーや管理者プリンシパルは削除できません。 |
dns <Domain> [--live] [--bind] [-o Datei] |
MX、SPF、Dual-DKIM (RSA-2048 + Ed25519)、DMARC、MTA-STS、DANE TLSA、BIMI を公開 DNS に対してライブで検証するか、RFC 1035 形式の BIND ゾーン ファイルをエクスポートします。 | Advisor-Tabelle / BIND-Zone |
ドメインを作成した直後に nextxch-cli dns company.com --bind -o company.com.zone を実行すると、コピー アンド ペーストによる入力ミスなしですべてのレコードをきれいにインポートできます。 |
snapshot & apply --dry-run (GitOps IaC) |
snapshot はサーバーまたはテナントの状態全体を順序付きの NDJSON 操作としてエクスポートし、apply はプラン (# および // コメントに対応) をべき等に実行します。 | Atomarer Zeilen-Bericht |
CI/CD のデプロイは必ず nextxch-cli apply -f plan.ndjson --dry-run を通過条件にしてください (無効なエントリがあると、正確な行の診断情報とともに終了コード 1 で終了します)。 |
Sammlungen: Tenant, Domain, Account, Alias |
テナント (ServerAdmin)、Dual-DKIM キーを自動生成するドメイン、ユーザー メールボックス (Account/User)、配布リスト (Account/List)、エイリアス (isMasked を含む) を管理します。 | Rolle: TenantAdmin+ |
create Domain --set dkimSigningMode=Dual を実行すると、RSA-2048 と Ed25519 の両方のキー ペアが即座に自動生成されます。 |
Sammlungen: ApiKey & Route (OutboundRoute) |
ApiKey は、ロールと CIDR でスコープが限定された変更不可の smk_ トークンを発行します (ローテーションは create + delete で実施)。Route は、ドメインごとのスマート ホストと TLS 証明書のオーバーライドを管理します。 | ApiKey: TenantAdmin+ · Route: ServerAdmin |
パートナーの MX が RemoteCertificateNameMismatch で失敗する場合は、次を実行します: nextxch-cli create Route --set domain=partner.com --set tlsMode=StartTlsIgnoreCert (targetHost が空 = Auto DNS-MX)。 |
Singletons: TransactionalSend & ReputationShield |
IP/ドメインのウォーミング、カテゴリ、プロバイダー クォータ (TransactionalSend) に加え、抑制リスト、ARF FBL、RFC 8058 配信停止、サーキット ブレーカー (ReputationShield) を制御します。 | Presets per 1 Befehl |
プリセットで素早く設定: nextxch-cli update TransactionalSend --set preset=warming_28d および nextxch-cli update ReputationShield --set preset=recommended。 |
Singletons: SpamGuard, SmtpQueue, TransportRules & Server |
スパムしきい値と ClamAV (SpamGuard)、キュー ワーカー、スマート ホストと TLS ポリシー (SmtpQueue)、免責事項と Fail2Ban (TransportRules)、serverHostName (Server) を構成します。 | Rolle: ServerAdmin |
ダウンタイムなしのホスト名更新: nextxch-cli update Server --set serverHostName=mail.company.com で EHLO、バナー、Autodiscover がライブで更新されます。 |