#pArchiveSources
nextxch Archive : Microsoft 365, Exchange, Google Workspace et IMAP dans l'archive GoBD
nextxch Archive intègre dans l'archive GoBD le courrier des systèmes qui ne fonctionnent pas sous nextxch. Quatre types de sources sont disponibles dans l'admin sous Conformité > Sources d'archivage : journal SMTP (rapports de journal de Microsoft 365 et Exchange, règle de copie de Google Workspace, copies en Cci de tout MTA), IMAP (tout serveur, lecture seule), Microsoft 365 via Microsoft Graph et Google Workspace via la Gmail API. Chaque boîte aux lettres de la source devient une boîte aux lettres archivée sans connexion et sans trafic de courrier ; la recherche, la conservation légale, l'export probant et la restauration y fonctionnent comme sur vos propres boîtes aux lettres.
Combinaison recommandée : le journal SMTP pour une capture continue et complète à partir d'une date de référence (les utilisateurs ne peuvent rien supprimer avant la capture), plus la source API une seule fois ou à intervalle long pour le courrier existant et la vue des dossiers. Les deux écrivent dans la même archive ; un message capturé deux fois n'est stocké qu'une seule fois grâce à SHA-256. Licence : les boîtes aux lettres archivées d'autres systèmes constituent une ligne de licence distincte, vos propres boîtes aux lettres nextxch n'y sont pas comptées. 10 boîtes aux lettres archivées sont gratuites dans chaque niveau, d'autres s'ajoutent avec une licence Business ou Enterprise.
1. Démarrage rapide : créer une source de journal pour Microsoft 365
Les nouvelles sources sont créées désactivées. Testez la connexion, puis activez la source. Le serveur génère l'adresse de journal avec un jeton secret lorsque seul le domaine est indiqué ; son MX doit pointer vers nextxch.
# 1. Admin > Compliance > Archive sources > New source, kind "SMTP journal"
# Domains of the old environment: company.com · journal domain: archive.company.com
# -> journal address e.g. journal-k3x9q2m7v1c8b4n6z5ta@archive.company.com (copy it)
# 2. Protection: IP ranges of the Exchange Online servers, TLS required, allowed envelope senders
# 3. Microsoft Purview: Solutions > Data lifecycle management > Exchange (legacy) > Journal rules
# or Exchange Online PowerShell:
Set-TransportConfig -JournalingReportNdrTo journal-ndr@archive.company.com
New-JournalRule -Name "nextxch Archive" -JournalEmailAddress journal-k3x9q2m7v1c8b4n6z5ta@archive.company.com -Scope Global -Enabled $true
Get-JournalRule | Format-Table Name,Enabled,JournalEmailAddress,Scope
# 4. Send a test message: the source shows the original with all envelope recipients (including Bcc)
2. Journal depuis Exchange sur site et Google Workspace
Exchange sur site : règle de journalisation avec la même adresse de journal (journalisation premium, nécessite la Exchange Enterprise CAL) ou journalisation standard par base de données de boîtes aux lettres vers cette adresse ; dans un environnement hybride, créez également la règle sur le serveur Exchange sur site. Google Workspace : une règle de routage ajoute l'adresse de journal comme destinataire supplémentaire ; Google Vault n'est pas nécessaire. Avec "Comprehensive mail storage" (stockage complet des e-mails), le courrier du relais SMTP et des services Google arrive également dans les boîtes aux lettres. Tout autre MTA envoie des copies en Cci à l'adresse de journal.
# Exchange Server (Exchange Management Shell)
New-JournalRule -Name "nextxch Archive" -JournalEmailAddress journal-k3x9q2m7v1c8b4n6z5ta@archive.company.com -Scope Global -Enabled $true
# Google Admin console: Menu > Apps > Google Workspace > Gmail > Routing > Configure
# Messages to affect: inbound, outbound, internal inbound, internal outbound
# Action: Modify message > Add more recipients > Advanced > journal address
# Optional: do not deliver spam to this recipient, suppress bounces from this recipient
# Journal source in nextxch: format bcc or auto, IP ranges of Google's outbound servers, TLS required
3. IMAP : tout serveur, lecture seule
Les dossiers sont ouverts avec EXAMINE et le contenu est récupéré avec BODY.PEEK[], les indicateurs à la source ne changent jamais. Un curseur par dossier (UIDVALIDITY, dernier UID, HIGHESTMODSEQ avec CONDSTORE) est mis à jour après chaque message, une interruption reprend exactement à cet endroit. TLS est obligatoire (implicite ou STARTTLS), en option avec un certificat épinglé (SHA-256) ; connexion par mot de passe ou XOAUTH2, un compte ou une liste de comptes. La corbeille et les spams sont ignorés par défaut.
{
"host": "imap.oldhoster.com",
"tls": "implicit",
"auth": "password",
"mode": "single",
"username": "accounting@company.com",
"address": "accounting@company.com",
"excludeFolders": ["Drafts"],
"since": "2016-01-01",
"maxConnections": 2
}
# Secret: password (or oauthToken with xoauth2), in list mode accounts/<id>/password
4. Microsoft 365 via Microsoft Graph : inscription d'application dans Entra ID
La source lit le courrier existant et nouveau avec des requêtes delta par dossier, sans EWS (Microsoft retire EWS dans Exchange Online). Autorisations d'application dans Microsoft Graph avec consentement administrateur : Mail.Read et User.Read.All, GroupMember.Read.All uniquement avec le filtre d'utilisateurs "group". Connexion avec un certificat (recommandé) ou un secret client, clouds global, usgov, usgovdod et china. La limitation (throttling) de Graph (429 avec Retry-After) est respectée, une exécution reprend à la dernière page entièrement traitée. Les messages supprimés à la source restent dans l'archive. En option, RBAC for Applications d'Exchange Online limite l'accès à un groupe.
# Entra admin center > App registrations > New registration "nextxch Archive" (single tenant)
# API permissions > Microsoft Graph > Application permissions:
# Mail.Read, User.Read.All (+ GroupMember.Read.All with group filter) > Grant admin consent
# Certificates & secrets: upload a certificate (.cer) or create a client secret
{
"tenantId": "company.onmicrosoft.com",
"clientId": "11111111-2222-3333-4444-555555555555",
"credentialType": "certificate",
"cloud": "global",
"userFilter": { "mode": "group", "groupId": "99999999-0000-0000-0000-000000000009" },
"sinceUtc": "2019-01-01T00:00:00Z"
}
# Secrets: certificatePfx (Base64) + certificatePassword or clientSecret (the value, not the ID)
5. Google Workspace via la Gmail API : compte de service et délégation à l'échelle du domaine
Un compte de service dans le propre projet Google Cloud du client (les quotas Gmail sont comptés par projet) avec la Gmail API et l'Admin SDK API activées. Dans la console d'administration, son ID client numérique est autorisé pour la délégation à l'échelle du domaine avec les portées gmail.readonly et admin.directory.user.readonly, plus admin.directory.group.member.readonly pour le filtre "group". Import initial via messages.list et messages.get (raw), puis synchronisation de l'historique ; si l'historique a expiré, l'import redémarre et les messages déjà archivés sont comptés comme doublons. Le budget de quota par utilisateur et par projet est réglable.
# Admin console: Security > Access and data control > API controls > Domain-wide delegation
# client ID (numeric) + scopes:
# https://www.googleapis.com/auth/gmail.readonly,
# https://www.googleapis.com/auth/admin.directory.user.readonly
{
"adminSubject": "admin@company.com",
"domain": "company.com",
"userFilter": "orgUnit",
"orgUnitPath": "/Sales",
"sinceUtc": "2018-01-01T00:00:00Z",
"quotaUnitsPerUserMinute": 4800
}
# Secret: serviceAccountKey (JSON key file of the service account)
6. Stockage, conservation WORM et conservation légale
Chaque boîte aux lettres archivée dispose de son propre magasin réservé à l'archive dans l'archive GoBD. Par message : adresse de contenu SHA-256 avec déduplication sur toutes les boîtes aux lettres, contrôle des doublons par boîte aux lettres via SHA-256 et Message-ID, conservation WORM et conservation légale de la source sur le blob et le message, une chaîne de hachage comme preuve d'intégrité et un index de texte intégral. L'historique de chaque exécution compte les messages stockés, en double et rejetés.
Retention RetentionDays 0..36500 (0 = no WORM retention)
Mode Normal | Governance | Compliance (default)
Legal hold per source, also applies to already archived messages
Storage local or S3 with Object Lock (like the rest of the GoBD archive)
Status per mailbox: last run, next run, stored, duplicates, rejected, errors
7. Recherche, export, restauration
Les boîtes aux lettres archivées peuvent être choisies comme périmètre distinct dans la recherche de conformité (recherche en allemand avec décomposition des mots composés, OCR dans les pièces jointes, champs ZUGFeRD) et chacune dispose dans la liste de boutons de recherche, d'export probant et de restauration. L'export probant fournit un ZIP avec les fichiers .eml d'origine et un manifeste signé Ed25519 (voir le chapitre 17a). La restauration copie dans une boîte aux lettres nextxch, l'archive reste inchangée. La restauration dans Microsoft 365, Google ou le serveur IMAP n'est pas encore disponible ; l'export couvre ce besoin. Recherche dans chaque niveau, tâches d'export probant et de restauration à partir de Business.
# Search in an archived mailbox
curl -s "https://mail.company.com/api/compliance/search?archivedMailboxId=<id>&q=invoice&limit=100" -H "X-Api-Key: $KEY"
# Evidence export of an archived mailbox (202, status under GET /api/compliance/exports/{id})
curl -X POST https://mail.company.com/api/compliance/exports -H "X-Api-Key: $KEY" -H "Content-Type: application/json" \
-d '{"scope":"mailbox","archivedMailboxId":"<id>","caseReference":"case 4711"}'
# Restore into a nextxch mailbox
curl -X POST https://mail.company.com/api/compliance/restore/jobs -H "X-Api-Key: $KEY" -H "Content-Type: application/json" \
-d '{"source":"archive","account":"archived:<id>","target":"account","targetAccount":"successor@company.com"}'
8. API d'administration : /api/admin/archive-sources
TenantAdmin au sein de son propre locataire, ServerAdmin partout ; le ComplianceAuditor lit (pour choisir les boîtes aux lettres archivées pour la recherche et l'export) mais ne modifie jamais rien. Kind vaut Journal, Imap, Microsoft365 ou Google. L'activation d'une boîte aux lettres au-delà du quota de licence est refusée avec un message indiquant la ligne de licence actuelle. Les sources de journal reçoivent par SMTP, il n'y a pas d'exécution pour elles (409 JOURNAL_IS_PUSHED).
GET /api/admin/archive-sources sources, licence line, available kinds with fields
GET /api/admin/archive-sources/license used, allowed, free, remaining
POST /api/admin/archive-sources create a source
GET /api/admin/archive-sources/{id} source, mailboxes, names of the secrets
PUT /api/admin/archive-sources/{id} change (settings, retention, legal hold, schedule)
DELETE /api/admin/archive-sources/{id} delete
POST /api/admin/archive-sources/{id}/test connection test
POST /api/admin/archive-sources/{id}/discover discover mailboxes
GET /api/admin/archive-sources/{id}/mailboxes archived mailboxes
PUT /api/admin/archive-sources/{id}/mailboxes/{mbxId} {"enabled": true} within the licence line
POST /api/admin/archive-sources/{id}/run fetch now, optionally {"mailboxId": "..."}
GET /api/admin/archive-sources/{id}/runs history (mailboxId, limit)
curl -X POST https://mail.company.com/api/admin/archive-sources -H "X-Api-Key: $KEY" -H "Content-Type: application/json" -d '{
"kind": "Journal", "name": "Microsoft 365 journal", "journalDomain": "archive.company.com",
"settings": { "domains": ["company.com"], "allowedSenderNetworks": ["203.0.113.0/24"], "requireTls": true },
"retentionDays": 3650, "lockMode": "Compliance" }'
Paramètres, valeurs par défaut & bonnes pratiques
| Paramètre / emplacement | Description | Valeur par défaut | Bonne pratique en production |
|---|---|---|---|
Journal: Domains (domains) |
Seules les adresses d'enveloppe de ces domaines et de leurs sous-domaines deviennent des boîtes aux lettres archivées (dès leur première apparition, tant que la détection automatique est activée). Les messages sans adresse correspondante sont placés dans le magasin "journal sans affectation" de la source, qui n'est pas pris en compte dans la licence. | leer · automatische Erkennung an |
Saisissez chaque domaine de l'ancien environnement, sinon des boîtes aux lettres manqueront dans l'affectation. |
Journal: Schutz (allowedSenderNetworks, requireTls, allowedEnvelopeSenders) |
Adresses IP ou plages CIDR autorisées des serveurs expéditeurs, acceptation via TLS uniquement (STARTTLS ou implicite) et expéditeurs d'enveloppe autorisés (adresse, *@domaine ou domaine). Une adresse de journal nécessite soit une liste d'IP, soit un jeton secret dans sa partie locale (au moins 16 caractères, généré par le serveur). | keine IP-Liste · TLS aus · alle Absender |
Définissez les plages IP du fournisseur et exigez TLS ; conservez également le jeton. |
Journal: Format (format) |
auto détecte un rapport de journal grâce à X-MS-Journal-Report ; envelope force l'analyse en tant que rapport Exchange ou Microsoft 365, bcc traite chaque message comme une copie (règle de copie Google, autres MTA). | auto |
Conservez auto, sauf si un MTA envoie des copies en Cci avec ses propres en-têtes. |
Aufbewahrung (RetentionDays, LockMode) |
Conservation WORM en jours par source (de 0 à 36 500, 0 = pas de conservation WORM) avec le mode Normal, Governance ou Compliance. S'applique au blob et au message de chaque e-mail archivé. | Compliance |
Choisissez le délai légal applicable aux lettres commerciales et aux pièces comptables ; Compliance ne peut pas être levé avant son expiration. |
Legal Hold (LegalHold) |
Verrouille tous les messages de la source contre la suppression, y compris au-delà de la durée de conservation. Lors de son activation, la conservation légale s'applique également aux messages déjà archivés ; chaque modification est consignée dans le journal d'audit. | aus |
À activer en cas de litige ou d'audit, et à lever uniquement après accord du service juridique. |
Zeitplan und Erkennung (ScheduleMinutes, AutoDiscover) |
Intervalle de récupération des sources API (IMAP, Microsoft 365, Google) de 5 minutes à 7 jours ; dans un cluster, seul le leader récupère. Les sources de journal reçoivent par SMTP et n'ont pas de planification. | 60 min |
Pour l'import initial de grands locataires, lancez l'exécution manuellement et surveillez l'historique par boîte aux lettres. |
Geheimnisse (Secrets) |
Les mots de passe, secrets client, certificats et clés de compte de service sont stockés chiffrés dans le trousseau du serveur. Ils sont en écriture seule : les réponses de l'API ne contiennent que leurs noms, jamais les valeurs, et ils n'apparaissent jamais dans les journaux. | verschlüsselt |
Notez l'expiration du secret client et du certificat ; le test de connexion signale un secret expiré. |