第 15 章
クライアント、グループウェアと CLI
管理:
#pApiAuth
スコープ付き API キー、トランザクション送信 API (/api/v1/send)、IP ウォーミング、SCIM 2.0 & OIDC
Web アプリ、チケット管理ツール、ERP システム、CI/CD パイプラインで、人のメールボックス パスワードを共有してはなりません。[API キー、SSO とルール] (#pApiAuth) で CIDR 制限付きのスコープ付き API キー (smk_...) を発行し、自動 IP ウォーミング付きの POST /api/v1/send で分類されたトランザクション メールを送信し、OIDC/SCIM 2.0 を接続します。
運用のヒントとアーキテクチャに関する注記
2FA と最小権限のルール: 2FA が有効なアカウントは、/api/admin/* でのパスワードのみの HTTP Basic ログインを自動的に拒否します。Web アプリや ERP には必ず Role = User のキー (承認済みの送信者アドレスからの /api/v1/send に厳密に限定) を発行し、nextxch-cli による自動化には CIDR でロックした TenantAdmin/ServerAdmin キーを発行してください (第 13 章: /docs/cli/ を参照)。
カテゴリ & Idempotency-Key 付きのトランザクション送信 API (POST /api/v1/send)
Bearer smk_... (または X-Api-Key)、プロバイダー クォータ管理用のメッセージ カテゴリ、ネットワーク再試行時の重複送信を防ぐ Idempotency-Key を指定します。
curl -fsS -X POST "https://mail.firma.de/api/v1/send" \
-H "Authorization: Bearer smk_01968f2a_..." \
-H "Idempotency-Key: inv-2026-90412" \
-H "Content-Type: application/json" \
-d '{
"from": "rechnung@firma.de",
"to": ["kunde@beispiel.de"],
"subject": "Ihre Rechnung RE-2026-90412",
"category": "transactional",
"textBody": "Guten Tag,\nanbei erhalten Sie Ihre Rechnung RE-2026-90412.",
"htmlBody": "<p>Guten Tag,</p><p>anbei erhalten Sie Ihre Rechnung <strong>RE-2026-90412</strong>.</p>",
"attachments": [
{
"fileName": "RE-2026-90412.pdf",
"contentType": "application/pdf",
"base64Content": "JVBERi0xLjcKJ..."
}
]
}'
# Risikofreier Integrationstest ohne echten Internet-Versand (Sandbox-Sink):
# Empfänger ok@sink.nextxch.local, bounce@sink.nextxch.local, defer@sink.nextxch.local, complaint@sink.nextxch.local
スコープ付き API キーの RBAC ロール マトリックス
各ワークロードには、必要最小限の RBAC スコープと送信元 CIDR 許可リストを常に割り当ててください。
Role = User -> Darf NUR POST /api/v1/send für freigegebene Absenderadressen nutzen (ideal für Shop, CRM, Website)
Role = ComplianceAuditor -> Schreibgeschützter Zugriff auf Schema, DNS-Prüfung, GoBD-Archiv & Verfahrensdokumentation
Role = TenantAdmin -> Verwaltet Domains, Konten, Verteiler, Aliase & API-Keys ausschließlich im eigenen Mandanten + SCIM 2.0
Role = ServerAdmin -> Vollzugriff inkl. Tenants, Route, SpamGuard, SmtpQueue, TransportRules & snapshot --include-secrets
設定、既定値 & ベスト プラクティス
| 設定 / 場所 | 説明 | 既定値 | 本番環境のベスト プラクティス |
|---|---|---|---|
Scoped API-Keys (smk_<id>_<secret>) |
最小権限の Bearer / X-Api-Key 資格情報。ハッシュ化されたシークレット、RBAC スコープ (User、ComplianceAuditor、TenantAdmin、ServerAdmin)、既定のメッセージ カテゴリ、CIDR 送信元 IP 許可リスト、有効期限に対応。 | Role = User (Least Privilege) |
Role = User (/api/v1/send のみ) を選択し、既定のカテゴリを明示してください (2FA には critical、請求書には transactional)。CI/CD と Ansible には、CIDR で制限された TenantAdmin または ServerAdmin キーを選択してください。 |
IP-Warming, Kategorien & Empfänger-Anbieter-Limits (/api/v1/send) |
メッセージ カテゴリ (critical、transactional、notification、marketing) ごとに、時間単位と日単位のクォータを個別に適用します。受信者のプロバイダー (Google/Gmail、Microsoft Outlook/Hotmail/Live、Yahoo & AOL、T-Online/GMX/WEB.DE、Apple iCloud) および個々の宛先ドメイン (*) ごとに明確に区別されます。 | 28-Tage IP-Warming / 100 % Produktion |
新しい IP では 28 日間の IP ウォーミング ランプ (5% -> 100%) を有効にしてください。重要な 2FA メールはキュー優先度 10 でウォーミングをバイパスし、一括通知やマーケティング メールは将来の 1 時間単位の枠に分散して送信される (DeferQueue) か、HTTP 429 + Retry-After で即座に失敗します。 |
Idempotency-Key & Response-Header |
HTTP の再試行をまたいだメールの重複送信を防ぎ、OverflowAction = Reject429 の場合は X-RateLimit-Remaining と正確な Retry-After 秒数を返します。 | 24h Deduplizierungs-Fenster |
すべてのトランザクション送信で、決定論的な注文番号または請求書番号 (例: inv-2026-90412) を Idempotency-Key ヘッダーに渡してください。 |
REST Management-Endpunkte (/api/admin/cli/*) |
nextxch-cli の基盤となるシンプルな JSON/NDJSON HTTP インターフェイス (/schema、/objects/{type}、/dns/{domain}、/snapshot、/apply)。C#、Go、Python、Terraform による独自の統合に利用できます。 | Bearer smk_... Auth |
独自の顧客向けコントロール パネルを構築する場合は、CIDR 制限付きの TenantAdmin キーで POST /api/admin/cli/objects/Account/User を呼び出します。 |
Globale Pflicht-Signatur / Disclaimer |
DKIM 署名の前に、text/html と text/plain の両パートに必須の企業/法定フッターを自動で付加します。返信時の重複付加は防止されます。 | Optional aktivierbar |
簡潔な HTML 版とプレーンテキスト版を用意し、返信チェーンが整理された状態を保てるよう重複抑制を有効のままにしてください。 |
OIDC Single Sign-On & SCIM 2.0 |
Entra ID、Keycloak、Authentik、Okta を接続して OIDC シングル サインオンを実現し、SCIM 2.0 によるユーザー ライフサイクルの自動プロビジョニング (/scim/v2) を行います。 | Lokale Auth + Passkeys aktiv |
対話型ログインには FIDO2 パスキーを有効にし、SCIM 2.0 プロビジョニングには CIDR 制限付きの TenantAdmin API キーを使用してください。 |