网站最初的生命始于IIS 6,网站在那里运行良好。现在,在重新定位到运行W2K8S的新服务器之后,除了IIS 7之外,从网站发送邮件的所有内容现在都能正常运行。
在网上进行了简短的研究,看看是否有人有一个好的解决方案,但没有效果......甚至在微软自己的支持网站上都没有一丝希望。
以下是目前在新W2K8S盒子上采取的步骤:
在失败这些基本设置之后,我想确保我实际上可以从/向服务器端口25进行通信。并且我可以成功地从/向有问题的服务器远程登录到端口25上的测试电子邮件获取HELO等等。所以我不相信它是防火墙配置问题。
使用匿名和Windows身份验证执行IIS 7安装测试 - 无论如何都没有运气。
手动检查Web Config文件,它反映了服务器使用localhost的正确条目。
阅读手册,没有运气......: - /
答案 0 :(得分:2)
我遇到了同样的问题。
我遇到了这个链接http://www.frontpagewebmaster.com/m-215289/tm.htm
我能够解决这个问题。转到此链接的最后一篇文章。
在我的情况下,我通过将“NETWORK SERVICE”用户的权限授予“Pickup”文件夹来解决问题。
希望这可能会有所帮助......
答案 1 :(得分:1)
好的,对于说“给网络用户提供对拾取文件夹的写权限的帖子”它最终有效。我做的是:
除非您正在运行Exchange服务器,否则您需要使用“智能主机”。我使用的是Gmail帐户,Gmail允许SMTP转发。
您可以使用Windows身份验证来确保SMTP服务器和IIS7配置设置的安全性。
首先,在您的网页中设置交付方式= “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服务器。
第二步,一旦你有了这个工作,编写一个示例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服务器。
最后,通过在您的代答文件夹上设置共享以允许对NETWORK_SERVICE
的写入权限,让您的网页正常工作。将登录信息从步骤3传输到SMTP设置,将身份验证设置为集成安全性,并使用步骤4中的代码作为您的网页。
答案 2 :(得分:1)
我遇到了与旧问题中描述的完全相同的问题。最后我找到了解决方案。在我的情况下,操作系统是带有IIS 7.5的W2008 R2,但我认为这无关紧要。
根本问题是W2008 R2中的SMTP服务似乎是IIS的遗留部分。它与IIS 6.0管理工具一起安装,与IIS 7.X Server并排安装。这会导致两个派生的问题:
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。
答案 3 :(得分:1)
我注意到事件ID 4006引用了域控制器ip而不是邮件服务器ip。 我使用iis 6管理工具配置指向邮件服务器的智能主机,瞧!这个问题已经解决了。
答案 4 :(得分:0)
答案 5 :(得分:0)
您是否检查过SMTP服务是否接受来自localhost的中继邮件?为此,请从相关计算机telnet到本地SMTP服务器,并使用SMTP命令发送测试邮件。 SMTP服务对命令格式非常挑剔,因此在输入命令时必须小心(即不要使用退格键来纠正打字错误)。
答案 6 :(得分:0)
答案 7 :(得分:0)
我在研究在我的ASP.Net应用程序上运行SMTP时遇到了这个帖子,我们正在从IIS6迁移到IIS7。我发现我们根本没有设置SMTP服务器 - 只需设置SMTP电子邮件就足够了 - 还有一个好处就是没有SMTP通过Web服务器中继的安全问题!
因此,如果您不需要Web服务器实际执行SMTP路由,则不必在IIS7中设置服务器。