我在让 SMTP 与我拥有的 ASP.NET 应用程序一起工作时遇到问题(我得到的错误是“无法获取 IIS 拾取目录”)。该应用程序使用分拣目录将邮件传递到 SMTP。
我已经知道导致错误的原因,这是访问 SMTP 设置的权限问题(请参阅此链接http://www.laptev.com/?p=3)。我为该应用程序使用了一个自定义 Windows 用户,该用户似乎没有访问 SMTP 设置的权限,当我使用 NetworkService 帐户时,一切正常,但是当我使用我的自定义用户时,我得到了错误。现在我试图找出 SMTP 设置在 Windows2008/IIS7 中的保存位置,以便为我的自定义用户提供所需的权限。
有几个解决方案。如果您在代码中明确设置拾取文件夹,则不需要从元数据库中获取它,您无需担心权限。如果您控制代码,这是最简单的解决方案。
但是,如果您有很多用户可能希望自动获取拾取文件夹,那么您需要授予额外权限。
由于公开对拾取文件夹路径属性的只读访问权限是安全的,因此简单的解决方案是授予 IIS_WPG 组访问权限。cscript Metaacl.vbs “IIS://localhost/SMTPsvc” IIS_WPG RE
要回答您关于它在哪里的问题,SMTP 没有移植到 IIS7 中的新系统。它仍然使用 c:\windows\system32\inetsrv\metabase.xml 中的旧配置数据库设置。您可以使用 IIS 6 管理器对其进行管理。
最后,在花了很多时间寻找解决方案之后,我遇到了这个论坛帖子: http ://forums.iis.net/t/1032876.aspx?PageIndex=1
我下载并安装了元数据库资源管理器工具(您必须下载 IIS6 资源工具包才能获得它),然后在 LS、SMTPSvc 和 SMTPSvc/1 键上向我的自定义用户(如其中一篇文章中所示)授予读取权限并且它工作!由于某些未知原因,如果您仅授予 smptSvc 密钥权限,则它不起作用。