Exchange Online : Bloquer les transferts automatiques d’emails (Guide 2025)

Exchange Online : Bloquer redirection email et transfert automatique (PowerShell 2025)

Photo by Kissing Sisters on Giphy

Introduction

Les transferts automatiques d’emails vers l’extérieur ? Un cauchemar pour tout admin système qui se respecte. Si vous gérez un tenant Exchange Online, vous avez probablement déjà eu cette sueur froide en découvrant qu’un utilisateur a configuré une redirection email vers sa boîte perso… avec toutes les données sensibles qui sortent en prime.

Microsoft n’a pas exactement facilité les choses avec ses multiples canaux de transfert et ses interfaces qui donnent l’illusion de contrôle. Mais rassurez-vous : avec les bonnes commandes PowerShell Exchange Online et une stratégie claire, on peut verrouiller ça proprement.

Dans ce guide, je vous montre comment bloquer efficacement tous les transferts automatiques dans Exchange Online, détecter ceux déjà en place, et mettre en place un monitoring automatisé. Du RBAC aux Transport Rules en passant par l’audit, on couvre tout avec PowerShell Exchange Online sécurité.

Pourquoi c’est un problème majeur en 2025

Avant de foncer tête baissée dans les commandes, comprenons pourquoi Microsoft nous complique la vie avec ses transferts.

Les risques sont multiples et bien réels :

🔓 Fuite de données incontrôlée
Vos emails confidentiels partent vers Gmail, Yahoo ou pire… sans aucune traçabilité.

🛡️ Contournement des protections
ATP (Advanced Threat Protection), DLP, audit logs… tout ça devient inutile si les mails sont redirigés.

⚖️ Non-conformité RGPD
L’entreprise perd la maîtrise de l’information. Bonjour l’amende de la CNIL.

🎯 Vecteur d’exfiltration
Un attaquant peut créer discrètement une règle de transfert pour siphonner vos données.

💡 À savoir : Les cyberattaquants utilisent de plus en plus les règles de transfert automatique pour exfiltrer des données après une intrusion. C’est discret et difficile à détecter.

Les deux canaux de transfert à maîtriser

Exchange Online propose deux mécanismes distincts pour rediriger automatiquement des emails :

1. Redirection globale de boîte (ForwardingAddress)

Cette méthode redirige tous les emails reçus vers une adresse externe :

# Via l'interface OWA ou en PowerShell
Set-Mailbox prenom.nom@domaine.com -ForwardingSmtpAddress "externe@gmail.com"

Caractéristiques :

  • Transfert systématique de tous les emails
  • Configurable via OWA ou PowerShell
  • Visible dans les propriétés de la boîte
  • Géré par les paramètres ForwardingAddress et ForwardingSmtpAddress

2. Règles de boîte conditionnelles (InboxRule)

Plus subtiles, ces règles permettent un transfert sélectif :

# Exemple de règle pernicieuse
New-InboxRule -Name "Forward Important" -SubjectContainsWords "Confidentiel" -ForwardTo "attaquant@externe.com"

Caractéristiques :

  • Transfert conditionnel (expéditeur, sujet, mots-clés…)
  • Plus difficiles à détecter
  • Configurables uniquement par l’utilisateur
  • Gérées via Get-InboxRule

Méthode 1 : RBAC – Limiter l’accès aux interfaces

Photo by The Office on Giphy

Le RBAC (Role-Based Access Control) permet de retirer les boutons de transfert des interfaces utilisateur. C’est un premier verrou, mais attention aux limitations.

Créer un rôle personnalisé

# Étape 1 : Créer un rôle basé sur MyBaseOptions
New-ManagementRole -Name "MyBaseOptions-NoForward" -Parent "MyBaseOptions"

# Étape 2 : Supprimer les paramètres dangereux
Set-ManagementRoleEntry "MyBaseOptions-NoForward\Set-Mailbox" -RemoveParameter -Parameters @(
    "ForwardingAddress",
    "ForwardingSmtpAddress", 
    "DeliverToMailboxAndForward"
)

Créer et appliquer la policy

# Étape 3 : Créer une policy utilisateur
New-RoleAssignmentPolicy -Name "PolicyNoEmailForward" -Roles @(
    "MyContactInformation",
    "MyRetentionPolicies", 
    "MyBaseOptions-NoForward",
    "MyTextMessaging"
)

# Étape 4 : Appliquer à une boîte
Set-Mailbox prenom.nom@domaine.com -RoleAssignmentPolicy "PolicyNoEmailForward"

⚠️ Erreur fréquente : Le RBAC ne bloque PAS les transferts configurés par un admin, ni les InboxRules, ni les transferts déjà existants. C’est juste cosmétique au niveau interface.

Appliquer en masse

# Appliquer la policy à toutes les boîtes utilisateur
Get-Mailbox -RecipientTypeDetails UserMailbox | Set-Mailbox -RoleAssignmentPolicy "PolicyNoEmailForward"

Méthode 2 : Transport Rules – Le vrai blocage (PowerShell Exchange Online sécurité)

Photo by rebloggy.com on Giphy

Les Transport Rules (règles de flux de messagerie) sont la seule solution efficace pour bloquer redirection email Office 365, quel que soit le canal utilisé. Cette méthode PowerShell offre un contrôle total sur les transferts email Exchange Online.

La règle ultime

New-TransportRule -Name "Block-Auto-Forwarding" `
  -SentToScope NotInOrganization `
  -FromScope InOrganization `
  -MessageType AutoForward `
  -ExceptIfFrom @("admin@votredomaine.com", "service@votredomaine.com") `
  -RejectMessageReasonText "Le transfert automatique vers l'extérieur est interdit par la politique de sécurité."

Paramètres expliqués

ParamètreDescriptionPourquoi c’est important
FromScope InOrganizationEmails provenant de votre organisationÉvite de bloquer les emails légitimes entrants
SentToScope NotInOrganizationDestinataire externeCible uniquement les sorties vers l’extérieur
MessageType AutoForwardMessages transférés automatiquementDistingue transfert auto vs transfert manuel
ExceptIfFromListe blanche d’expéditeursPermet les transferts légitimes (comptes de service)

Version avancée avec logging

New-TransportRule -Name "Block-Auto-Forwarding-Advanced" `
  -SentToScope NotInOrganization `
  -FromScope InOrganization `
  -MessageType AutoForward `
  -ExceptIfFrom @("admin@votredomaine.com") `
  -RejectMessageReasonText "Transfert automatique bloqué. Contactez le support IT." `
  -GenerateIncidentReport "admin@votredomaine.com" `
  -IncidentReportContent @("Sender", "Recipients", "Subject", "MessageHeaders")

Cette version génère un rapport d’incident à chaque blocage pour traçabilité.

Audit et détection des transferts actifs (PowerShell Exchange Online)

Avant d’appliquer le blocage, il faut faire le ménage dans l’existant. Ces scripts PowerShell Exchange Online sécurité vous permettent de détecter tous les transferts email configurés.

Scanner les ForwardingAddress

# Trouver toutes les boîtes avec redirection active
$ForwardingMailboxes = Get-Mailbox -ResultSize Unlimited | Where-Object {
    $_.ForwardingSmtpAddress -or $_.ForwardingAddress
} | Select-Object DisplayName, ForwardingAddress, ForwardingSmtpAddress, PrimarySmtpAddress

# Afficher les résultats
$ForwardingMailboxes | Format-Table -AutoSize

# Exporter en CSV pour analyse
$ForwardingMailboxes | Export-Csv "C:\temp\forwarding-audit.csv" -NoTypeInformation

Scanner les InboxRules suspectes

# Scanner toutes les règles de transfert
$SuspiciousRules = @()

Get-Mailbox -ResultSize Unlimited | ForEach-Object {
    $Mailbox = $_
    $Rules = Get-InboxRule -Mailbox $Mailbox.Alias | Where-Object {
        $_.ForwardTo -or $_.RedirectTo
    }
    
    foreach ($Rule in $Rules) {
        $SuspiciousRules += [PSCustomObject]@{
            Mailbox = $Mailbox.DisplayName
            Email = $Mailbox.PrimarySmtpAddress
            RuleName = $Rule.Name
            ForwardTo = $Rule.ForwardTo -join "; "
            RedirectTo = $Rule.RedirectTo -join "; "
            Enabled = $Rule.Enabled
        }
    }
}

# Afficher et exporter
$SuspiciousRules | Format-Table -AutoSize
$SuspiciousRules | Export-Csv "C:\temp\inbox-rules-audit.csv" -NoTypeInformation

Suppression en masse (avec précaution)

# ATTENTION : Testez d'abord sur quelques boîtes !

# Supprimer toutes les redirections ForwardingAddress
Get-Mailbox -ResultSize Unlimited | Where-Object {
    $_.ForwardingSmtpAddress -or $_.ForwardingAddress
} | Set-Mailbox -ForwardingAddress $null -ForwardingSmtpAddress $null

# Supprimer les InboxRules de transfert (plus délicat)
Get-Mailbox -ResultSize Unlimited | ForEach-Object {
    $Rules = Get-InboxRule -Mailbox $_.Alias | Where-Object {
        $_.ForwardTo -or $_.RedirectTo
    }
    $Rules | Remove-InboxRule -Confirm:$false
}

Script de monitoring automatisé

Créez un script PowerShell planifiable pour détecter quotidiennement les nouveaux transferts :

# Script : Monitor-EmailForwarding.ps1
param(
    [string]$ReportPath = "C:\Scripts\Reports",
    [string]$AdminEmail = "admin@votredomaine.com"
)

# Connexion Exchange Online
Connect-ExchangeOnline -ShowProgress $false

$Date = Get-Date -Format "yyyy-MM-dd"
$Report = @()

# Scan ForwardingAddress
$ForwardingBoxes = Get-Mailbox -ResultSize Unlimited | Where-Object {
    $_.ForwardingSmtpAddress -or $_.ForwardingAddress
}

foreach ($Box in $ForwardingBoxes) {
    $Report += [PSCustomObject]@{
        Type = "ForwardingAddress"
        Mailbox = $Box.DisplayName
        Email = $Box.PrimarySmtpAddress
        Target = $Box.ForwardingSmtpAddress
        Details = "Redirection globale active"
        Date = $Date
    }
}

# Scan InboxRules
Get-Mailbox -ResultSize Unlimited | ForEach-Object {
    $Mailbox = $_
    $Rules = Get-InboxRule -Mailbox $Mailbox.Alias | Where-Object {
        $_.ForwardTo -or $_.RedirectTo
    }
    
    foreach ($Rule in $Rules) {
        $Report += [PSCustomObject]@{
            Type = "InboxRule"
            Mailbox = $Mailbox.DisplayName
            Email = $Mailbox.PrimarySmtpAddress  
            Target = ($Rule.ForwardTo + $Rule.RedirectTo) -join "; "
            Details = "Règle: $($Rule.Name)"
            Date = $Date
        }
    }
}

# Générer le rapport
$ReportFile = "$ReportPath\EmailForwarding-$Date.csv"
$Report | Export-Csv $ReportFile -NoTypeInformation

# Envoyer par email si détections
if ($Report.Count -gt 0) {
    $Subject = "ALERTE : $($Report.Count) transfert(s) d'email détecté(s)"
    $Body = "Transferts détectés le $Date. Voir fichier joint."
    
    Send-MailMessage -To $AdminEmail -Subject $Subject -Body $Body -Attachments $ReportFile -SmtpServer "smtp.office365.com" -Port 587 -UseSsl
}

Write-Host "Scan terminé. $($Report.Count) transfert(s) détecté(s)."

Communication avec les utilisateurs

Quand vous détectez un transfert, informez l’utilisateur de manière pédagogique :

Objet : [IT] Transfert automatique d’emails détecté sur votre boîte

Bonjour [Prénom],

Nous avons détecté que votre boîte email professionelle transfère automatiquement vos messages vers [adresse externe].

Pourquoi c’est problématique :

  • Les données confidentielles sortent de l’entreprise
  • Contournement des protections de sécurité
  • Non-conformité avec le RGPD

Ce transfert sera désactivé sous 48h.

Alternatives recommandées :

  • Configurez votre client Outlook pour gérer plusieurs comptes
  • Utilisez l’app mobile Outlook (iOS/Android)
  • Consultez votre messagerie via OWA : outlook.office365.com

Pour toute question : support@votredomaine.com

Cordialement,
L’équipe IT

Bonnes pratiques et recommandations

Stratégie de déploiement progressive

  1. Phase 1 : Audit complet (2 semaines)
  2. Phase 2 : Communication utilisateurs + suppression transfers existants (1 semaine)
  3. Phase 3 : Activation RBAC (immédiat)
  4. Phase 4 : Activation Transport Rules (1 semaine après)
  5. Phase 5 : Monitoring automatisé (permanent)

🔗 Environnement hybride ? Si vous gérez un mix Exchange On-Premises + Exchange Online, assurez-vous que vos rôles FSMO Active Directory sont correctement configurés. Un dysfonctionnement AD peut créer des failles de sécurité dans votre politique de transferts.

Liste blanche à prévoir

Certains comptes légitimes peuvent avoir besoin de transférer :

# Exemples d'exceptions courantes
$WhitelistedAccounts = @(
    "noreply@votredomaine.com",     # Comptes de service
    "notifications@votredomaine.com", # Notifications automatiques  
    "support@votredomaine.com"      # Support client
)

Surveillance continue

  • Script de monitoring quotidien
  • Alertes en temps réel sur nouvelles règles
  • Rapport mensuel pour la direction
  • Formation utilisateurs régulière

💡 Astuce pro : Créez un groupe de sécurité « ForwardingExceptions » dans Azure AD pour gérer facilement la liste blanche via les groupes plutôt qu’en dur dans les scripts.

Conclusion

Bloquer les transferts automatiques dans Exchange Online demande une approche méthodique combinant RBAC, Transport Rules et monitoring. C’est un incontournable de la sécurité email en 2025, surtout avec la multiplication des cyberattaques ciblant les messageries d’entreprise.

L’implémentation que je vous ai présentée vous donne un contrôle total sur les flux sortants, mais n’oubliez pas l’aspect humain : vos utilisateurs ont besoin d’alternatives pratiques. Un bon déploiement s’accompagne toujours de formation et d’outils adaptés.

Dans un prochain guide, nous verrons comment aller plus loin avec la protection contre l’exfiltration de données via SharePoint et OneDrive. Car spoiler alert : les transferts emails ne sont qu’une partie du problème…


💬 Une question sur ce guide ? N’hésitez pas à me contacter ou à laisser un commentaire. J’ai probablement déjà rencontré votre cas de figure !