如何編寫SMTP郵件服務器

如何編寫SMTP郵件服務器

如何編寫SMTP郵件服務器 如何編寫SMTP郵件服務器

許多時候,我想不通爲什麽不能直接將信件送到對方(POP或IMAP)服務器上,爲什麽非要通過一個莫名其妙的SMTP郵件服務器轉交一次,實在不服氣,如果使用UNIX,這個問題就很好解決,用sendmail就能完成遞送任務,但在Windows下呢?同樣的,一定也有辦法饒開SMTP Server直接遞送到對方的遠程郵局服務器上,難得住別人,難得住我們程序員嗎?分析相關協議(RFC2645,RFC821, RFC1846,RFC1939,RFC1725,RFC1730-RFC1733 etc.),我們會知道要完成直接遞送其實相當簡單。

首先我們看一下Email的遞送過程:Email(Encode) -> a SMTP Relay Server -> Remote SMTP Server(遠程郵局)。非常簡單,郵件編碼後被遞送到一個SMTP轉交服務器上,該服務器對信件分檢(到同一郵局的被放在一起)後,根據優先級以及信件的先後次序被發送到遠程郵局的SMTP服務器上。換句話說,只要我們知道了SMTP轉交服務器是如何確定遠程郵局SMTP服務器的地址的,就可以輕松地將饒開SMTP Relay Server直接遞送到遠程郵局服務器。

SMTP Relay Server是如何確定遠程郵局服務器的地址的呢?如果你熟悉域名解析,就知道是怎麽回事了,我們知道電子郵件的地址由兩部分構成postbox@address.com,郵箱(postbox)和地址(address.com),給域名服務器發送指令查詢「address.com」的遠程郵局服務器的地址即可找到遠程郵局SMTP服務器的IP 地址,該指令查詢是被稱作MX(Mail Exchange)郵件交換服務器的地址查詢。遠程郵局SMTP服務器的地址可能不止一個,這時,你可根據信件優先級的不同,將對應優先級的信件發到對應地址的遠程郵局SMTP服務器,當然,你也可以不管三七二十一,隨便選一個SMTP服務器發送,見後附「域名解析結果樣例」。簡單吧。這下,自己編寫一個SMTP Server不難了吧!

問題:頭ID是個麻煩的事,有時會産生Invalid Head ID 5811的錯誤。

附:域名解析結果樣例

Answer List

Resource name is : sina.com

Type is : MX Class is : IN

MX Priority : 10 MX Server : mailcn.sina.com

Resource name is : sina.com

Type is : MX Class is : IN

MX Priority : 15 MX Server : mail.sina.com.cn

Authority List

Resource name is : sina.com

Type is : NS Class is : IN

Domain name is : resolver.sina.com

Resource name is : sina.com

Type is : NS Class is : IN

Domain name is : ns2.sina.com

Additional Response List

Resource name is : mailcn.sina.com

Type is : A Class is : IN

IP Address is : 202.106.184.233

Resource name is : mail.sina.com.cn

Type is : A Class is : IN

IP Address is : 202.106.187.150

Resource name is : resolver.sina.com

Type is : A Class is : IN

IP Address is : 206.204.114.135

Resource name is : ns2.sina.com

Type is : A Class is : IN

IP Address is : 209.133.24.135

 
如何編寫SMTP郵件服務器
如何編寫SMTP郵件服務器 如何編寫SMTP郵件服務器 如何編寫SMTP郵件服務器   許多時候,我想不通爲什麽不能直接將信件送到對方(POP或IMAP)服務器上,爲什麽非要通過一個莫名其妙的SMTP郵件服務器轉交一次,...查看完整版>>如何編寫SMTP郵件服務器
 
如何編寫SMTP郵件服務器
如何編寫SMTP郵件服務器   許多時候,我想不通爲什麽不能直接將信件送到對方(POP或IMAP)服務器上,爲什麽非要通過一個莫名其妙的SMTP郵件服務器轉交一次,實在不服氣,如果使用UNIX,這個問題就很好解決,用sendma...查看完整版>>如何編寫SMTP郵件服務器
 
如何防止郵件服務器被濫用
郵件服務器在Internet上扮演著一個非常重要的角色。SMTP(簡單郵件傳輸協議)是Internet上計算機之間傳送電子郵件所普遍采用的協議,Sendmail是構成郵件服務器的Unix系統中使用極爲廣泛的一種郵件傳輸代理程序,它遵...查看完整版>>如何防止郵件服務器被濫用
 
如何管理NETSCAPE 郵件服務器
如何管理NETSCAPE 郵件服務器
對NETSCAPE MESSAGING SERVER郵件服務器來說,日常管理的核心內容主要包括兩部分,即用戶登錄信息的管理和用戶信箱的管理,前者一般是通過目錄服務器-NETSCAPE DIRECTORY SERVER實現的,操作比較簡單,後者相對複雜一...查看完整版>>如何管理NETSCAPE 郵件服務器
 
如何監測郵件服務器
  一、 前言  隨著各大網站紛紛推出郵箱收費服務,廣大網民正在逐漸適應 "有償服務"的概念,與此同時,他們也對收費郵箱的服務質量提出更高的要求。面對廣大網民關心的郵箱服務質量問題,遊龍科技攜手天極Chinab...查看完整版>>如何監測郵件服務器