Как использовать Pods для мультитенантной почты?

Изоляция ящиков, доменов и данных по арендаторам.

Pod — изолированное рабочее пространство: свои ящики, домены, треды и черновики, отдельно от других Pods.

Когда нужны Pods

  • SaaS: у каждого клиента свои агенты и ящики
  • Агентства: изоляция по клиентам
  • Платформы агентов: отдельные workspace
  • White-label: почта под брендом конечного пользователя

Если почта только для одной организации, Pods необязательны.

Иерархия

Organization (your business)
└── Pod (Customer A)
├── Inbox: support@customera.com
├── Inbox: sales@customera.com
└── Domain: customera.com
└── Pod (Customer B)
├── Inbox: hello@customerb.com
└── Domain: customerb.com

Данные между Pods не пересекаются.

Создание Pod и ресурсов

Python
1from agentinbox import Agentinbox
2
3client = Agentinbox()
4
5pod = client.pods.create(name="Acme Corp")
6
7support_inbox = client.pods.inboxes.create(
8 pod_id=pod.pod_id,
9 username="support",
10 domain="acme.com",
11 display_name="Acme Support"
12)
13
14sales_inbox = client.pods.inboxes.create(
15 pod_id=pod.pod_id,
16 username="sales",
17 domain="acme.com",
18 display_name="Acme Sales"
19)

Используйте client_id у Pod как ваш внутренний ID клиента — не нужна отдельная таблица соответствий.

Python
1pod = client.pods.create(
2 name="Acme Corp",
3 client_id="customer_12345"
4)

Ресурсы внутри Pod

Python
1inboxes = client.pods.inboxes.list(pod_id=pod.pod_id)
2threads = client.pods.threads.list(pod_id=pod.pod_id)
3drafts = client.pods.drafts.list(pod_id=pod.pod_id)

Удаление Pod

Сначала удалите ящики и домены — пустой Pod удалить можно.

Python
1inboxes = client.pods.inboxes.list(pod_id=pod.pod_id)
2for inbox in inboxes.inboxes:
3 client.inboxes.delete(inbox.inbox_id)
4
5client.pods.delete(pod_id=pod.pod_id)

Удаление ящика удаляет связанные сообщения, треды и черновики.

Важно

  • Почта между Pods ходит как между обычными адресами; изоляция — в доступе к API и данным, не в доставке.
  • Ящик нельзя перенести между Pods — создайте новый в целевом Pod.
  • Ключи pod и ключи ящика — см. POST /pods/{pod_id}/api-keys и POST /inboxes/{inbox_id}/api-keys.
  • Лимита на число Pods нет.
  • Домен привязан к одному Pod или ко всем, но не к подмножеству Pods.

Подробнее: Pods.