mailcow-dockerizedのユーザー管理APIを活用した一括操作と権限制御の実践

mailcow-dockerizedのユーザー管理APIを活用した一括操作と権限制御の実践

【無料ダウンロードリンク】mailcow-dockerized mailcow: dockerized - 🐮 + 🐋 = 💕 プロジェクトURL: https://gitcode.com/GitHub_Trending/ma/mailcow-dockerized

企業向けメールシステムにおいて、ユーザーの一括作成や詳細な権限管理は効率向上に不可欠です。mailcow-dockerizedは、OpenAPI仕様に基づいた機能豊富なAPIインターフェースを提供し、管理者がこれらの課題に対応できるようにしています。本記事では、mailcowのユーザー管理APIを使用して一括操作および権限制御を実現する方法について詳しく解説します。

API概要と準備作業

mailcow-dockerizedのAPIはOpenAPI仕様に基づいて設計されており、ユーザーと権限の管理機能を備えています。APIドキュメントはdata/web/api/openapi.yamlに格納されており、利用可能なエンドポイントの詳細が記載されています。

APIを利用するには、まずAPIキーを作成し、IPアドレスをホワイトリストに追加する必要があります。これは、管理者アカウントでMailcow UIにログインし、「Configuration > Access > Edit administrator details > API」から行うことができます。APIキーには読み取り専用と読み書きの2種類があり、それぞれGETリクエストやすべての操作に使用されます。

ドメイン管理者の一括作成

企業内でのドメイン管理者の一括作成は一般的なニーズです。mailcowは/api/v1/add/domain-adminというエンドポイントを通じてこの機能を提供しています。

単一ドメイン管理者の作成

以下のコマンドで単一ドメイン管理者を作成できます:

curl -X POST "https://your-mailcow-domain/api/v1/add/domain-admin" \
  -H "X-API-Key: your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "active": "1",
    "domains": "example.com",
    "password": "secure_password",
    "password2": "secure_password",
    "username": "domain_admin1"
  }'

一括作成の実装

一括作成には、以下のようなスクリプトを用いてAPIを繰り返し呼び出します:

import requests
import json

API_KEY = "your_api_key"
BASE_URL = "https://your-mailcow-domain/api/v1"
DOMAINS = ["example.com", "example.org"]
ADMINS = [
    {"username": "admin1", "password": "pass123"},
    {"username": "admin2", "password": "pass456"}
]

headers = {
    "X-API-Key": API_KEY,
    "Content-Type": "application/json"
}

for admin in ADMINS:
    for domain in DOMAINS:
        data = {
            "active": "1",
            "domains": domain,
            "password": admin["password"],
            "password2": admin["password"],
            "username": f"{admin['username']}_{domain.split('.')[0]}"
        }
        
        response = requests.post(
            f"{BASE_URL}/add/domain-admin",
            headers=headers,
            data=json.dumps(data)
        )
        
        if response.status_code == 200:
            print(f"Created {admin['username']} for {domain}")
        else:
            print(f"Failed to create {admin['username']} for {domain}: {response.text}")

権限制御とACL管理

ドメイン管理者を作成した後、そのアクセス権を細かく制御する必要があります。mailcowはアクセス制御リスト(ACL)を用いてこの機能を実現しており、関連するエンドポイントは/api/v1/edit/da-aclです。

権限項目の説明

ドメイン管理者の権限項目には次のものがあります:

  • syncjobs: シンクジョブ管理権限
  • quarantine: 隔離メール管理権限
  • login_as: サイレントログイン権限
  • sogo_access: SOGoアクセス権限
  • app_passwds: アプリケーションパスワード管理権限
  • bcc_maps: BCCマッピング管理権限
  • pushover: Pushover通知設定権限
  • filters: メールフィルター管理権限
  • ratelimit: レートリミット設定権限

完全な権限リストは、/api/v1/edit/da-aclエンドポイントの記述に記載されています。

管理者の権限変更

以下は、ドメイン管理者の権限を変更する例です:

curl -X POST "https://your-mailcow-domain/api/v1/edit/da-acl" \
  -H "X-API-Key: your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "username": "testadmin",
    "da_acl": [
      "syncjobs",
      "quarantine",
      "login_as",
      "sogo_access",
      "app_passwds"
    ]
  }'

一括権限更新

複数の管理者の権限を一括で更新するには、以下のPythonスクリプトを使用できます:

import requests
import json

API_KEY = "your_api_key"
BASE_URL = "https://your-mailcow-domain/api/v1"
ADMINS = ["admin1_example", "admin2_example"]
ACL = [
    "syncjobs",
    "quarantine",
    "login_as",
    "sogo_access",
    "app_passwds"
]

headers = {
    "X-API-Key": API_KEY,
    "Content-Type": "application/json"
}

for admin in ADMINS:
    data = {
        "username": admin,
        "da_acl": ACL
    }
    
    response = requests.post(
        f"{BASE_URL}/edit/da-acl",
        headers=headers,
        data=json.dumps(data)
    )
    
    if response.status_code == 200:
        print(f"Updated ACL for {admin}")
    else:
        print(f"Failed to update ACL for {admin}: {response.text}")

アプリケーションパスワードの管理

mailcowはメールアカウントに特化したアプリケーションパスワードを生成できる機能を提供しています。関連するAPIエンドポイントは/api/v1/add/app-passwdです。

アプリケーションパスワードの作成

curl -X POST "https://your-mailcow-domain/api/v1/add/app-passwd" \
  -H "X-API-Key: your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "active": "1",
    "username": "user@example.com",
    "app_name": "wordpress",
    "app_passwd": "secure_app_password",
    "app_passwd2": "secure_app_password",
    "protocols": ["imap_access", "smtp_access"]
  }'

アプリケーションパスワードは特定のプロトコルへのアクセスを制限でき、アカウントのセキュリティを高めます。

実用ツールとベストプラクティス

一括操作用スクリプトライブラリ

mailcowはhelper-scripts/ディレクトリにいくつかの補助スクリプトを提供しており、より複雑な一括操作が必要な場合に役立ちます。

セキュリティベストプラクティス

  1. APIキーは定期的に交換し、管理者が退職した際にはすぐに無効にする
  2. 最小限の権限原則を守り、必要最低限の権限のみを割当てる
  3. APIアクセスログを監視し、異常アクセスを即座に検知する
  4. 敏感な操作には多要素認証を適用する

パフォーマンス最適化の提案

  1. 一括操作時には適切な遅延を設け、リクエスト制限を回避する
  2. 大量データ処理時はバッチごとに分割して処理する
  3. APIレスポンスのステータス情報を活用してリトライ機構を構築する

結論と今後の展望

mailcow-dockerizedのユーザー管理APIは、企業向けメールシステムの管理において強力なサポートを提供しています。本記事で紹介した一括作成と権限制御の方法により、管理効率が大幅に向上します。今後、mailcowはさらに細かい権限制御や豊富な一括操作オプションの追加を予定しています。

管理者はAPIドキュメントを深く理解し、さらなる高度な機能を探索することを推奨します。不明点がある場合は、コミュニティチュートリアルやmailcowコミュニティのサポートを参照してください。

mailcowのAPI機能を適切に活用することで、企業はより柔軟で安全かつ効率的なメールシステム管理フローを構築でき、業務の発展に貢献することができます。

【無料ダウンロードリンク】mailcow-dockerized mailcow: dockerized - 🐮 + 🐋 = 💕 プロジェクトURL: https://gitcode.com/GitHub_Trending/ma/mailcow-dockerized

タグ: mailcow API ユーザー管理 権限制御 一括操作

9月3日 23:23 投稿