# Dostęp do poczty dla całej organizacji

Żeby asystent mógł czytać pocztę i pisać szkice, potrzebuje dostępu do
skrzynki. Najprostszym sposobem dla organizacji z kilkoma skrzynkami jest
**rejestracja aplikacji**: jeden dostęp dla całej organizacji, bez logowania
do każdej skrzynki z osobna. Rejestracje są w Organizacja → **Integracje**,
na karcie **Dostęp do poczty dla całej organizacji**. Zarządzają nimi
właściciele i menedżerowie organizacji.

Dla pojedynczej skrzynki zamiast tego wystarczy **podłączone konto** (przycisk
Podłącz Outlook / Podłącz Gmail) albo **logowanie IMAP** – zobacz instrukcję
[Dodanie i podłączenie skrzynki](/pl/admin/adding-a-mailbox).

## Microsoft 365 (Entra)

Do konfiguracji potrzebujesz uprawnień administratora w Entra ID.

1. https://entra.microsoft.com → Identity → Applications → **App registrations**
   → **New registration**.
2. Nazwij ją na przykład `draften`, **Accounts in this organizational directory only**,
   bez redirect URI → **Register**.
3. Na stronie **Overview** zanotuj **Application (client) ID** i **Directory
   (tenant) ID**.
4. **Certificates & secrets → New client secret** (najwyżej 24 miesiące).
   Wartość wyświetla się tylko raz; zanotuj też datę ważności.
5. **API permissions → Add a permission → Microsoft Graph → Application
   permissions**: `Mail.ReadWrite` i `MailboxSettings.ReadWrite` (drugie
   tylko do koloru kategorii w Outlooku).
6. **Grant admin consent** – zielone znaczniki przy obu wierszach.

**Nie dodawaj `Mail.Send`.** draften niczego nie wysyła, a bez tego uprawnienia
nawet nie może – i właśnie o to chodzi.

Potem w draften wybierz na karcie rejestracji **Microsoft 365 (Entra)**,
wypełnij nazwę, Directory (tenant) ID, Application (client) ID, wartość
sekretu (nie jego ID) i datę jego ważności, a następnie kliknij
**Dodaj rejestrację**.

## Google Workspace

1. Włącz **Gmail API** w projekcie Google Cloud swojego Workspace.
2. Utwórz **konto usługi** i pobierz jego **klucz JSON** (IAM → Service
   accounts → Keys).
3. W Google Admin → Security → Access and data control → API controls →
   **Domain-wide delegation** zezwól na numeryczny client ID konta usługi
   dla zakresu `https://www.googleapis.com/auth/gmail.modify`.

W draften wybierz **Google Workspace**, prześlij plik klucza i dodaj
rejestrację. Jest przechowywana w postaci zaszyfrowanej; wyświetla się tylko
e-mail konta i client ID.

## Przypisanie do skrzynek

Rejestracja sama niczego nie podłącza. **Właściciel organizacji** przypisuje
ją każdej skrzynce na jej stronie: Dostęp do poczty → **Użyj** → **Zastosuj**,
i uruchamia **Przetestuj połączenie**. Przy rejestracji widać, które skrzynki
jej używają. Gdy włączona jest [automatyczna skrzynka](/pl/admin/member-sign-in),
nowa skrzynka zostaje powiązana sama, jeśli dla jej systemu pocztowego jest
aktywna dokładnie jedna rejestracja.

## Ważność sekretu

Sekret rejestracji Entra ma ograniczoną ważność. Zanim wygaśnie, utwórz nowy
w Entra i kliknij **Nowy sekret** przy rejestracji w draften. Gdy sekret
wygaśnie, skrzynki się odłączą (`invalid_client`), a asystenci będą je
pomijać; po wymianie sekretu uruchom test połączenia.

## Techniczne zawężenie dostępu (opcjonalnie)

Rejestracja Microsoft 365 obejmuje każdą skrzynkę organizacji; strażnikiem jest
draften (członek nie może dodać skrzynki; asystent nigdy nie wysyła ani nie
usuwa). Kto chce mieć także techniczne ogrodzenie, zawęża aplikację do grupy
zabezpieczeń za pomocą `ApplicationAccessPolicy` w Exchange Online:

```
Connect-ExchangeOnline -UserPrincipalName admin@<tenant>.onmicrosoft.com
New-DistributionGroup -Name "draften - allowed mailboxes" -Alias draften-mailboxes -Type Security -Members mailbox@company.com
New-ApplicationAccessPolicy -AppId <Application (client) ID> -PolicyScopeGroupId draften-mailboxes@company.com -AccessRight RestrictAccess -Description "draften: allowed mailboxes only"
Test-ApplicationAccessPolicy -Identity mailbox@company.com -AppId <Application (client) ID>
```

Każdą kolejną skrzynkę trzeba wtedy też dodać do grupy, inaczej jej test
połączenia skończy się błędem 403 (`AppOnly AccessPolicy`). Zasady mogą zacząć
działać dopiero po kilku godzinach.
