# Microsoft 365: conectar buzones

Para que el asistente pueda leer el correo en Microsoft 365 y crear borradores
en él, necesita acceso a través de Microsoft Graph. Hay dos caminos y ambos se
basan en **una aplicación que la organización registra en su propio Microsoft
Entra ID**. draften no tiene una aplicación común a la que usted solo dé su
consentimiento. Esto vale tanto para nuestro servicio como para una instalación
en su propio servidor.

## Qué camino elegir

| | Para toda la organización | Con la cuenta del buzón |
|---|---|---|
| En draften | registro de aplicación en Organización › **Integraciones** | el botón **Conectar Outlook** del buzón |
| Permisos en Entra | de aplicación (Application) | delegados (Delegated) |
| Quién tiene que iniciar sesión | nadie | el propietario de cada buzón, una vez |
| A qué buzones llega | a todos los buzones del directorio (se puede restringir) | solo al buzón cuya cuenta inició sesión |
| Buzones compartidos (info@, ventas@) | sí | no: un buzón compartido no tiene inicio de sesión propio |
| Cuando alguien deja la empresa | no cambia nada | al bloquearse su cuenta, el buzón se desconecta |
| Iniciar sesión en draften con una cuenta de Microsoft | no, es un asunto aparte | el mismo registro sirve también para iniciar sesión |

Para una organización con varios buzones es más sencillo el **camino para
toda la organización**: el administrador lo configura una vez y los
propietarios de los buzones no tienen que hacer nada. **Con la cuenta del
buzón** conviene cuando no quiere dar a la aplicación acceso a todos los
buzones del directorio, o cuando de todos modos va a introducir el inicio de
sesión con cuenta de Microsoft.

Puede tener ambos caminos a la vez; cada buzón usa uno de ellos.

!> **Nunca dé a la aplicación el permiso `Mail.Send`**. draften no envía nada
y sin ese permiso ni siquiera podría hacerlo: de eso se trata.

## Camino A: para toda la organización

Necesita una cuenta con el rol **administrador global** o **administrador de
roles con privilegios**: solo ellos conceden el consentimiento para los
permisos de aplicación de Microsoft Graph. El registro en sí también lo puede
crear un administrador de aplicaciones.

### En Microsoft Entra

1. Abra https://entra.microsoft.com → **Identity** → **Applications** →
   **App registrations** → **New registration**.
2. Escriba un nombre, por ejemplo `draften – correo`, elija **Accounts in this
   organizational directory only**, **deje vacío el Redirect URI** y haga clic
   en **Register**.
3. En la página **Overview**, anote el **Application (client) ID** y el
   **Directory (tenant) ID**.
4. **Certificates & secrets** → **Client secrets** → **New client secret**:
   una descripción (por ejemplo, `draften`) y una validez de 24 meses como
   máximo. Al guardarlo, copie enseguida la columna **Value**: solo se muestra
   ahora. El **Secret ID** no lo necesita draften. Anote también la fecha de
   caducidad.
5. **API permissions** → **Add a permission** → **Microsoft Graph** →
   **Application permissions**. Marque `Mail.ReadWrite`
   y `MailboxSettings.ReadWrite` y haga clic en **Add permissions**.
   `MailboxSettings.ReadWrite` solo sirve para el color de la categoría en
   Outlook; sin él, la categoría se añade sin color. Si quiere, añada
   `User.Read.All`: con él draften comprueba los alias del buzón; sin él, la
   prueba de la conexión indica en los alias que no puede comprobarlos.
6. Haga clic en **Grant admin consent for …** y confirme. Todas las filas
   deben tener una marca verde.

### En draften

1. Abra Organización › **Integraciones**, la tarjeta **Acceso al correo para
   toda la organización**. Los registros los administran el propietario o los
   administradores de la organización.
2. **Sistema**: **Microsoft 365 (Entra)**. Rellene **Nombre**, **Directory
   (tenant) ID**, **Application (client) ID**, **Client secret** (el valor del
   paso 4, no su ID) y **El secreto caduca**. Haga clic en **Añadir
   registro**. El secreto se guarda cifrado y no se vuelve a mostrar.
3. Un registro no conecta nada por sí solo. En la página de cada buzón, en la
   tarjeta **Acceso al correo**, elija este registro en **Usar**, haga clic en
   **Aplicar** y después en **Probar la conexión**. La selección solo la ve
   quien es a la vez propietario del buzón y propietario o administrador de la
   organización (el propietario de la organización es propietario de todos los
   buzones). El procedimiento completo con capturas lo muestra la guía
   [«Añadir y conectar un buzón»](/es/admin/adding-a-mailbox).

Con el **buzón automático** activado ([Cómo inician sesión los
miembros](/es/admin/member-sign-in)), un buzón nuevo se vincula solo al
registro cuando hay exactamente uno activo para Microsoft 365.

### Restringir a determinados buzones (opcional)

Un permiso de aplicación llega a todos los buzones del directorio; draften es
quien vigila (un miembro no puede añadir un buzón; el asistente no envía ni
elimina nada). Quien quiera además una barrera técnica restringe la aplicación
a un grupo de seguridad con la política `ApplicationAccessPolicy` de Exchange
Online (PowerShell con el módulo ExchangeOnlineManagement):

```
Connect-ExchangeOnline -UserPrincipalName admin@<tenant>.onmicrosoft.com
New-DistributionGroup -Name "draften - buzones permitidos" -Alias draften-buzones -Type Security -Members buzon@firma.cz
New-ApplicationAccessPolicy -AppId <Application (client) ID> -PolicyScopeGroupId draften-buzones@firma.cz -AccessRight RestrictAccess -Description "draften: solo buzones permitidos"
Test-ApplicationAccessPolicy -Identity buzon@firma.cz -AppId <Application (client) ID>
```

Después, añada también al grupo cada buzón nuevo; si no, la prueba de la
conexión falla con el error 403 (`AppOnly AccessPolicy`). La política suele
aplicarse en menos de una hora; también hemos visto cuatro horas. Como
alternativa más reciente, Microsoft ofrece **RBAC for Applications** en
Exchange Online; por ahora no lo describimos.

### Sustituir el secreto

El secreto tiene una validez limitada y draften no envía ningún aviso de su
caducidad: la fecha de la tarjeta se vuelve amarilla 30 días antes y roja
después. Póngase un recordatorio en el calendario. Antes de que caduque:

1. En Entra, cree un nuevo client secret para el registro (paso 4 de arriba).
2. En draften, elija **Nuevo secreto** en el registro, pegue el nuevo valor
   y la nueva fecha.
3. Elimine el secreto antiguo en Entra.

Si el secreto caduca antes, los buzones se desconectan (`invalid_client`) y
los asistentes los omiten. Después de sustituir el secreto, ejecute **Probar
la conexión** en los buzones: una prueba superada vuelve a activar el buzón.

## Camino B: con la cuenta del buzón (Conectar Outlook)

Este registro tiene permisos **delegados**: la aplicación solo puede hacer lo
que puede hacer la persona que ha iniciado sesión, y solo en su propio buzón.
El mismo registro sirve también para **iniciar sesión en draften con una
cuenta de Microsoft**. Manténgalo separado del registro del camino A.

### En Microsoft Entra

1. Primero abra en draften Organización › **Cómo inician sesión los
   miembros**, la tarjeta **Inicio de sesión con cuenta y conexión de
   buzones**. Muestra dos **redirect URI** exactos para la dirección de su
   draften: terminan en `/auth/callback` y `/mailboxes/connect/callback`.
   Cópielos de allí; deben coincidir carácter por carácter.
2. En https://entra.microsoft.com → **App registrations** → **New
   registration**: un nombre, por ejemplo `draften – inicio de sesión`,
   **Accounts in this organizational directory only**, **Redirect URI**: la
   plataforma **Web** y la primera dirección de la tarjeta. Haga clic en
   **Register**.
3. **Authentication** → en la plataforma Web, **Add URI** → la segunda
   dirección de la tarjeta → **Save**.
4. En **Overview**, anote el **Application (client) ID** y el **Directory
   (tenant) ID**.
5. **Certificates & secrets** → **New client secret** → copie el **Value**
   y anote la fecha de caducidad.
6. **API permissions** → **Add a permission** → **Microsoft Graph** →
   **Delegated permissions**: `openid`, `profile`, `email`, `offline_access`,
   `User.Read`, `Mail.ReadWrite` y `MailboxSettings.ReadWrite`.
   Sin `offline_access` la conexión no se mantiene: draften no recibiría un
   token de actualización.
7. Haga clic en **Grant admin consent for …**. Si su organización no permite
   a los usuarios dar su consentimiento a aplicaciones, sin este paso la
   conexión terminaría con un mensaje de que se rechazó el consentimiento.

### En draften

1. El **propietario de la organización**, en la tarjeta **Inicio de sesión con
   cuenta y conexión de buzones**, rellena en **Registro de Entra para
   «Iniciar sesión con Microsoft» y «Conectar Outlook»** los valores
   **Application (client) ID** y **Client secret** y hace clic en **Guardar**.
2. El **propietario del buzón** abre la página del buzón y, en la tarjeta
   **Acceso al correo**, hace clic en **Conectar Outlook**. Inicia sesión **con
   la cuenta de ese buzón** (draften rechaza cualquier otra cuenta) y permite
   el acceso. El botón solo lo ve el propietario del buzón, y solo si la
   organización tiene el registro.
3. Después, **Probar la conexión**.

El **inicio de sesión con cuenta de Microsoft** se activa en la misma página:
en **ID del directorio de Microsoft (Entra)** pegue el Directory (tenant) ID.
En cuanto la organización tiene el registro y el ID del directorio, los
miembros inician sesión con su cuenta de Microsoft y sus contraseñas dejan de
funcionar: consulte [Cómo inician sesión los miembros](/es/admin/member-sign-in).

### Cuando un buzón se desconecta

- **Caducó el secreto del registro**: cree uno nuevo en Entra, guárdelo en la
  tarjeta Inicio de sesión con cuenta y conexión de buzones y haga clic en
  **Volver a conectar Outlook** en los buzones.
- **La persona se fue o su cuenta se bloqueó**: Microsoft deja de emitir
  tokens y draften desconecta el buzón. Un buzón sin inicio de sesión propio
  conéctelo por el camino A.
- **«El proveedor no emitió ningún token de actualización»**: al registro le
  falta el permiso `offline_access` (paso 6).
- **«Inició sesión una cuenta distinta de la dirección del buzón»**: al
  conectar, inicie sesión con la cuenta de ese mismo buzón; quien tenga varias
  cuentas de Microsoft en el navegador, que elija la correcta.

## Errores de la prueba de la conexión

La prueba comprueba tres pasos: **Acceso**, **Token y permiso** y **Lectura de
la Bandeja de entrada**. Cada uno muestra una marca o una cruz con el motivo:

| En el mensaje | Qué significa | Qué hacer |
|---|---|---|
| `AADSTS7000215`, `AADSTS7000222`, `invalid_client` | client secret incorrecto o caducado | crear un secreto nuevo y guardarlo en draften |
| `AADSTS700016`, `AADSTS90002`, `unauthorized_client` | Application ID o Directory ID incorrectos | volver a copiar ambos ID desde Overview |
| `AADSTS65001`, `AADSTS650057`, `consent_required` | falta el consentimiento del administrador | **Grant admin consent** en el registro |
| token sin `Mail.ReadWrite` | el permiso falta o no tiene consentimiento | añadir el permiso y conceder el consentimiento |
| `invalid_grant`, `AADSTS50173`, `AADSTS700082`, `AADSTS70008` | la conexión con la cuenta caducó o se revocó | **Volver a conectar Outlook** |
| HTTP 403 `AppOnly AccessPolicy` | el buzón no está en el grupo de la política de acceso | añadirlo al grupo y esperar |
| HTTP 404 | ese buzón no existe | comprobar la dirección; el buzón debe tener Exchange Online |
| HTTP 401 | otro directorio, o falta un permiso | comprobar el Directory ID y los permisos |

Otros errores se describen en [Solución de problemas](/es/admin/troubleshooting).
