最近一個朋友反映,他們公司在和歐洲某公司的郵件通信過程,收到用戶的投訴說:對方發過來的郵件,有時會有一兩封收不到,但發送測試郵件,回覆都沒有問題!通過進一步瞭解,發過去的郵件,沒有反映收不到,只是對方發過來的郵件,有時會收不到,但不是常常,只是偶爾發生!好吧,做爲IT人員,最怕的就是偶發問題,沒法重現故障,沒法找到有價值的證據去排錯!還好,在雙方的共同努力下,最後也找到緣由,調整相關參數,問題解決,下面將排錯方法和過程分享給你們!服務器
針對這個問題,首先讓對方提供更有價值的信息,好比說:最近一次沒收到的郵件,是誰、何時,發給誰的!還好,對方提供了歐洲某公司發過來的截圖,有具體的發件人、收件人、發送時間,這下就好辦了,立刻查看SMTP LOG!固然,前提是你有開啓詳細的SMTP LOG記錄(默認是沒有開啓的,條件允可的狀況下,建議開啓詳細的SMTP LOG ,方便排錯),以下:網絡
首先經過對方提供的郵件地址,查詢到對方的SMTP 會話IP爲:213.150.22X.XXX,通過IP地位,此IP確實來自歐洲的奧地利:ide
在SMTP LOG中在查找此IP,發現確實有不少這個IP發過來的郵件,並且大多都是成功的!在反覆過濾、查詢後,終於LOG中發現了」Timed out「,這正是用戶反應的問題,以下圖:測試
從時間上分析,timed out爲16:02:05,而SMTP會話開始時間爲:15:52:01,即:大約10分鐘後,出現Timed out!查看Exchange對應的SMTP參數:blog
Get-ReceiveConnector -Identity "Mail\Default SMTP" |FLip
發現ConnectionTimeout 限制確實爲10分鐘!因此,問題找到,即:雙方服務器在經過SMTP傳送郵件的過程當中,因爲網絡問題,或是郵件大小問題,超過SMTP鏈接限制的時間,致使郵件接受失敗!get
既然找到問題,就嘗試修改限制時間來解決!參考下面的PowerShell:it
https://technet.microsoft.com/en-us/library/bb125140.aspx?f=255&MSPPError=-2147217396io
考慮到中國大陸到歐洲的網絡問題,先將此參數調整爲30分鐘:class
Set-ReceiveConnector -Identity "Mail\Default SMTP" -connectionTimeout 00:30:00
重啓Microsoft Exchange Transport服務。
通過調整後,再觀察幾天,對方沒有再反映此問題了!爲了驗證調整是否有效,分析調整後次日的SMTP LOG,發現以下信息:
一樣是上一次郵件地址和郵件服務器IP過來的SMTP會話,從8:34:57開始,到8:50:45結束,此SMTP Connection 會話持續了15分鐘!證實上面的調整是正確、有效!
至於SMTP的ConnectionTimeout時間限制爲多少合適呢?這個官方既然默認是10分鐘,因此咱們儘可能仍是以官方的爲準,若是碰到這樣的問題,建議一次不要調過高,要依你的網絡質量、限制的郵件大小來調整,如此案例:郵件,大約5M,用時15分鐘左右才完成,而郵件大小限制爲10M,因此,相應的調整爲30-40分鐘,是合理的範圍。