none
Client 以 SMTP 送信至 Exchange 時,有夾檔的信會 close 緩慢 RRS feed

  • 問題

  • 我環境中有三台 Exchange,第一台 Exchange 負責將郵件寄往 Internet,其他兩部收到要往 internet 的信件會轉送至第一台。三台 Exchange 分數三個不同辦公區 / ADSite。

    第三台 Exchange 是近日佈建,一佈建好,員工發現,當以 Outlook Express / Foxmail 這類傳統 POP3/SMTP 郵件軟體來對第三台 Exchange 送信時,信件含有 attachment file,該檔案越大,這個送信完成到最後 99% 會停住的時間就越久。信件如果沒有夾檔,只有簡單一些文字,那麼這個送信很快就會結束。

    舉個例來說,如果送一封夾檔 20MB 的信件,因為是在區域網路下,所以可以看到送信進度飛快的一下子就達到 99%,可是接下來就停住了,要等很久,才會關閉。信件有送成功,Exchange 上沒有錯誤訊息。

    但員工如果把 SMTP 指向第二台或第一台 Exchange,則送大檔到 99% 後可以立即完成。雖然送信的過程要跨慢速網路與其他 site 的 Exchange 連線,但可以送完後立即 close SMTP session。

    所有 Exchange 均為 2010 SP3。

    不知道有經驗的各位老師,有沒有這方面的經驗,有什麼可能的原因會造成這個現象呢?

    2014年12月24日 上午 03:08

解答

  • 如果將Site 2 的Client指定到Exchange 3是否會有一樣的問題?

    有的,任何 site 將 SMTP 指向到 Exchange 3 就會發生這個問題。

    不過,問題我自己解決掉了,根據 SMTP Receive 那個資料夾裡面的 log 我發現每次送完信時,會產生一個 Tarpit for '0.00:00:10.920' due to 'DelayedAck',Delivered 的記錄,會因為這個指令,延遲 close SMTP session。於是我上網查,然後在 Exchange Management Shell 裡面下這個指令:

    set-ReceiveConnector -Identity "MyExchangeName\Default MyExchangeName" -MaxAcknowledgementDelay 0

    這樣就解決我的問題了。

    而且我這才發現我之前的管理筆記也有提到這事兒,當初是因為外面某個公司送信來很容易發生 timeout 造成對方公司說送信失敗,就是這問題,所以我之前在 Exchange 1 & 2 上面都執行過這個了。事隔多年早就忘記此事。

    雖然問題解決了,但我想知道這個指令造成延遲 close 的目的在哪裡?


    • 已標示為解答 Johnson.Wang 2014年12月25日 上午 06:17
    2014年12月25日 上午 06:17
  • Hi Johnson.Wang

    當 Exchange 2010 傳輸伺服器從非 Exchange 2010 來源接收郵件時,Exchange 會嘗試在確認郵件在內部成功傳遞給所有下一個躍點前,延遲傳送伺服器的確認來達成陰影備援。因此,如果 Exchange 2010 伺服器失敗,傳送伺服器會假設郵件從未傳遞至Exchange,並且會再次嘗試傳遞。延遲的確認逾時值是由每個接收連接器的 MaxAcknowledgementDelay 屬性所控制。預設值為 30 秒。

    MaxAcknowledgementDelay 0

    就是停用接收連接器的延遲確認時間。


    請記得將對您有幫助的回覆"標示為解答"以幫助其他尋找解答及參與社群討論的朋友們。

    Please remember to click Mark as Answer on the post that helps you. This can be beneficial to other community members reading the thread.

    • 已標示為解答 Johnson.Wang 2014年12月26日 上午 06:17
    2014年12月25日 上午 06:48

所有回覆

  • Hi Johnson.Wang

    您的有問題Exchange Server是哪個版本的CU?

    如果將Site 2 的Client指定到Exchange 3是否會有一樣的問題?

    使用Outlook或是Windows Live Mail做寄信動作是否會有一樣的問題?


    請記得將對您有幫助的回覆"標示為解答"以幫助其他尋找解答及參與社群討論的朋友們。

    Please remember to click Mark as Answer on the post that helps you. This can be beneficial to other community members reading the thread.

    2014年12月25日 上午 04:53
  • 如果將Site 2 的Client指定到Exchange 3是否會有一樣的問題?

    有的,任何 site 將 SMTP 指向到 Exchange 3 就會發生這個問題。

    不過,問題我自己解決掉了,根據 SMTP Receive 那個資料夾裡面的 log 我發現每次送完信時,會產生一個 Tarpit for '0.00:00:10.920' due to 'DelayedAck',Delivered 的記錄,會因為這個指令,延遲 close SMTP session。於是我上網查,然後在 Exchange Management Shell 裡面下這個指令:

    set-ReceiveConnector -Identity "MyExchangeName\Default MyExchangeName" -MaxAcknowledgementDelay 0

    這樣就解決我的問題了。

    而且我這才發現我之前的管理筆記也有提到這事兒,當初是因為外面某個公司送信來很容易發生 timeout 造成對方公司說送信失敗,就是這問題,所以我之前在 Exchange 1 & 2 上面都執行過這個了。事隔多年早就忘記此事。

    雖然問題解決了,但我想知道這個指令造成延遲 close 的目的在哪裡?


    • 已標示為解答 Johnson.Wang 2014年12月25日 上午 06:17
    2014年12月25日 上午 06:17
  • Hi Johnson.Wang

    當 Exchange 2010 傳輸伺服器從非 Exchange 2010 來源接收郵件時,Exchange 會嘗試在確認郵件在內部成功傳遞給所有下一個躍點前,延遲傳送伺服器的確認來達成陰影備援。因此,如果 Exchange 2010 伺服器失敗,傳送伺服器會假設郵件從未傳遞至Exchange,並且會再次嘗試傳遞。延遲的確認逾時值是由每個接收連接器的 MaxAcknowledgementDelay 屬性所控制。預設值為 30 秒。

    MaxAcknowledgementDelay 0

    就是停用接收連接器的延遲確認時間。


    請記得將對您有幫助的回覆"標示為解答"以幫助其他尋找解答及參與社群討論的朋友們。

    Please remember to click Mark as Answer on the post that helps you. This can be beneficial to other community members reading the thread.

    • 已標示為解答 Johnson.Wang 2014年12月26日 上午 06:17
    2014年12月25日 上午 06:48