web-dev-qa-db-fra.com

Ce qui remplace IIS serveur SMTP dans Windows Server 2012

J'ai lu les notes ici http://technet.Microsoft.com/en-us/library/hh831568.aspx concernant les fonctionnalités obsolètes et supprimées dans Windows 2012 et il est dit que SMTP est obsolète. Je suppose que cela fait référence au serveur SMTP IIS. Le conseil est d'utiliser plutôt System.Net.Smtp mais je suppose qu'il s'agit d'une erreur d'impression car je ne trouve aucune référence ailleurs à quoi que ce soit appelé System.Net.Smtp.

S'ils voulaient réellement dire System.Net.Mail, c'est juste une API et je ne vois pas comment une API remplace un processus serveur. J'ai besoin d'un service qui accepte les connexions sur le port 25 et achemine l'e-mail vers la destination comme IIS SMTP le faisait auparavant).

Quelqu'un peut-il clarifier la situation ici s'il vous plaît? S'ils avaient dit qu'il avait été remplacé par Exchange, alors je les maudirais, mais au moins cela me ferait une déclaration significative à faire alors que la déclaration actuelle ne l'est certainement pas.

30
Andy

Je pense que la déclaration référencée de Microsoft est tout simplement terrible et complètement déroutante et je ne pense pas que celui qui l'a écrite ait une idée du fonctionnement du serveur SMTP. Il n'explique pas pourquoi il est obsolète ou si quelque chose ne va pas. Il y a peut-être des problèmes de sécurité ou des dépassements de tampon, mais si vous ne l'exposez pas sur un port public, je n'hésiterais pas à l'utiliser.

Voici ce que je fais:

  • Dans IIS j'ai configuré "SMTP Email" pour que le domaine pointe vers 10.0.0.1. Je le fais dans le dossier parent vers tous les sites déployés, sinon il sera effacé lorsque vous Si vous le souhaitez, vous pouvez le mettre directement dans web.config mais c'est moins flexible de cette façon.
  • Dans le serveur SMTP (via la console de gestion IIS6), j'ai configuré un serveur SMTP à 10.0.0.1. Évidemment, comme je l'ai dit auparavant, cela n'est pas exposé sur Internet public.
  • Je configure ce serveur pour relayer via un hôte intelligent via smtp.gmail.com Ou smtp.live.com
  • Dans mon application .NET, j'utilise l'API Mail pour envoyer un message à l'aide d'une new SmtpClient(). Cela récupère la configuration de IIS et envoie le courrier à mon serveur SMTP à 10.0.0.1
  • Lorsque j'envoie un e-mail, il revient instantanément car il est simplement envoyé à localhost

  • C'est maintenant l'avantage important d'utiliser un serveur SMTP local qui ne peut pas être sous-estimé et pour lequel 'System.Net.Smtp' n'est pas en soi un substitut :

    • Le serveur SMTP essaiera de relayer le courrier via votre smarthost pour vous et s'il ne peut pas l'envoyer immédiatement, il réessaiera plus tard.
    • Il est important de réaliser que parfois même smtp.gmail.com Ne répond pas ou que votre réseau est en panne. (Étonnamment commun lorsque j'ai essayé d'envoyer du courrier directement pour la première fois)
    • Sans serveur SMTP intermédiaire pour stocker les messages, vous ne pouvez pas simplement "envoyer et oublier" à partir de .NET et vous devez trouver une sorte de mécanisme de nouvelle tentative qui est complètement inutile avec un serveur SMTP qui fait tout pour vous
    • Je crois que si vous avez une limite de relais SMTP (sur votre FAI/GMail), le serveur SMTP continuera simplement à réessayer et enverra les messages le lendemain - un autre avantage énorme si vous avez un trafic incohérent au jour le jour ou que vous atteignez votre limite sans réaliser.

Allez-y et utilisez-le. Microsoft n'a pas fourni de remplacement, et c'est gratuit, alors pourquoi pas. "Obsolète" ne signifie rien à mon avis s'il n'y a pas de remplacement.

Avertissement: je suis toujours sur Server 2008 mais je suppose que tout cela s'applique toujours.

19
Simon

La fonctionnalité SMTP du rôle de serveur Web est obsolète mais n'a pas été supprimée. Vous pouvez l'installer et l'utiliser, mais il est recommandé d'utiliser un autre serveur SMTP (externe).

SMTP et les outils de gestion associés sont obsolètes. Bien que la fonctionnalité soit toujours disponible dans Windows Server 2012, vous devez commencer à utiliser System.Net.Smtp. Avec cette API, vous ne pourrez pas insérer de message dans un fichier à récupérer; configurez plutôt les applications Web pour qu'elles se connectent sur le port 25 à un autre serveur à l'aide de SMTP.

Ainsi, à l'avenir, vous installerez et utiliserez un serveur SMTP distinct (dont il existe de nombreux disponibles) pour fournir des services SMTP aux applications Web exécutées sur Windows ServerX.

14
joeqwerty

Cette description dans l'article auquel vous avez lié est terrible! Mais voici ce qu'il essaie de vous dire:

L'activation de IIS SMTP dans les versions précédentes de Windows a fait deux choses:

  1. Démarré un IIS serveur SMTP.
  2. Ajout de bibliothèques de programmation (c'est-à-dire objets COM, etc.) pour l'envoi de messages.

Si vous utilisiez ces bibliothèques sans aucune configuration, elles se soumettraient au serveur local IIS SMTP. Les programmeurs sont intrinsèquement paresseux, donc puisque cela fonctionnait avec le moins d'effort de leur part, c'est ce que Et beaucoup n’ont pas fourni de moyen d’envoyer des e-mails via un autre serveur SMTP.

L'article devrait dire que le serveur SMTP IIS n'existe plus, mais les bibliothèques SMTP sont toujours fournies et l'application doit être configurée pour utiliser un autre serveur SMTP.

4
longneck