Translate

mardi 8 juillet 2014

[INFO]: Un bel "oubli" de la DevTeam Exchange concernant le POP3 et l'IMAP pour des rôles Exchange 2013 consolidés

Bonjour,

Cela faisait TRÈS LONGTEMPS que je n'avais posté un petit article... Un an et demi en sous-marin chez un client et un nouveau bébé, ça occupe !

Bref...

Aujourd'hui je voulais vous faire partager un souci rencontré chez un client.

Nous avons chez ce client une infrastructure Exchange Server 2013, les rôles Client Access Server et Mailbox Server sont consolidés et les services POP3 sont utilisés par quelques boîtes aux lettres applicatives.
Rien de bien extraordinaire donc, si ce n'est que suite à l'installation du CU5 d'Exchange 2013 le service POP3 Back-End (MSExchangePOP3BE) n'avait pas redémarré.

Coup de chance, personne n'avait redémarré le serveur, sinon cela aurait probablement "masqué" le problème sans trouver la vraie cause (et donc celui-ci aurait pu survenir à nouveau). Vous comprendrez pourquoi en lisant le reste de cet article... ;)
NB: je parle de CU5 ici, mais il n'est pas en cause...

Le problème

Le service MSExchangePOP3BE ne démarrait pas tout simplement car le service n'arrivait pas à ouvrir le port 9995/tcp. Ce port est bien le port du service POP3 Back-End (les ports utilisés par la partie POP3 Front-End étant 110/tcp (non SSL/TLS) et 995/tcp (SSL/TLS)).

Diagnostic et identification de la cause

Après un petit netstat -an il a vite été mis en évidence que ce port était déjà utilisé, en l’occurrence par une chose (vraiment) anodine: en tant que port source à destination d'une connexion vers un Global Catalog. Une simple connexion vers l'AD... déroutant :) ! Le service essayant de se lier à "0.0.0.0:9955", cela échoue.

Pourquoi est-ce arrivé ? Probablement la faute a pas de chance: lors de la mise à niveau vers le CU5, tous les services Exchange ont été arrêtés puis redémarrés. Entre temps, un processus a pris ce port, puisqu'il fait partie des ports utilisables dynamiquement dans Windows...

Oui... et non! Depuis Windows Server 2008 Microsoft a réduit la plage des ports dynamiques (aussi appelée plage de ports éphémères) de 49152 à 65535.

Cependant, et il s'agit d'un héritage d'Exchange Server 2010, lorsque le rôle Client Access est installé sur un serveur, la plage de ports dynamiques est modifiée pour être [6005-59530]. Ce comportement a été conservé par le Setup d'Exchange Server 2013.

Vous pouvez consulter la plage de ports dynamiques sur vos serveurs en utilisant la commande suivante:
netsh int ipv4 show dynamicport tcp
(variantes avec ipv6 et udp)



De même, la liste des exclusions (sur processus ayant réservé des ports ou exclusions permanentes):
netsh int ipv4 show excludedportange protocol=tcp
(variantes avec ipv6 et udp)

NB: j'ai un peu raté ma capture d'écran (ipv6 deux fois), mais cela ne change rien au principe... :P



La résolution

Un simple redémarrage du serveur aurait résolu le problème, mais n'aurait pas éliminé la cause et donc n'aurait pas garanti que celui-ci puisse survenir à nouveau.

Afin de bloquer le port 9955/tcp sur IPv4 et IPv6 il suffit d'exécuter les commandes suivantes:

netsh int ipv4 add excludedportrange protocol=tcp startport=9955 numberofports=1
netsh int ipv6 add excludedportrange protocol=tcp startport=9955 numberofports=1

Et pour ne rien oublier, en ce qui concerne le service IMAP4 Back-End (MSExchangeIMAP4BE):

netsh int ipv4 add excludedportrange protocol=tcp startport=9933 numberofports=1
netsh int ipv6 add excludedportrange protocol=tcp startport=9933 numberofports=1

Post-mortem

Je n'ai pas trouvé d'autre cas similaires avec des services Back-End. HTTP, Transport et UM utilisent tous (que je sache) des ports inférieurs à 6005/tcp. Il est cependant toujours bon de conserver à l'esprit que cela pourrait arriver de nouveau, sur d'autres services...
Cependant, il semblerait que la DevTeam Exchange n'ait pas pensé à ce cas. Fait rigolo, cela ne serait pas survenu sur une installation Exchange pure "Mailbox", ni même avec Exchange Server 2010. Or, l'équipe Exchange préconise plus que fortement depuis quelques temps déjà de consolider les rôles. Certains changements d'architecture liés à Exchange Server 2013 (Front-End / Back-End).