最近有customer說收不到我們系統發的email,查了一段時間,總算有所收獲,對SMTP也有了些許了解。
一開始以為是我們郵件服務器IP被blacklist了或對方把我們的IP給禁了。于是就試了下用telnet SMTP測試下:
telnet #customer.domain.com# 25
EHCO sdfa
MAIL FROM: <from@xxx.com>
RCPT TO: <to@xxxxxx.com>
DATA
.
QUIT
結果測試我們是可以telnet到對方的SMTP server的,這樣發是可以發送成功的,即排除了對方把我們禁了的可能。可如果telnet到我們自己的SMTP server的話,就失敗了。
telnet #own.domain.com# 25
...
后來查了很久,原來是因為timeout的原因:我們用的IMSS gateway有timeout機制。查Log發現,連接對方SMTP SERVER無問題,MAIL FROM command也無問題,可就在RCPT TO 這個command超時了,超過30s都沒有response從對方SMTP SERVER回來,估計對方的SMTP SERVER不怎么好,parse和查找個email address (end user: to@xxxx.com)都要花很長時間。后來我們就timeout的參數,從30s調到60s,果然就可以了,估計對方SMTP server之行RCPT TO這個命令都花了30-40s。
問題解決
一開始以為是我們郵件服務器IP被blacklist了或對方把我們的IP給禁了。于是就試了下用telnet SMTP測試下:
telnet #customer.domain.com# 25
EHCO sdfa
MAIL FROM: <from@xxx.com>
RCPT TO: <to@xxxxxx.com>
DATA
.
QUIT
結果測試我們是可以telnet到對方的SMTP server的,這樣發是可以發送成功的,即排除了對方把我們禁了的可能。可如果telnet到我們自己的SMTP server的話,就失敗了。
telnet #own.domain.com# 25
...
后來查了很久,原來是因為timeout的原因:我們用的IMSS gateway有timeout機制。查Log發現,連接對方SMTP SERVER無問題,MAIL FROM command也無問題,可就在RCPT TO 這個command超時了,超過30s都沒有response從對方SMTP SERVER回來,估計對方的SMTP SERVER不怎么好,parse和查找個email address (end user: to@xxxx.com)都要花很長時間。后來我們就timeout的參數,從30s調到60s,果然就可以了,估計對方SMTP server之行RCPT TO這個命令都花了30-40s。
問題解決