/
/

Comment détecter et désactiver les boîtes aux lettres partagées inactives dans les tenants de vos clients

par Team Ninja
How to Detect and Disable Inactive Mailboxes Shared Across Client Tenants blog banner image

Les boîtes aux lettres partagées de Microsoft 365 sont précieuses pour le travail en équipe, mais celles qui sont laissées à l’abandon deviennent vite une perte de ressources silencieuse et un risque de sécurité. Automatiser la génération des rapports sur les boîtes aux lettres inactives est essentiel pour maintenir un environnement sécurisé, conforme et économique.

Dans ce guide, vous allez apprendre à repérer ces comptes dormants, à produire des rapports d’audit clairs et à appliquer des actions correctives avec PowerShell sur l’ensemble des tenants de vos clients.

Méthode pour identifier et gérer les boîtes aux lettres inactives avec PowerShell

Garder vos tenants Microsoft 365 exempts de boîtes aux lettres partagées inutilisées renforce la sécurité, améliore les performances et simplifie les audits.

📌 Cas d’utilisation : effectuez ce nettoyage lors des opérations de maintenance régulières, de l’onboarding ou de l’offboarding d’un client, ou encore des revues trimestrielles (QBR), afin de garantir la conformité et une utilisation efficace des ressources.

📌 Prérequis : avant de commencer, assurez-vous de disposer des éléments suivants :

  • un rôle d’administrateur général Microsoft 365 ou d’administrateur Exchange ;
  • le module Exchange Online PowerShell installé ;
  • PowerShell 5.1 ou une version ultérieure ;
  • (facultatif) un outil RMM comme NinjaOne pour exécuter des scripts à grande échelle sur plusieurs tenants ;
  • (facultatif) un marquage dans le registre pour le suivi des environnements hybrides.

Nous vous recommandons de consulter la section ⚠️ Points de vigilance avant de poursuivre.

Étape 1 : se connecter à Exchange Online via PowerShell

Pour gérer les boîtes aux lettres des tenants de vos clients, vous avez d’abord besoin d’une connexion sécurisée à Microsoft 365.

  1. Ouvrez PowerShell (Admin) ou Windows Terminal (Admin).
  2. Installez le module requis.
    • Exécutez la commande suivante pour installer le module ExchangeOnlineManagement. Confirmez les prompts qui s’affichent :

Install-Module -Name ExchangeOnlineManagement -Force -AllowClobber

  1. Établissez la connexion.
    • Exécutez la commande ci-dessous en remplaçant [email protected] par votre compte administrateur. Une fenêtre d’authentification moderne s’ouvrira pour vous permettre de vous connecter.

Connect-ExchangeOnline -UserPrincipalName [email protected]

Une fois la connexion établie, vous pouvez lister, auditer et gérer les boîtes aux lettres de vos tenants en suivant les étapes ci-dessous.

Étape 2 : identifier toutes les boîtes aux lettres partagées et leur dernière date de connexion

Pour repérer les boîtes aux lettres inactives, vous devez d’abord rassembler la liste de toutes les boîtes partagées et vérifier leur dernière date d’accès.

Une fois connecté à Exchange Online, exécutez les commandes PowerShell suivantes.

  1. Récupérez toutes les boîtes aux lettres partagées du tenant :

$sharedMailboxes = Get-Mailbox -RecipientTypeDetails SharedMailbox -ResultSize Unlimited

  1. Vérifiez la dernière date de connexion de chaque boîte :

$sharedMailboxes = Get-Mailbox -RecipientTypeDetails SharedMailbox -ResultSize Unlimited
$mailboxReport = foreach ($mb in $sharedMailboxes) {
$auditLog = Search-UnifiedAuditLog -StartDate (Get-Date).AddDays(-90) -EndDate (Get-Date) -Operations "MailItemsAccessed" -UserIds $mb.PrimarySmtpAddress
[PSCustomObject]@{
DisplayName = $mb.DisplayName
PrimarySMTP = $mb.PrimarySmtpAddress
LastActivity = if ($auditLog) { ($auditLog | Sort-Object CreationDate -Descending | Select-Object -First 1).CreationDate } else { "No Activity Found" }
}
}
$mailboxReport | Format-Table -AutoSize

À l’issue de cette étape, vous obtiendrez un rapport clair indiquant quelles boîtes aux lettres partagées sont actives et lesquelles sont dormantes. Ce rapport sert de base aux actions suivantes : désactiver la boîte ou la basculer en état inactif à des fins de conformité.

Étape 3 : filtrer et exporter les boîtes aux lettres dormantes

Maintenant que vous avez collecté des indicateurs d’activité, vous pouvez commencer à déterminer quelles boîtes aux lettres sont restées inactives au-delà du seuil que vous avez défini.

À partir de la liste des boîtes aux lettres obtenue à l’étape 2, le script PowerShell suivant les filtre selon l’indicateur d’activité choisi et un seuil défini (par exemple 90 jours), puis exporte les résultats dans un fichier CSV à des fins de vérification.

  1. Définissez votre seuil d’inactivité (par exemple 90 jours) :

$cutoffDate = (Get-Date).AddDays(-90)

  1. Filtrez la liste des boîtes aux lettres partagées pour trouver les boîtes dormantes :

$cutoffDate = (Get-Date).AddDays(-90)

$dormantMailboxes = foreach ($mb in $sharedMailboxes) {
$auditLog = Search-UnifiedAuditLog -StartDate $cutoffDate -EndDate (Get-Date) -Operations "MailItemsAccessed" -UserIds $mb.PrimarySmtpAddress
if (-not $auditLog) {
[PSCustomObject]@{
DisplayName = $mb.DisplayName
PrimarySMTP = $mb.PrimarySmtpAddress
LastActivity = "No Activity Found"
}
}
}

  1. Exportez les résultats dans un fichier CSV :

$dormantMailboxes | Export-Csv -Path "C:\Reports\InactiveSharedMailboxes.csv" -NoTypeInformation

Une fois ce script exécuté, vous disposerez d’un fichier CSV répertoriant les boîtes aux lettres partagées pour lesquelles aucune activité n’a été détectée selon le signal d’audit retenu. Ce rapport peut servir de liste de vérification pour les actions de suivi : revue des accès, évaluation de l’archivage ou autres décisions liées au cycle de vie, selon les exigences de votre entreprise.

Étape 4 : gérer les boîtes aux lettres partagées sans activité détectée

Une fois les boîtes aux lettres partagées sans signal d’activité récent identifiées à l’étape précédente, vérifiez-les et validez-les avant toute action. En fonction des exigences de conformité et de cycle de vie de votre entreprise, choisissez l’action de gestion appropriée pour chaque boîte figurant dans votre rapport.

  • Option 1 : bloquer la connexion du compte associé.
    • Cette action bloque la connexion interactive du compte associé, ce qui réduit les voies d’accès non autorisées tout en préservant les données et la configuration de la boîte aux lettres :

Set-Mailbox -Identity "SharedMailboxName" -AccountDisabled $true

  • Option 2 : supprimer les autorisations déléguées (recommandé avant désactivation)
    • Supprimez les autorisations d’accès complet d’un utilisateur donné :

Remove-MailboxPermission -Identity "SharedMailboxName" -User [email protected] -AccessRights FullAccess -Confirm:$false

    • Supprimez les autorisations Send As d’un utilisateur donné :

Remove-RecipientPermission -Identity "SharedMailboxName" -Trustee [email protected] -AccessRights SendAs -Confirm:$false

  • Option 3 : convertir en boîte aux lettres utilisateur standard (à des fins d’archivage)
    • Exécutez ce script :

Set-Mailbox -Identity "SharedMailboxName" -Type Regular

  • Option 4 : marquer pour le suivi de rétention
    • Utilisez un attribut personnalisé pour étiqueter les boîtes aux lettres à des fins d’identification, de reporting ou d’actions de suivi dans vos processus de gestion :

Set-Mailbox -Identity "SharedMailboxName" -CustomAttribute1 "Inactive_90Days"

Au terme de cette procédure, les boîtes aux lettres ciblées peuvent voir leurs accès délégués supprimés, être converties vers un autre type de boîte ou être étiquetées pour un suivi interne, selon vos besoins de gestion. Ces actions améliorent la visibilité administrative et facilitent les activités de gestion ultérieures.

Les modifications prennent effet immédiatement. Il est toutefois recommandé de valider les résultats en examinant les propriétés et les autorisations de chaque boîte traitée (par exemple avec Get-Mailbox, Get-MailboxPermission ou Get-RecipientPermission).

Étape facultative : enregistrer les métadonnées dans le registre ou un fichier journal

Pour les environnements hybrides ou un suivi local, vous pouvez consigner les résultats de votre audit directement dans le registre Windows.

Cette étape facultative crée une trace permanente de votre analyse sur votre machine d’administration, utile pour suivre les tendances ou pour l’intégration avec des systèmes on-premise :

  1. Créez le chemin de la clé de registre (à exécuter en tant qu’administrateur) :

New-Item -Path "HKLM:\SOFTWARE\YourOrg\MailboxAudit" -Force

  1. Enregistrez l’horodatage et le nombre de boîtes aux lettres dormantes :

Set-ItemProperty -Path "HKLM:\SOFTWARE\YourOrg\MailboxAudit" -Name "LastDormantScan" -Value (Get-Date).ToString("u")
Set-ItemProperty -Path "HKLM:\SOFTWARE\YourOrg\MailboxAudit" -Name "DormantMailboxesCount" -Value $dormantMailboxes.Count

  1. Vérifiez via l’invite de commandes (Admin) :

reg query HKLM\SOFTWARE\YourOrg\MailboxAudit

Une fois cette implémentation réalisée, votre système conservera un historique vérifiable des audits de boîtes aux lettres, consultable pour les rapports de conformité ou exploitable par des outils de supervision. Les entrées du registre subsistent jusqu’à modification ou suppression manuelle, ce qui constitue une trace durable de vos efforts d’hygiène des tenants.

⚠️ Points de vigilance

Cette section met en lumière les difficultés potentielles à garder à l’esprit en suivant ce guide.

RisquesConséquences possiblesRetours en arrière
1. Mauvaise identification de l’inactivité ($null LastLogonTime)Une boîte aux lettres sans date de connexion ($null) peut être une nouvelle boîte jamais utilisée, ou une boîte consultée uniquement via des protocoles qui ne mettent pas à jour cette statistique. La considérer à tort comme dormante risque de perturber une boîte active et critique.Recoupez avec d’autres données, comme les journaux de flux de messagerie (MessageTrace) ou le journal d’audit unifié pour les événements MailItemsAccessed, avant d’agir.
2. Autorisations d’administrateur insuffisantesExécuter Get-MailboxStatistics ou Set-Mailbox sans le rôle d’administrateur Exchange provoquera des erreurs, des échecs de script et un rapport incomplet.Vérifiez que votre compte dispose des rôles appropriés (par exemple administrateur Exchange) et d’autorisations suffisantes dans Exchange Online (RBAC) avant d’exécuter les commandes PowerShell.
3. Perte de données accidentelle ou interruption de serviceDésactiver une boîte aux lettres encore utilisée ou convertir une boîte partagée en boîte utilisateur standard coupera immédiatement l’accès de l’équipe et perturbera l’activité.Rétablissez l’accès immédiatement en inversant la commande :

Set-Mailbox -Identity "MailboxName" -AccountDisabled $false

Ou reconvertissez la boîte :

Set-Mailbox -Identity "MailboxName" -Type Shared

4. Expirations de script dans les grands tenantsExécuter des requêtes de statistiques sur des milliers de boîtes aux lettres peut déclencher les politiques de limitation d’Exchange Online, ce qui fait échouer le script ou renvoie des données incomplètes.Utilisez la pagination avec le paramètre -ResultSize Unlimited et introduisez des pauses (Start–Sleep -Seconds 2) entre les lots de requêtes pour éviter la limitation.
5. Corruption du registre (étape facultative)Modifier le registre Windows sans sauvegarde peut corrompre la configuration du système et entraîner des erreurs applicatives ou une instabilité.Exportez toujours une sauvegarde de la clé de registre avant toute modification :

reg export HKLM\SOFTWARE\YourOrg C:\backup\MailboxAuditBackup.reg

En cas d’erreur, importez la sauvegarde pour rétablir l’état précédent.

6. Faux positifs dans les rapports d’auditSe fier uniquement à LastLogonTime peut faire passer entre les mailles du filet des boîtes utilisées pour envoyer des alertes automatiques ou qui ne reçoivent que de rares e-mails, mais essentiels, d’où un classement erroné.Mettez en place un processus de vérification à plusieurs critères. Contrôlez les éléments envoyés récemment, les règles de boîte de réception ou les adresses de transfert avant de finaliser la liste des boîtes dormantes.

Points clés pour une gestion sécurisée des boîtes aux lettres partagées

Bien gérer les boîtes aux lettres inactives demande une préparation soignée, au-delà de la simple exécution de scripts.

Activer la journalisation d’audit des boîtes aux lettres

Avant toute action, vérifiez que la journalisation d’audit est activée pour vos boîtes aux lettres partagées.

Elle fournit un historique détaillé indiquant qui a accédé à la boîte et à quel moment, ce qui constitue une piste essentielle pour vérifier ultérieurement qu’une boîte partagée est active et pour les audits de conformité. Ces données historiques sont précieuses lorsqu’il faut confirmer des habitudes d’utilisation après coup.

Tenir compte des politiques de rétention et des conservations légales

Recoupez toujours votre liste de boîtes aux lettres dormantes avec les politiques de rétention Microsoft 365 et les conservations légales en vigueur dans votre entreprise.

Une boîte soumise à une conservation pour litige ou à une politique de rétention active ne peut pas être supprimée définitivement : elle doit être conservée dans son intégralité. Désactiver l’accès est acceptable, mais les données doivent être conservées conformément à vos exigences de conformité.

Vérifier les licences des boîtes aux lettres partagées

Si les boîtes aux lettres partagées de moins de 50 Go ne nécessitent généralement pas de licence, confirmez-le avant toute conversion ou suppression. Certaines applications intégrées ou configurations héritées peuvent avoir attribué une licence.

De plus, passez en revue les configurations de sécurité ou de service appliquées aux boîtes partagées : certaines fonctions ou intégrations peuvent avoir des répercussions en matière de licences selon l’usage de la boîte.

Sécuriser les scripts sur plusieurs tenants

Lorsque vous automatisez ce processus sur les tenants de vos clients, ne stockez jamais les identifiants d’administrateur en clair dans les scripts. Recourez à des méthodes sécurisées comme Azure Key Vault ou l’authentification par certificat (inscriptions d’applications) pour permettre un accès contrôlé et non interactif.

Ces pratiques réduisent le risque d’exposition des identifiants et favorisent une automatisation sécurisée et évolutive dans tous les environnements.

Comment les outils d’automatisation comme NinjaOne appuient la démarche

Une plateforme RMM peut automatiser l’exécution des tâches de gestion des boîtes aux lettres et offrir ainsi des flux de travail plus cohérents aux MSP.

FonctionUtilité
Déploiement centralisé des scriptsExécutez les scripts PowerShell nécessaires pour récupérer les données des boîtes aux lettres inactives de tous vos clients depuis un tableau de bord unique, sans connexion manuelle tenant par tenant.
Audit et reporting automatisésUtilisez la plateforme RMM pour collecter la sortie des scripts et générer des rapports sur l’ensemble des terminaux gérés, afin d’analyser les données d’activité des boîtes aux lettres.
Alertes proactivesConfigurez des déclencheurs pour créer des tickets ou des alertes lorsque le nombre de boîtes dormantes dépasse un seuil défini, ce qui permet d’intervenir avant un audit.
Intégration aux flux de travailIntégrez ces contrôles automatisés à vos procédures standardisées d’onboarding client (QBR), pour une hygiène des tenants cohérente et facturable.

Identifier les boîtes aux lettres inactives pour gagner en visibilité opérationnelle

Savoir générer des rapports sur les boîtes aux lettres inactives est indispensable pour éliminer les risques de sécurité et réduire l’encombrement administratif de vos tenants Microsoft 365. Ce guide vous a donné une marche à suivre claire pour repérer les comptes dormants avec PowerShell, les désactiver ou les étiqueter à des fins de conformité, et exporter des rapports destinés aux revues client.

En automatisant ce processus, vous transformez une tâche manuelle fastidieuse en une stratégie proactive et évolutive qui renforce l’hygiène et la sécurité des tenants sur l’ensemble de votre parc client.

You might also like

Prêt à simplifier les aspects les plus complexes de l'informatique et de la sécurité ?