Exchange Online : erreur « IP range contains reserved IP addresses » — diagnostic et correction du connecteur SMTP entrant

Lors de la création d’un connecteur SMTP entrant dans Exchange Online, l’erreur « IP range … contains reserved IP addresses » indique que la plage saisie n’est pas routable sur Internet. Voici un guide détaillé pour diagnostiquer et corriger le problème de façon durable.

Sommaire

Vue d’ensemble de la question

Lors de l’ajout ou de la mise à jour d’un connecteur entrant (Inbound connector) dans Exchange Online, vous obtenez :

Unable to create a connector. IP range ‘1**.1*.1.3*’ contains reserved IP addresses.

Le service refuse donc l’adresse ou la plage d’adresses IP déclarée pour le relais SMTP.

Pourquoi l’erreur apparaît

Un connecteur entrant Exchange Online validé par adresse IP exige des adresses publiques, fixes et routables sur Internet. Les plages privées ou spéciales (réservées, lien local, loopback, CGNAT, multicast, etc.) sont interdites, car elles ne permettent pas à Microsoft 365 d’identifier de manière fiable la source du trafic SMTP.

Plages IPv4 non autorisées courantes

PlageTypePourquoi interditExemple de symptôme
10.0.0.0/8Privée (RFC 1918)Non routable sur InternetErreur « contains reserved IP addresses » à l’enregistrement
172.16.0.0/12Privée (RFC 1918)Non routable sur InternetMême symptôme
192.168.0.0/16Privée (RFC 1918)Non routable sur InternetMême symptôme
169.254.0.0/16Lien local / Auto-IPAdresses auto‑attribuées, non routablesDétection d’une IP « 169.254.x.x » dans des logs locaux
100.64.0.0/10CGNAT (RFC 6598)Partagée par l’ISP, pas d’identité uniqueFlux sortants masqués par l’opérateur
127.0.0.0/8LoopbackInterface locale, jamais routéeNon applicable au trafic SMTP sortant
0.0.0.0/8SpécialeAdresse non spécifique, non routableSouvent liée à une mauvaise détection d’IP
224.0.0.0/4MulticastNon utilisé pour SMTPInvalide à l’enregistrement
240.0.0.0/4RéservéeNon routable en pratiqueInvalide à l’enregistrement

Plages IPv6 non autorisées courantes

PlageTypePourquoi interditExemple de symptôme
fc00::/7Unique Local (ULA)Non routable globalementRefus si déclarée dans le connecteur
fe80::/10Lien localNon routableInvalide
::1/128LoopbackLocal uniquementInvalide

Diagnostic rapide

Avant toute modification, validez ces points :

  • Votre relais SMTP sort-il réellement avec une IP publique fixe ? S’il sort via un NAT d’opérateur (CGNAT) ou via plusieurs IP, Exchange Online ne peut pas vous reconnaître.
  • La plage saisie contient‑elle uniquement des IP publiques routables ? Bannissez toute IP privée/speciale.
  • Vos journaux et en‑têtes de mails confirment‑ils la même IP ? Une divergence = un autre NAT s’interpose.

Identifier la véritable IP source

Depuis votre appliance ou passerelle

  • Ouvrez les journaux de votre passerelle SMTP (serveur Edge, Proofpoint, Cisco ESA, FortiMail, etc.).
  • Repérez l’adresse publique de sortie utilisée pour les connexions vers outlook.com / *.protection.outlook.com.

À partir d’un message déjà remis

Récupérez un e‑mail envoyé via votre infrastructure vers une boîte Microsoft 365 et lisez ses en‑têtes. Cherchez la première ligne Received: côté Microsoft 365 :

Received: from mail.example-relay.local (203.0.113.45)
 by ... .protection.outlook.com (version=TLS1_2 cipher=...) with SMTP;
 Tue, 23 Jul 2024 10:15:23 +0000

Ici, 203.0.113.45 (plage de documentation) est l’adresse vue par Exchange Online. C’est celle qu’il faut déclarer dans le connecteur, pas une IP privée interne ni une IP masquée par un autre NAT.

Attention aux environnements multi‑sorties

  • Load balancer / HA pair : deux nœuds différents peuvent sortir par deux IP publiques distinctes.
  • Pare‑feux multiples : selon la route active, l’e‑gress change.
  • Cloud / IaaS : sans IP élastique dédiée, l’e‑gress peut basculer.

Corriger le connecteur dans le Centre d’administration Exchange

  1. Ouvrez Exchange Admin Center > Mail flow > Connectors.
  2. Add a connector (ou modifiez l’existant).
  3. Choisissez le type :
    • On‑premises (hybride), ou
    • Partner organization (passerelle tierce).
  4. Dans la section How do you want to identify the partner, choisissez By verifying the sender IP address.
  5. Renseignez uniquement l’IP publique (ou la plage CIDR) réellement utilisée (ex. 203.0.113.45/32 pour une IP unique).
  6. Enregistrez.

Évitez d’entrer une plage couvrant des blocs interdits (par ex. 203.0.112.0/20 si cela englobe des IP réservées). La saisie doit cibler exclusivement des IP publiques routables.

Équivalents PowerShell Exchange Online

Connexion (module Exchange Online PowerShell v2) :

Connect-ExchangeOnline

Créer un connecteur partenaire IP‑based :

New-InboundConnector `
  -Name "Relay - Partner" `
  -ConnectorType Partner `
  -SenderIPAddresses 203.0.113.45 `
  -RequireTls $true `
  -RestrictDomainsToIPAddresses $true `
  -SenderDomains "*"

Mettre à jour un connecteur existant :

Set-InboundConnector `
  -Identity "Relay - Partner" `
  -SenderIPAddresses 203.0.113.45,198.51.100.27

Vérifier la valeur actuelle :

Get-InboundConnector "Relay - Partner" | fl Name,ConnectorType,SenderIPAddresses,RequireTls,SenderDomains

Validation côté réseau

  • Sortie SMTP 25/TCP : autorisée depuis l’IP publique déclarée vers Microsoft 365. Pas de filtrage sortant qui force un autre NAT.
  • NAT statique : fixez une traduction source statique pour l’IP du relais.
  • Pas de CGNAT : si votre FAI applique le CGNAT, demandez une IP publique fixe dédiée.
  • Reverse DNS : en dehors du connecteur, configurez un PTR cohérent (bon pour la réputation).
  • SPF : ajoutez l’IP (ou l’include de votre passerelle) à votre enregistrement SPF.

Checklist de contrôle

ÉlémentOù regarderCommentRésultat attendu
IP e‑gress réelleLogs passerelle / en‑têtesRechercher la première IP « Received » vue par MicrosoftUne IP publique unique
Stabilité NATPare‑feuRègle SNAT dédiéePas de bascule d’IP
Ouverture 25/TCPFirewall e‑gressVérifier policy/routeFlux vers *.protection.outlook.com
Connecteur EXOEAC / PowerShellSenderIPAddresses exactesUniquement IP publiques

Scénarios fréquents et corrections

ScénarioSymptômeCauseCorrection
Relais derrière CGNATErreur à la créationIP source 100.64.0.0/10Commander une IP publique fixe dédiée
Deux pare‑feux en actif/actifRemises aléatoires / intermittentesIPs e‑gress différentesDéclarer les 2 IP, ou forcer un e‑gress unique
Appliance en clusterDivergence de connecteurSNAT par nœudSNAT commun / VIP e‑gress
Range trop largeRefus « contains reserved »La plage englobe un bloc réservéRéduire la plage au strict nécessaire
Adresse privée saisieRefus immédiatRFC 1918Remplacer par IP publique routable

Format de saisie des adresses IP

  • IP unique : 203.0.113.45
  • Plage CIDR : 198.51.100.0/28 (16 adresses)
  • Plusieurs IP : séparez par des virgules en PowerShell, ajoutez‑les une par une dans l’EAC

Évitez les plages start‑end (203.0.113.10-203.0.113.20) si votre interface ne les supporte pas explicitement. Le format CIDR est la méthode la plus stable.

Tests et validation après modification

  1. Relance d’un envoi de test vers une boîte M365 et vérification des en‑têtes Received.
  2. Traçage (Message trace) depuis le Centre de sécurité & conformité pour confirmer la connexion via le connecteur.
  3. Vérification PowerShell de la configuration : Get-InboundConnector | ft Name,ConnectorType,SenderIPAddresses
  4. Surveillance de la réputation et des NDR éventuels (4xx/5xx) pour affiner SPF/DKIM/TLS si nécessaire.

Scripts utiles côté administrateur

Détecter une adresse privée/réservée en PowerShell

# Renvoie $true si l'IP est privée ou réservée (simplifié IPv4)
function Test-PrivateOrReservedIPv4 {
    param([string]$Ip)
    if (-not [System.Net.IPAddress]::TryParse($Ip, [ref]([System.Net.IPAddress]$null))) { return $true }
    $bytes = ([System.Net.IPAddress]::Parse($Ip)).GetAddressBytes()
    $b0,$b1 = $bytes[0],$bytes[1]
    switch ($true) {
        { $b0 -eq 10 } { return $true }                           # 10.0.0.0/8
        { $b0 -eq 172 -and $b1 -ge 16 -and $b1 -le 31 } { return $true } # 172.16.0.0/12
        { $b0 -eq 192 -and $b1 -eq 168 } { return $true }         # 192.168.0.0/16
        { $b0 -eq 169 -and $b1 -eq 254 } { return $true }         # 169.254.0.0/16
        { $b0 -eq 100 -and $b1 -ge 64 -and $b1 -le 127 } { return $true } # 100.64.0.0/10
        { $b0 -eq 127 } { return $true }                          # 127.0.0.0/8
        { $b0 -eq 0 } { return $true }                            # 0.0.0.0/8
        { $b0 -ge 224 } { return $true }                          # 224.0.0.0/4 et 240.0.0.0/4
        default { return $false }
    }
}

Utilisez cette fonction pour filtrer rapidement une liste d’IP candidates avant saisie dans le connecteur.

Bonnes pratiques d’architecture

  • Centraliser la sortie SMTP derrière une ou deux IP publiques fixes maximum, documentées.
  • Séparer l’e‑gress mail du reste du trafic Internet pour éviter tout changement d’IP imprévu.
  • Verrouiller la configuration NAT (SNAT source) et versionner les règles pare‑feu.
  • Aligner l’identité DNS (PTR/rDNS, HELO/EHLO, SPF, DKIM) pour une meilleure délivrabilité.
  • Surveiller les changements chez les prestataires de sécurité mail (plages d’IP pouvant évoluer). Si les IP changent souvent, envisagez l’authentification par certificat plutôt que par IP.

Quand escalader au support

Si l’erreur persiste après correction :

  • Ouvrez un ticket Microsoft 365 et joignez :
    • La configuration du connecteur (captures EAC ou sortie Get-InboundConnector).
    • Des extraits de journaux montrant l’IP source et les tentatives de connexion.
    • Un message de test avec en‑têtes complets.
  • Demandez la vérification côté Microsoft des logs de transport pour confirmer l’IP vue à l’entrée.

FAQ

Puis‑je déclarer une plage très large pour “être tranquille” ?

Non. Outre l’aspect sécurité, une plage large risque d’englober des blocs réservés et sera refusée. Déclarez uniquement les IP nécessaires.

Mon prestataire e‑mail change d’IP sans prévenir. Que faire ?

Privilégiez un connecteur basé sur certificat plutôt que sur IP, ou exigez une IP dédiée contractuellement.

Le connecteur est valide mais mes mails sont rejetés

Cela peut provenir d’autres contrôles (TLS requis, SPF/DKIM/DMARC, réputation). Le connecteur IP règle l’authentification de la source, pas la réputation globale.

Exemple de procédure complète

  1. Identifier l’IP e‑gress via en‑têtes ou journaux (203.0.113.45).
  2. Vérifier qu’elle n’est pas privée (voir tableau).
  3. Forcer le NAT source vers cette IP si nécessaire.
  4. Déclarer l’IP dans le connecteur EAC/PowerShell.
  5. Tester un envoi vers M365 et confirmer l’IP dans Received.
  6. Documenter le changement et mettre à jour l’inventaire (NAT, EAC, SPF).

Modèle de documentation à réutiliser

Titre: Relais SMTP > Exchange Online (connecteur entrant)
IP publique e‑gress: 203.0.113.45 (/32)
Type de connecteur: Partner
Authentification: IP address + TLS requis
SenderDomains: *
Règles NAT: SNAT fixe depuis 10.20.30.40 vers 203.0.113.45 pour TCP/25
Pare-feu sortant: Autorisé vers *.protection.outlook.com:25
SPF: v=spf1 ip4:203.0.113.45 include:gateway.example -all
Contact FAI: support@isp.example (ticket #123456)
Date & Change ID: 2025-09-10 / CHG-04567

Résumé opérationnel

Cette erreur se corrige en remplaçant toute IP privée ou spéciale par l’IP publique e‑gress réelle et fixe de votre relais, en consolidant le NAT source, puis en validant via un envoi de test et le traçage. Documentez et surveillez. Si doute persistant, sollicitez le support avec des journaux précis.


Annexe : rappel des plages interdites

IPv4 : 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, 169.254.0.0/16, 100.64.0.0/10, 127.0.0.0/8, 0.0.0.0/8, 224.0.0.0/4, 240.0.0.0/4.

IPv6 : fc00::/7, fe80::/10, ::1/128 (et, de manière générale, toute adresse non globale).

Conclusion

En Exchange Online, un connecteur IP‑based doit refléter exactement l’adresse publique de votre trafic SMTP sortant. La moindre présence d’une adresse réservée dans la plage saisie entraîne un refus immédiat. En identifiant la véritable IP e‑gress, en l’isolant via un NAT statique et en la déclarant précisément dans le connecteur, vous rétablissez un chemin de remise fiable, sécurisé et conforme aux bonnes pratiques de Microsoft 365.

Sommaire