2008-10-22 182 views
16

网站最初在IIS 6下开始生活,该网站在那里工作得很好。现在,在迁移到运行W2K8S的新服务器后,除IIS 7以外的所有邮件都可以通过邮件发送。在Windows Server 2008上的IIS 7下设置SMTP

在Web上简单研究,看看是否有人有很好的分辨率,但无济于事微软自己的支持网站带来了一丝希望。

下面是迄今所采取的新W2K8S中的步骤操作:

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

经过这些基本设置失败后,我想确定实际上我可以从/到服务器端口25进行通话。而且,我可以成功地从/到有问题的服务器telnet到端口25上的测试电子邮件,获取HELO,等等。所以我不相信这是一个防火墙配置问题。

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

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

阅读手册,并没有运气要么...: -/

+0

通过IIS 6管理工具的设置来配置SMTP访问,它现在可以工作 - 所以我想我们只需要在IIS 7管理工具中找到相同的东西......微软,得'爱'他们。 不是。 – user30432 2008-10-22 17:04:54

+2

这不属于serverfault吗? – 2009-08-13 17:05:23

回答

2

我面临同样的问题。

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

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

在我的情况下,我通过将“NETWORK SERVICE”用户权限授予“Pickup”文件夹来解决问题。

希望这可以帮助....

0

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

0

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

如果是这样,也许these links之一会有帮助吗?

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

0

我在研究让SMTP运行在我的ASP.Net应用程序上时遇到了这篇文章,我们从IIS6迁移到IIS7。我发现的是,我们根本不必设置SMTP服务器 - 只需设置SMTP电子邮件就足够了 - 还有另一个好处,就是不需要担心SMTP通过Web服务器进行中继。

因此,如果您不需要您的Web服务器来实际执行SMTP路由,则不必在IIS7中设置服务器。

1

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

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

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

  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("[email protected]", "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中将您的网页用于代码。

1

我和这个老问题中所描述的问题完全一样。最后我找到了解决办法。在我的情况下,操作系统是带有IIS 7.5的W2008 R2,但我认为这并不重要。

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

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的写入权限授予拾取文件夹。在我的配置中,pickup文件夹是C:\ inetpub \ mailroot \ pickup。

1

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

相关问题