在Windows Server 2008上的IIS 7下设置SMTP

在Windows Server 2008上的IIS 7下设置SMTP,iis,iis-7,smtp,Iis,Iis 7,Smtp,该网站最初是在IIS 6下创建的,该网站在那里运行得非常好。现在,在重新定位到运行W2K8S的新服务器后,除了从网站发送邮件之外,其他一切都可以在IIS 7下正常工作 在网上做了简短的调查,看看是否有人有一个好的分辨率,但没有用。。。在微软自己的支持网站上甚至连一丝希望都没有 以下是迄今为止在新W2K8S机箱上采取的步骤: 在服务器管理器下添加了SMTP功能 在IIS 7管理器中为站点本身启用SMTP电子邮件以将电子邮件传递到SMTP服务器本地主机,未成功 已在IIS 7管理器中为根站点启用S

该网站最初是在IIS 6下创建的,该网站在那里运行得非常好。现在,在重新定位到运行W2K8S的新服务器后,除了从网站发送邮件之外,其他一切都可以在IIS 7下正常工作

在网上做了简短的调查,看看是否有人有一个好的分辨率,但没有用。。。在微软自己的支持网站上甚至连一丝希望都没有

以下是迄今为止在新W2K8S机箱上采取的步骤:

  • 在服务器管理器下添加了SMTP功能
  • 在IIS 7管理器中为站点本身启用SMTP电子邮件以将电子邮件传递到SMTP服务器本地主机,未成功
  • 已在IIS 7管理器中为根站点启用SMTP电子邮件(不确定是否需要启用才能启用站点)以将电子邮件传递到SMTP服务器本地主机,未成功
在这些基本设置失败后,我想确保我可以在端口25上与服务器进行通信。而且我可以成功地从/到相关服务器远程登录到端口25上的测试电子邮件,获得HELO等。因此我不认为这是防火墙配置问题

IIS 7安装测试是使用匿名身份验证和Windows身份验证执行的-两种方式都没有运气

手动检查Web配置文件,它反映了服务器使用本地主机的正确条目


阅读手册,也没有运气…:-/

我不确定这个诊断工具是否能提供更多的见解


此工具适用于x86。

我也遇到了同样的问题

我发现了这个链接

我能够解决这个问题。转到此链接的最后一个帖子

在我的例子中,我通过授予“网络服务”用户“拾取”文件夹的权限来解决问题


希望这可能会有所帮助……

您是否检查了SMTP服务是否正在接受本地主机的邮件中继?要做到这一点,请从相关计算机向本地SMTP服务器发送telnet,并使用SMTP命令发送测试消息。SMTP服务对命令格式非常挑剔,因此您在输入命令时必须小心(即不要使用退格来更正打印错误)。

这是一个偶然的机会,是一个依靠CDONTS发送邮件的旧“经典”ASP应用程序吗

如果是这样的话,也许其中一个会有帮助


编辑:在注意到原始帖子上的注释之前,我已经回复了。忽略…

我在研究如何在我的ASP.Net应用程序上运行SMTP时发现了这篇文章,我们正在从IIS6迁移到IIS7。我发现我们根本不需要设置SMTP服务器——只需设置SMTP电子邮件就足够了——还有一个额外的好处,就是不需要考虑通过web服务器进行SMTP中继的安全问题

因此,如果您不需要您的web服务器来实际执行SMTP路由,那么您根本不需要在IIS7中设置服务器。

好的,在“授予网络用户对拾取文件夹的写入权限”的帖子中,它终于起作用了。我所做的是:

  • 除非您正在运行exchange server,否则您需要使用“智能主机”。我使用的是Gmail帐户,Gmail允许SMTP转发

  • 您可以在SMTP服务器和IIS7配置设置上使用Windows身份验证实现安全性

  • 第一步,在网页中设置delivery method=“network”,并独立于SMTP服务器配置智能主机

    SmtpClient client = new SmtpClient("smtp.gmail.com", 587);
    client.DeliveryMethod = SmtpDeliveryMethod.Network;
    client.UseDefaultCredentials = false; // use your smart host login client.Credentials = new NetworkCredential("xxxxx@gmail.com", "password");
    client.EnableSsl = true;
    
    这将直接发送电子邮件并绕过SMTP服务器

  • SmtpClient client = new SmtpClient("smtp.gmail.com", 587);
    client.DeliveryMethod = SmtpDeliveryMethod.Network;
    client.UseDefaultCredentials = false; // use your smart host login client.Credentials = new NetworkCredential("xxxxx@gmail.com", "password");
    client.EnableSsl = true;
    
  • 第二步,一旦你有工作,编写一个示例windows应用程序使用你的SMTP服务器独立于你的网页,并得到工作

    SmtpClient client = new SmtpClient("your server ip", 25);
    client.DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis;
    client.EnableSsl = false; // you can't use ssl with a pickup folder
    client.UseDefaultCredentials = true; // use windows credentials
    
    这将绕过您的网页,并确保您已正确配置SMTP服务器

  • 最后,通过设置皮卡文件夹上的共享以允许对
    网络服务的写入访问,让您的网页正常工作。将第3步中的登录信息传输到SMTP设置中,将身份验证设置为集成安全性,并将第4步中的代码用于网页


  • 我的问题和这个老问题中描述的完全一样。最后我找到了解决办法。在我的例子中,操作系统是W2008R2和IIS7.5,但我认为这并不重要

    潜在的问题是W2008 R2中的SMTP服务似乎是IIS的遗留部分。它与IIS 6.0管理工具一起安装在IIS 7.X服务器上。这会导致两个衍生问题:

    IIS 7.X对SMTP服务一无所知。如果在ASP.NET中将SMTP配置为使用PickupDirectoryFromIis,则会导致异常因此您无法使用此SMTP配置

    <smtp deliveryMethod="PickupDirectoryFromIis" />
    
    <smtp deliveryMethod="SpecifiedPickupDirectory">
        <specifiedPickupDirectory pickupDirectoryLocation="C:\inetpub\mailroot\Pickup"  />
    </smtp>
    
    
    
    但是可以使用指定的ICKUPdirectory配置SMTP,您可以使用此配置:

    <smtp deliveryMethod="PickupDirectoryFromIis" />
    
    <smtp deliveryMethod="SpecifiedPickupDirectory">
        <specifiedPickupDirectory pickupDirectoryLocation="C:\inetpub\mailroot\Pickup"  />
    </smtp>
    
    
    

    如果以这种方式配置分拣目录,则可能会遇到第二类问题:IIS6和IIS7.X具有不同的安全系统。IIS 7.X引入了应用程序池标识的集成安全性。IIS 6.0及其SMTP服务不知道这一点。因此,您必须向分拣文件夹授予IIS_IUSR的写入权限。在我的配置中,拾取文件夹是C:\inetpub\mailroot\pickup。

    我注意到事件ID 4006引用的是域控制器ip而不是邮件服务器ip。
    我使用iis 6管理工具配置了一个指向邮件服务器的smarthost,瞧!问题已解决。

    已通过IIS 6管理工具的设置来配置SMTP访问,现在可以使用了-因此我想我们只需要在IIS 7管理工具中找到等效的内容。。。微软,一定要爱他们。不是。这不属于serverfault吗?啊,好吧,9个月前问过。。。有意义除此之外,您可能必须将应用程序池标识更改为NetworkService(通过高级设置)