16

网站最初是在 IIS 6 下开始的,并且该网站在那里运行良好。现在,在重新定位到运行 W2K8S 的新服务器后,除了从网站发送邮件之外的所有内容现在都可以在 IIS 7 下正常运行。

在网上进行了简短的研究,看看是否有人有好的解决方案,但无济于事......甚至在微软自己的支持网站上没有一丝希望。

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

  • 在服务器管理器下添加了 SMTP 功能
  • 在 IIS 7 管理器中为站点本身启用 SMTP 电子邮件以将电子邮件传递到 SMTP 服务器本地主机,但不成功
  • 为 IIS 7 管理器中的根站点启用 SMTP 电子邮件(不确定是否需要启用站点)以将电子邮件传递到 SMTP 服务器本地主机,不成功

在这些基本设置失败后,我想确保我实际上可以在端口 25 上与服务器通信。并且我可以成功地从/到有问题的服务器远程登录到端口 25 上的测试电子邮件获得 HELO 等。所以我不认为这是防火墙配置问题。

IIS 7 设置测试是通过匿名和 Windows 身份验证执行的——无论哪种方式都没有运气。

手动检查 Web Config 文件,它反映了服务器使用 localhost 的正确条目。

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

4

8 回答 8

2

我遇到了同样的问题。

我遇到了这个链接http://www.frontpagewebmaster.com/m-215289/tm.htm

我能够解决这个问题。转到此链接的最后一篇文章。

就我而言,我通过授予“网络服务”用户对“皮卡”文件夹的权限来解决问题。

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

于 2009-01-13T08:16:47.180 回答
1

我遇到了与这个旧问题中描述的完全相同的问题。最后我找到了解决办法。就我而言,操作系统是带有 IIS 7.5 的 W2008 R2,但我认为这无关紧要。

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

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

<smtp deliveryMethod="PickupDirectoryFromIis" />

但是可以使用 SpecifiedPickupDirectory 配置 SMTP,您可以使用此配置

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

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

于 2013-01-04T16:55:06.340 回答
1

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

  1. 除非您正在运行 Exchange 服务器,否则您需要使用“智能主机” 。我使用的是 Gmail 帐户,Gmail 允许 SMTP 转发。

  2. 您可以在 SMTP 服务器和 IIS7 配置设置上使用 Windows 身份验证来确保安全。

  3. 第一步,在您的网页中设置传送方式= “网络” ,并让您的智能主机独立于 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 服务器。

  4. 第二步,一旦你有了这个工作,编写一个示例 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 服务器配置正确。

  5. 最后,通过在您的拾取文件夹上设置共享以允许对NETWORK_SERVICE. 将步骤 3 中的登录信息传输到您的 SMTP 设置中,将身份验证设置为集成安全,然后将步骤 4 中的代码用于您的网页。

于 2011-03-24T03:58:44.350 回答
1

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

于 2013-01-16T11:52:16.490 回答
0

I came across this post when researching getting SMTP running on my ASP.Net app we're migrating from IIS6 to IIS7. What I found was we didn't have to set up the SMTP SERVER at all - simply setting up SMTP Email was enough - with the additional benefit of NOT having the security concerns of SMTP relaying thru the web server!

so if you don't need your web server to actually do the SMTP routing, you don't have to set up the server at all in IIS7.

于 2009-08-13T17:03:22.440 回答
0

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

如果是这样,也许这些链接之一会有所帮助?

编辑:我在注意到原始帖子上的注释之前已经回复了。漠视...

于 2009-04-14T04:19:42.797 回答
0

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

http://www.iis.net/downloads/default.aspx?tabid=34&g=6&i=1308

此工具适用于 x86。

于 2008-10-26T02:49:07.910 回答
0

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

于 2009-03-31T00:50:15.647 回答