web-dev-qa-db-fra.com

Serveur SMTP intégré à Windows Server 2019: e-mails bloqués dans la file d'attente et «Le serveur distant n'a pas répondu à une tentative de connexion» dans le journal des événements

Je configure un nouveau serveur dédié à l'aide de Windows Server 2019. Il remplace un ancien basé sur Windows Server 2008 R2. J'ai eu le serveur SMTP intégré fonctionnant sur l'ancien serveur sans aucun problème. J'ai configuré le nouveau serveur pour agir également comme serveur SMTP, en utilisant mes propres notes de configuration de l'ancien, ainsi que la double vérification des instructions en ligne. Fondamentalement selon les instructions ici:

http://www.vsysad.com/2017/05/install-and-configure-smtp-server-on-windows-server-2016/

Le problème que j'ai est que l'e-mail ne quittera pas C:\inetpub\mailroot\Queue et n'atteindra jamais les destinataires. Le journal des événements Windows contient les avertissements suivants:

Événement 4006, smtpsvc
"La remise du message à l'hôte '204.79.197.212' a échoué lors de la remise au domaine distant 'hotmail.com' pour la raison suivante: le serveur distant n'a pas répondu à une tentative de connexion."

Ce qui précède n'est qu'un exemple d'utilisation d'une adresse de destination Hotmail. Le même type de message est reçu lorsque vous essayez d'envoyer à des adresses sur d'autres domaines.

Ce que j'ai essayé:

  1. J'ai envoyé un e-mail manuellement en utilisant Telnet. L'e-mail est créé et reçu par le serveur SMTP local sans problème, mais ne quitte pas le dossier de file d'attente.
  2. J'ai exécuté SmtpDiag contre une adresse Hotmail et une adresse Gmail. Pas d'issues. Les enregistrements MX sont répertoriés comme prévu.
  3. J'ai utilisé Nslookup et confirmé que les enregistrements MX sont résolus.
  4. J'ai réussi à me connecter aux serveurs SMTP Hotmail et Gmail à l'aide de Telnet.
  5. J'ai utilisé Wireshark et j'ai pu voir que mon serveur essaye uniquement d'accéder à l'adresse IP du domaine d'adresse de messagerie de destination, au port 25. Donc, pour Hotmail, il résout simplement l'adresse IP de hotmail.com (qui est 204.79.197.212) et tente d'ouvrir une connexion à cette adresse sur le port 25. Cela échoue évidemment, car il n'y a pas de serveur SMTP. Mon serveur n'essaie même jamais d'accéder au serveur SMTP à l'adresse indiquée dans l'enregistrement MX.

Ce dernier élément ci-dessus est également lié à une chose intéressante que j'ai remarquée, à savoir que l'adresse IP répertoriée dans le message d'événement 4006 n'est pas l'une des adresses IP répertoriées dans les enregistrements MX. Il s'agit de l'adresse IP du domaine hotmail.com réel. Alors, pourquoi essaie-t-il de contacter hotmail.com et pas l'une des adresses répertoriées dans les enregistrements MX?

Pour poursuivre l'enquête, j'ai utilisé Telnet pour envoyer un e-mail dans l'un de mes propres domaines. Effectivement, je trouve un événement 4006 dans le journal disant:

"La remise des messages à l'hôte '[IP de mon domaine]' a échoué lors de la remise au domaine distant '[mon domaine]' pour la raison suivante: la connexion a été interrompue par l'hôte distant."

Il apparaît à nouveau que le serveur SMTP tente de se connecter à l'IP et au port 25 de mon domaine et non à l'adresse spécifiée dans l'enregistrement MX.

C'est aussi loin que je suis venu. Peut-être que j'interprète mal quelque chose ici, mais il semble certainement que le serveur SMTP de Windows essaie de se connecter au domaine de l'adresse e-mail directement au port 25 (en ignorant les enregistrements MX) ... Toutes les idées sur ce que je pourrais faire de mal ou peut-être comment procéder pour résoudre ce problème?

EDIT: Trouvé une solution de contournement ainsi que ce qui déclenche le problème. Voir ma réponse ci-dessous.

4
MrFika

J'ai continué à enquêter sur ce problème et je crois maintenant que c'est un bogue dans Windows Server 2019. J'ai en fait trouvé une solution et aussi comment reproduire ce problème avec une certitude à 100%.

Le courrier ne sera pas envoyé correctement si le type de démarrage du service SMTP est défini sur "Automatique" (c'est-à-dire qu'il démarre immédiatement au démarrage). Toutefois, si le service SMTP est défini sur démarrage manuel, puis démarré manuellement à partir de services.msc ou du gestionnaire IIS6, le courrier électronique quitte la file d'attente et est remis aux destinataires.

Si le démarrage "automatique" est utilisé pour le service, toute tentative d'envoi de courrier électronique entraînera toujours le blocage du courrier électronique dans la file d'attente et l'événement 4006 (voir le message initial pour plus de détails) sera écrit dans le journal des événements .Ceci est 100% reproductible dans mes tests.

ne solution de contournement consiste à définir le type de démarrage sur "Automatique (démarrage différé)". Si je suis correctement informé, cela entraînera le démarrage du service SMTP 2 minutes après le démarrage du dernier service "Automatique". Ce n'est pas une solution optimale, mais cela suffira pour le moment.

Pour être complet, voici une étape par étape pour reproduire le problème:

  1. Installer la fonction de serveur SMTP
  2. Accédez au gestionnaire IIS6, cliquez avec le bouton droit sur le serveur virtuel SMTP et cliquez sur "Propriétés"
  3. Allez dans l'onglet "Accès"
  4. Cliquez sur "Connexion ...", sélectionnez "Seule la liste ci-dessous" et ajoutez 127.0.0.1. Cliquez sur OK".
  5. Cliquez sur "Relais ...", sélectionnez "Seule la liste ci-dessous" et ajoutez 127.0.0.1. Décochez la case en bas de la fenêtre. Cliquez sur OK".
  6. Cliquez à nouveau sur "OK" pour quitter les propriétés du serveur virtuel SMTP.
  7. Ouvrez services.msc et définissez le type de démarrage du service "Simple Mail Transfer Protocol (SMTP)" sur "Automatique"
  8. Redémarrez l'ordinateur et essayez d'envoyer un e-mail

Remarque: les étapes 2 à 6 ne sont probablement pas nécessaires pour reproduire le problème, mais c'est la configuration de base que j'utilise.

3
MrFika