Saltar al contenido

Onboarding Microsoft 365 — modalidad archivo

Esta guía es para el administrador del tenant Microsoft 365 del cliente. La envías una vez: nosotros provisionamos en paralelo lado ICS, tú haces los cuatro pasos aquí descritos, y arrancamos.

Tiempo: ~25 minutos si conoces el panel de Entra y Exchange Online. Si no, una hora. Permisos que necesitas: Global Administrator (o Application Administrator + Exchange Administrator).

Antes de empezar — qué cambia y qué no

Lo que NO cambia:

  • Tu MX, SPF, DKIM, DMARC permanecen iguales.
  • El correo sigue entrando exactamente como hoy a Exchange Online.
  • Outlook, móviles, calendarios, contactos — sin tocar.

Lo que añades:

  • Una app de Entra ID que solo lee mensajes (no envía, no borra) y solo de los usuarios del piloto.
  • Una transport rule que añade BCC ciego a un destinatario nuestro por cada mensaje del piloto.

Resultado:

  • Tu factura de M365 (cuota por buzón) sigue creciendo igual.
  • Pero a partir del momento del cutover, nosotros tenemos copia perpetua de todo lo que pasa por los buzones piloto.
  • Cuando valides que la copia está íntegra, podemos hablar de borrar lo viejo en M365 para liberar cuota — eso es opcional y se discute después del piloto.

Paso 1 — App registration en Entra ID

Microsoft Entra Admin Center → Identity → Applications → App registrations → New registration.

CampoValor
NameICS jmail.com.es Archive
Supported account typesAccounts in this organizational directory only (single tenant)
Redirect URI(dejar vacío)

Tras crearla, anota de la pestaña Overview:

  • Application (client) ID
  • Directory (tenant) ID

1.a — Permisos

En la app → API permissionsAdd a permissionMicrosoft GraphApplication permissions (no Delegated) → buscar y marcar:

  • Mail.Read

Después: Grant admin consent for <tu organización> (botón azul, requiere Global Admin).

Mail.Read permite leer mensajes pero no enviar, no modificar, no borrar. Si en futuro activamos “borrar lo viejo en origen” (opcional), pediremos Mail.ReadWrite adicional. No es necesario para el piloto.

1.b — Client secret

En la app → Certificates & secretsClient secretsNew client secret.

  • Description: ICS jmail archive
  • Expires: 24 months

Tras crearlo, copia el valor inmediatamente (solo se ve una vez). Si lo pierdes, créalo de nuevo.

Paso 2 — Mail-enabled security group para el piloto

Microsoft 365 Admin Center → Teams & groups → Active teams & groups → Add a group.

CampoValor
TypeMail-enabled security
Namearchive-pilot-jmail
Email addressarchive-pilot-jmail@<tu-dominio-principal>
Memberslos buzones del piloto (los que te diremos al confirmar el alta)
Si ya tienes un grupo equivalente, reutilízalo. Lo importante es que sea mail-enabled (no solo security) — el siguiente paso lo necesita así.

Paso 3 — Application Access Policy

Por defecto, la app del paso 1 puede leer todos los buzones del tenant. Para piloto restringimos.

Abrir Exchange Online PowerShell (cómo conectar) y ejecutar:

Connect-ExchangeOnline

New-ApplicationAccessPolicy `
  -AppId <Application-client-ID-del-paso-1> `
  -PolicyScopeGroupId archive-pilot-jmail@<tu-dominio> `
  -AccessRight RestrictAccess `
  -Description "ICS jmail archive pilot - restricted to pilot users only"

Verifica:

Test-ApplicationAccessPolicy `
  -Identity usuario-piloto@<tu-dominio> `
  -AppId <Application-client-ID-del-paso-1>
# Esperado: AccessCheckResult: Granted

Test-ApplicationAccessPolicy `
  -Identity usuario-NO-piloto@<tu-dominio> `
  -AppId <Application-client-ID-del-paso-1>
# Esperado: AccessCheckResult: Denied

A partir de este punto, basta con añadir/quitar miembros del grupo archive-pilot-jmail para expandir o reducir el piloto. La app no hay que tocarla.

Paso 4 — Transport rule “BCC al archivo”

Exchange Admin Center → Mail flow → Rules → Add a rule → Create a new rule.

CampoValor
NameICS jmail archive — BCC
Apply this rule ifThe recipient → is a member of this grouparchive-pilot-jmail
(Add condition, OR-mode) The sender → is a member of this grouparchive-pilot-jmail
Do the followingAdd recipients → to the Bcc box → these recipientsarchive@<tu-dominio>.jmail.com.es
Except ifA message header → includes any of these words → Header: X-Jmail-Archive-Source, Value: m365
Priority0 (la primera)
Audit severityLow
ModeTest with Policy Tips durante 24h, después Enforce

Guardar y activar.

La exception del header X-Jmail-Archive-Source evita un bucle teórico — si por algún motivo un mensaje archivado vuelve a entrar al tenant (re-delivery, forwarding manual), no se vuelve a capturar.
Por qué un único destinatario archive@<tu-dominio>.jmail.com.es en lugar de uno por usuario: para piloto es más simple — una sola rule, un solo destino. Nosotros desempaquetamos los mensajes lado servidor mirando los headers To/Cc/From y los archivamos en el buzón del usuario correcto. En producción ofrecemos la modalidad “BCC al buzón del usuario directo” (rule más compleja, lookup por miembro del grupo), pero el piloto va con bucket único.

Paso 5 — Datos que nos pasas

Para arrancar nuestro lado:

  1. Tenant ID y Application (client) ID del paso 1.
  2. Client secret VALUE del paso 1.b — vía Vaultwarden compartido, no por email, no por chat. Te abrimos un Send de un solo uso si no tienes acceso al vault compartido.
  3. Dominios piloto (típicamente 1-2).
  4. Lista de buzones piloto (típicamente 2-5): la dirección email completa de cada uno.
  5. Cuánto histórico bulk bajamos: por defecto sugerimos los últimos 6 meses — suficiente para validar que la captura está íntegra sin invertir días en bulk. Si quieres todo el histórico, pedimos una ventana de 1-3 días para que el bulk termine antes de activar la transport rule (paso 4).
  6. Ventana para el cutover: 30 min en los que activamos nuestro lado y tú pasas la transport rule de Test a Enforce. Hablamos por chat durante esa ventana.

Lo que pasa después de cutover

  • T+0 a T+1 min: tú activas Enforce. Nosotros vemos llegar mensajes a la cola del bucket.
  • T+1 min: te confirmamos por chat que los primeros mensajes están archivados.
  • T+24 h: te enviamos un resumen — cuántos mensajes capturados, cuántos buzones tocados, cualquier anomalía.
  • T+7 días: revisión del piloto. Decides si:
    • Expandes a más usuarios (añadir al grupo)
    • Activas borrado en origen (opcional, requiere Mail.ReadWrite)
    • Pasas a contrato producción

Si algo va mal

  • La transport rule no añade BCC: comprueba que el grupo archive-pilot-jmail tiene los miembros correctos y que la condición de la rule referencia el email del grupo (no su nombre). Test con un usuario piloto enviándose un mensaje a sí mismo desde un cliente externo.
  • Recibimos rebotes en archive@<tu-dominio>.jmail.com.es: avísanos. Significa que nuestro lado no acepta el mensaje — error de provisionamiento del bucket.
  • La app no puede leer un buzón: ejecuta el Test-ApplicationAccessPolicy del paso 3. Si dice Denied para un usuario que debería estar permitido, comprueba membresía del grupo.

Para cualquier otra cosa: ticket en el portal habitual.

Resumen ejecutivo — checklist enviable

Versión condensada para reenviar a tu equipo o para tener a mano:

1. App registration "ICS jmail.com.es Archive" en Entra ID (single tenant).
   Permiso: Mail.Read (Application) + admin consent. Client secret 24 meses.
   Pásanos: tenant_id, client_id, secret_value (vía Vaultwarden, no email).

2. Mail-enabled security group "archive-pilot-jmail" con los usuarios piloto.

3. Application Access Policy restringiendo la app de (1) al grupo de (2).
   Comando: New-ApplicationAccessPolicy en Exchange Online PowerShell.

4. Transport rule "ICS jmail archive — BCC":
   IF recipient OR sender IS member of archive-pilot-jmail
   AND header X-Jmail-Archive-Source NOT m365
   THEN add Bcc archive@<tu-dominio>.jmail.com.es

5. Datos del piloto:
   - 1-2 dominios
   - 2-5 buzones (lista completa)
   - histórico a bulkear (default 6 meses)
   - ventana de cutover (30 min)