2008-10-22 188 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管理工具來配置指向郵件服務器的智能主機,並且瞧!問題解決了。

相關問題