| 導購 | 订阅 | 在线投稿
分享
 
 
 

如何編寫SMTP郵件服務器

來源:互聯網網民  2006-12-17 07:34:35  評論

如何編寫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郵件服務器   許多時候,我想不通爲什麽不能直接將信件送到對方(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
󰈣󰈤
王朝萬家燈火計劃
期待原創作者加盟
 
 
 
>>返回首頁<<
 
 
 
 
 
 熱帖排行
 
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有