Windows-Server-2003
這個 SMTP 錯誤會是開發人員的錯嗎?
我收到一條從網站返回給我的錯誤消息,這似乎是伺服器端的問題。但是,此伺服器適用於盒子上的所有其他站點。我(開發人員)是否有可能做錯了什麼?我不知道從哪裡開始在伺服器上跟踪這個問題,我的系統管理員說一切正常:
The following recipient(s) cannot be reached: Customer Service Account on 6/3/2009 11:00 AM There was a SMTP communication problem with the recipient's email server. Please contact your system administrator. <fgdc.myservername.net #5.5.0 smtp;550 Requested action not taken: mailbox unavailable>
伺服器是 2003、64 位並執行 Exchange 2003
站點是 Asp.Net C#,使用 URL 路由
我從哪裡開始解決這個問題?
更新
事實證明,我的系統管理員將問題追溯到垃圾郵件保護層。事實證明 MIMESweeper 可能正在丟棄消息,因為它看到來自我們的網路伺服器場的消息試圖發送帶有內部地址的電子郵件。我們測試了外部地址(gmail、hotmail 等),效果很好。
感謝所有的答案。事實證明,從我的角度來看,最好的答案是“與您的系統管理員交談”……但我想我會為任何有類似問題的人更新這個問題。
那就是伺服器說您指定為“RCPT TO:”的人無效。
我建議您使用 Wireshark 之類的工具來擷取程式碼和伺服器之間的 SMTP 對話,並驗證您發送的內容是否符合您的預期。總是很高興看到線路上發生的事情,看看它是否與您的程式碼所說的應該發生的事情相吻合。
如果您指定了正確的收件人,請聯繫伺服器管理員並讓他們檢查。
當然,這可能是開發商的錯。例如,規範說 RCPT 應該是這樣的:
RCPT TO:<user@example.com>
但是,實際發送這個是非常常見的做法:
RCPT TO: user@example.com
大多數功能齊全、成熟的 MTA 都接受後者,即使它並不完全正確。一些應用程序(如郵件防火牆、CRM 郵件捕捉器等)會對此嚴格要求並返回錯誤。
我並不是說這是這種情況下的原因,但它是您的程式碼如何與大多數伺服器一起工作的一個範例,但如果它在一小部分伺服器上中斷仍然是您的錯。
我贊同 Evan 的建議,即嗅探流量並了解實際發送的內容。