為防止垃圾郵件制造者利用郵件服務器進行垃圾郵件的轉發,目前的郵件服務器都啟用了郵件用戶發郵件時的身份驗證功能,即發件用戶必須在郵件客戶端的“服務器要求身份驗證”處輸入發件人用戶名和密碼,以便發件時郵件服務器對發件人進行身份驗證。
某公司的郵件服務器在Cisco的PIX 520防火墻后面,用的是私有IP(假設為192.168.0.1),通過在防火墻上做NAT映射到公網,在公網用的是公網IP(假設為202.96.56.68),在內網收發郵件都正常,但是在公網不能發信,報錯如下:
SMTP, 服務器響應: '553 You are not authorized to send mail as <mail from:xmgl@aaa.com.cn>, authentication is required', 端口: 25, 安全(SSL): 否, 服務器錯誤: 553, 錯誤號: 0x800CCC78
為什么內網能發而公網不行呢?從報錯信息可以看出是郵件服務器認為發件人的郵件未通過身份驗證。我們知道通常郵件服務器在發郵件時用的是SMTP協議。SMTP(Simple Mail Transfer Protocol)即簡單郵件傳輸協議,它由一組用于從源地址到目的地址傳送郵件的規則組成,由它來控制信件的中轉方式。SMTP協議屬于TCP/IP協議族,它幫助每臺計算機在發送或中轉信件時找到下一個目的地。通過在郵件客戶端SMTP協議所指定的服務器,我們就可以把E-mail寄到收信人的服務器上了。
為了更有效地抑制垃圾郵件的泛濫,許多E-Mail服務商和ISP升級了他們的SMTP系統,即使用ESMTP的方式來做E-mail發送服務。ESMTP,英文全稱是“Extended SMTP”,顧名思義,就是對標準SMTP協議進行的擴展。而“發件驗證”功能就是承載于ESMTP上的。
出問題的公司的郵件發送系統同樣也采用了ESMTP,ESMTP和SMTP一樣都使用25端口。為了進一步驗證故障原因,我們分別從內網和防火墻外面的公網telnet郵件服務器的25端口信息如下:
在內網telnet的結果
telnet 192.168.0.1 25 220 aaa.com.cn ESMTP Postfix |
在防火墻外面telnet的結果
telnet 202.96.56.68 25 220 *************** |
除了*****就什么都沒有顯示
從結果可以看出在公網發信用戶的身份認證信息不能穿透防火墻。于是我們檢查防火墻上的關于郵件系統的配置信息,信息如下:
fixup protocol smtp 25 conduit permit tcp host 202.96.56.68 eq pop3 any conduit permit tcp host 202.96.56.68 eq smtp any
|